Pour toutes les distributions Linux, le script shell est comme une baguette magique qui automatise le processus, fait gagner du temps aux utilisateurs et augmente la productivité. Ce didacticiel sur les scripts doit vous présenter plus de 25 exemples de scripts.
Mais avant de passer au sujet de script shell exemples, comprenons le script shell et les cas d’utilisation réels des scripts shell.
Qu’est-ce que le script Shell ?
Eh bien, la coquille est un CLI ( interpréteur de ligne de commande ), qui s'exécute dans une fenêtre de texte dans laquelle les utilisateurs peuvent gérer et exécuter des commandes shell. D'autre part, le processus d'écriture d'un ensemble de commandes à exécuter sur un système Linux. Un fichier contenant de telles instructions est appelé un script bash.
Utilisations des scripts Shell
Vous trouverez ci-dessous quelques utilisations courantes de Shell Script :
- Automatisation des tâches – Il peut être utilisé pour automatiser des tâches répétitives telles que des sauvegardes régulières et des tâches d'installation de logiciels.
- Personnalisation – On peut utiliser des scripts shell pour concevoir son environnement de ligne de commande et effectuer facilement sa tâche selon les besoins.
- Gestion de fichiers - Les scripts shell peuvent également être utilisés pour gérer et manipuler des fichiers et des répertoires, comme déplacer, copier, renommer ou supprimer des fichiers.
Exemples de scripts Shell sous Linux
1) Qu'indique le shebang (#!) au début d'un script shell ?
Le shebang (#!) au début d'un script indique l'interpréteur qui doit être utilisé pour exécuter le script. Il indique au système quel shell ou interpréteur doit interpréter les commandes du script.
Par exemple: Supposons que nous ayons un script nommé monscript.sh écrit dans le shell Bash :
exemple de liste en java

case
Dans cet exemple :
- Le #!/bin/bash au début du script indique que le script doit être interprété à l'aide du shell Bash.
- Les commandes echo sont utilisées pour imprimer des messages sur le terminal.
2) Comment exécuter un script shell à partir de la ligne de commande ?
Pour exécuter un script shell à partir de la ligne de commande, nous devons suivre ces étapes :
- Assurez-vous que le fichier de script dispose des autorisations exécutables à l'aide du commande chmod :
chmod +x myscript.sh>
- Exécutez le script en utilisant son nom de fichier :
./myscript.sh>
Ici, vous devez remplacer monscript.sh avec votre nom de script.
3) Écrivez un script shell qui imprime techcodeview.com sur le terminal.
Créez un nom de script `myscript.sh` (nous utilisons ` parce que ` éditeur, vous pouvez choisir n'importe quel éditeur)
vim myscript.sh>
#!/bin/bash
# Ce script imprime techcodeview.com sur le terminal
écho techcodeview.com

imprimer le nom
Nous rendons notre script exécutable en utilisant `chmod +x` puis nous l'exécutons avec `./myscipt.sh` et obtenons la sortie souhaitée techcodeview.com.
4) Expliquez le but de la commande echo dans les scripts shell.
Le commande d'écho est utilisé pour afficher du texte ou des variables sur le terminal. Il est couramment utilisé pour imprimer des messages, des valeurs de variables et générer une sortie de programme.

commande d'écho
Dans cet exemple, nous devons exécuter `echo` directement sur le terminal, car cela fonctionne de la même manière dans le script shell.
5) Comment attribuer une valeur à une variable dans un script shell ?
Les variables reçoivent des valeurs à l'aide de l'opérateur d'affectation =.
Par exemple:
#!/bin/bash
# Attribuer une valeur à une variable
nom = Jayesh
âge=21
echo $nom $age
Explication:
- La variable de nom reçoit la valeur Jayesh.
- La variable âge reçoit la valeur 21.
- echo est utilisé pour imprimer et `$name` `$age` est utilisé pour appeler la valeur stockée dans les variables.
6) Écrivez un script shell qui prend le nom d'un utilisateur en entrée et le salue.
Créez un nom de script « exemple.sh ».
#!/bin/bash
# Demander à l'utilisateur son nom
écho Quel est ton nom ?
lire le nom
# Saluer l'utilisateur
echo Bonjour, $name ! Ravi de vous rencontrer.
Explication:
- #!/bin/bash : C'est la ligne shebang. Il indique au système d'utiliser l'interpréteur Bash pour exécuter le script.
- # Demander à l'utilisateur son nom : Ceci est un commentaire. Il fournit un contexte sur le code à venir. Les commentaires sont ignorés par l'interprète.
- echo Quel est ton nom ? : La commande echo permet d'afficher le texte entre guillemets doubles sur le terminal.
- read name : la commande read attend que l'utilisateur saisisse du texte et le stocke dans le nom de la variable.
- echo Bonjour, $name ! Ravi de vous rencontrer. : Cette ligne utilise la commande echo pour imprimer un message de bienvenue qui inclut la valeur de la variable name, qui a été collectée à partir de l'entrée de l'utilisateur.
7) Comment ajouter des commentaires à un script shell ?
Commentaires dans les scripts shell sont utilisés pour fournir des explications ou un contexte au code. Ils sont ignorés par l’interprète et ne sont destinés qu’aux humains lisant le script. Vous pouvez ajouter des commentaires en utilisant le symbole #.
#!/bin/bash
# Ceci est un commentaire expliquant le but du script
écho gfg
8) Créez un script shell qui vérifie si un fichier existe dans le répertoire actuel.
Voici un script qui vérifie si un fichier nommé exemple.txt existe dans le répertoire courant :
#!/bin/bash
fichier=exemple.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
echo Le fichier existe : $file
autre
echo Fichier introuvable : $file
être
Explication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=example.txt : Cette ligne définit le fichier de variables et lui attribue la valeur example.txt. Vous pouvez le remplacer par le nom du fichier que vous souhaitez rechercher.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. La condition [ -e $file ] vérifie si le fichier spécifié par la valeur de la variable file existe. L'indicateur -e est utilisé pour vérifier l'existence du fichier.
- echo Le fichier existe : $file : Si la condition est vraie (c'est-à-dire que le fichier existe), cette ligne imprime un message indiquant que le fichier existe, ainsi que le nom du fichier.
- else : si la condition est fausse (c'est-à-dire que le fichier n'existe pas), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé, ainsi que le nom du fichier.
- fi : Cette ligne marque la fin de l'instruction if.

Recherche de fichier
9) Quelle est la différence entre les guillemets simples (') et les guillemets doubles () dans les scripts shell ?
Les guillemets simples (') et les guillemets doubles () sont utilisés pour délimiter des chaînes dans les scripts shell, mais ils ont des comportements différents :
- Guillemets simples : tout ce qui se trouve entre guillemets simples est traité comme une chaîne littérale. Les noms de variables et la plupart des caractères spéciaux ne sont pas développés.
- Guillemets doubles : les variables et certains caractères spéciaux entre guillemets doubles sont développés. Le contenu est soumis à la substitution de variables et à la substitution de commandes.
#!/bin/bash
abcd=Bonjour
echo '$abcd' # Sortie : $abcd
echo $abcd # Sortie : Bonjour
10) Comment utiliser les arguments de ligne de commande dans un script shell ?
Arguments de ligne de commande sont des valeurs fournies à un script lors de son exécution. Ils sont accessibles dans le script à l'aide de variables spéciales telles que , , etc., où représente le premier argument, représente le deuxième argument, et ainsi de suite.
Par exemple: Si le nom de notre script dans `example.sh`
#!/bin/bash
echo Nom du script :
Pour toutes les distributions Linux, le script shell est comme une baguette magique qui automatise le processus, fait gagner du temps aux utilisateurs et augmente la productivité. Ce didacticiel sur les scripts doit vous présenter plus de 25 exemples de scripts.
Mais avant de passer au sujet de script shell exemples, comprenons le script shell et les cas d’utilisation réels des scripts shell.
Qu’est-ce que le script Shell ?
Eh bien, la coquille est un CLI ( interpréteur de ligne de commande ), qui s'exécute dans une fenêtre de texte dans laquelle les utilisateurs peuvent gérer et exécuter des commandes shell. D'autre part, le processus d'écriture d'un ensemble de commandes à exécuter sur un système Linux. Un fichier contenant de telles instructions est appelé un script bash.
Utilisations des scripts Shell
Vous trouverez ci-dessous quelques utilisations courantes de Shell Script :
- Automatisation des tâches – Il peut être utilisé pour automatiser des tâches répétitives telles que des sauvegardes régulières et des tâches d'installation de logiciels.
- Personnalisation – On peut utiliser des scripts shell pour concevoir son environnement de ligne de commande et effectuer facilement sa tâche selon les besoins.
- Gestion de fichiers - Les scripts shell peuvent également être utilisés pour gérer et manipuler des fichiers et des répertoires, comme déplacer, copier, renommer ou supprimer des fichiers.
Exemples de scripts Shell sous Linux
1) Qu'indique le shebang (#!) au début d'un script shell ?
Le shebang (#!) au début d'un script indique l'interpréteur qui doit être utilisé pour exécuter le script. Il indique au système quel shell ou interpréteur doit interpréter les commandes du script.
Par exemple: Supposons que nous ayons un script nommé monscript.sh écrit dans le shell Bash :
case
Dans cet exemple :
- Le #!/bin/bash au début du script indique que le script doit être interprété à l'aide du shell Bash.
- Les commandes echo sont utilisées pour imprimer des messages sur le terminal.
2) Comment exécuter un script shell à partir de la ligne de commande ?
Pour exécuter un script shell à partir de la ligne de commande, nous devons suivre ces étapes :
- Assurez-vous que le fichier de script dispose des autorisations exécutables à l'aide du commande chmod :
chmod +x myscript.sh>
- Exécutez le script en utilisant son nom de fichier :
./myscript.sh>Ici, vous devez remplacer monscript.sh avec votre nom de script.
3) Écrivez un script shell qui imprime techcodeview.com sur le terminal.
Créez un nom de script `myscript.sh` (nous utilisons ` parce que ` éditeur, vous pouvez choisir n'importe quel éditeur)
vim myscript.sh>#!/bin/bash
# Ce script imprime techcodeview.com sur le terminal
écho techcodeview.comimprimer le nom
Nous rendons notre script exécutable en utilisant `chmod +x` puis nous l'exécutons avec `./myscipt.sh` et obtenons la sortie souhaitée techcodeview.com.
4) Expliquez le but de la commande echo dans les scripts shell.
Le commande d'écho est utilisé pour afficher du texte ou des variables sur le terminal. Il est couramment utilisé pour imprimer des messages, des valeurs de variables et générer une sortie de programme.
commande d'écho
Dans cet exemple, nous devons exécuter `echo` directement sur le terminal, car cela fonctionne de la même manière dans le script shell.
5) Comment attribuer une valeur à une variable dans un script shell ?
Les variables reçoivent des valeurs à l'aide de l'opérateur d'affectation =.
Par exemple:
#!/bin/bash
# Attribuer une valeur à une variable
nom = Jayesh
âge=21
echo $nom $ageExplication:
- La variable de nom reçoit la valeur Jayesh.
- La variable âge reçoit la valeur 21.
- echo est utilisé pour imprimer et `$name` `$age` est utilisé pour appeler la valeur stockée dans les variables.
6) Écrivez un script shell qui prend le nom d'un utilisateur en entrée et le salue.
Créez un nom de script « exemple.sh ».
#!/bin/bash
# Demander à l'utilisateur son nom
écho Quel est ton nom ?
lire le nom
# Saluer l'utilisateur
echo Bonjour, $name ! Ravi de vous rencontrer.Explication:
- #!/bin/bash : C'est la ligne shebang. Il indique au système d'utiliser l'interpréteur Bash pour exécuter le script.
- # Demander à l'utilisateur son nom : Ceci est un commentaire. Il fournit un contexte sur le code à venir. Les commentaires sont ignorés par l'interprète.
- echo Quel est ton nom ? : La commande echo permet d'afficher le texte entre guillemets doubles sur le terminal.
- read name : la commande read attend que l'utilisateur saisisse du texte et le stocke dans le nom de la variable.
- echo Bonjour, $name ! Ravi de vous rencontrer. : Cette ligne utilise la commande echo pour imprimer un message de bienvenue qui inclut la valeur de la variable name, qui a été collectée à partir de l'entrée de l'utilisateur.
7) Comment ajouter des commentaires à un script shell ?
Commentaires dans les scripts shell sont utilisés pour fournir des explications ou un contexte au code. Ils sont ignorés par l’interprète et ne sont destinés qu’aux humains lisant le script. Vous pouvez ajouter des commentaires en utilisant le symbole #.
#!/bin/bash
# Ceci est un commentaire expliquant le but du script
écho gfg8) Créez un script shell qui vérifie si un fichier existe dans le répertoire actuel.
Voici un script qui vérifie si un fichier nommé exemple.txt existe dans le répertoire courant :
#!/bin/bash
fichier=exemple.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
echo Le fichier existe : $file
autre
echo Fichier introuvable : $file
êtreExplication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=example.txt : Cette ligne définit le fichier de variables et lui attribue la valeur example.txt. Vous pouvez le remplacer par le nom du fichier que vous souhaitez rechercher.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. La condition [ -e $file ] vérifie si le fichier spécifié par la valeur de la variable file existe. L'indicateur -e est utilisé pour vérifier l'existence du fichier.
- echo Le fichier existe : $file : Si la condition est vraie (c'est-à-dire que le fichier existe), cette ligne imprime un message indiquant que le fichier existe, ainsi que le nom du fichier.
- else : si la condition est fausse (c'est-à-dire que le fichier n'existe pas), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé, ainsi que le nom du fichier.
- fi : Cette ligne marque la fin de l'instruction if.
Recherche de fichier
9) Quelle est la différence entre les guillemets simples (') et les guillemets doubles () dans les scripts shell ?
Les guillemets simples (') et les guillemets doubles () sont utilisés pour délimiter des chaînes dans les scripts shell, mais ils ont des comportements différents :
- Guillemets simples : tout ce qui se trouve entre guillemets simples est traité comme une chaîne littérale. Les noms de variables et la plupart des caractères spéciaux ne sont pas développés.
- Guillemets doubles : les variables et certains caractères spéciaux entre guillemets doubles sont développés. Le contenu est soumis à la substitution de variables et à la substitution de commandes.
#!/bin/bash
abcd=Bonjour
echo '$abcd' # Sortie : $abcd
echo $abcd # Sortie : Bonjour10) Comment utiliser les arguments de ligne de commande dans un script shell ?
Arguments de ligne de commande sont des valeurs fournies à un script lors de son exécution. Ils sont accessibles dans le script à l'aide de variables spéciales telles que $1, $2, etc., où $1 représente le premier argument, $2 représente le deuxième argument, et ainsi de suite.
Par exemple: Si le nom de notre script dans `example.sh`
#!/bin/bash
echo Nom du script : $0
echo Premier argument : $1
echo Deuxième argument : $2Si nous exécutons le script avec `.example.sh hello_1 hello_2`, il affichera :
arguments CLI
11) Comment utilisez-vous la boucle for pour parcourir une liste de valeurs ?
Créez un nom de script « exemple.sh ».
#!/bin/bash
fruits=(pomme banane cerise datte)
pour les fruits dans ${fruits[@]} ; faire
echo Fruit actuel : $fruit
faitExplication:
La ligne `fruits=` crée un tableau nommé fruits avec quatre éléments : pomme, banane, cerise et date.
- pour les fruits dans ${fruits[@]} ; do : Cette ligne démarre une boucle for. Voici ce que signifie chaque partie :
- pour fruit : ceci déclare une variable de boucle appelée fruit. À chaque itération de la boucle, fruit contiendra la valeur de l'élément actuel du tableau fruits.
- ${fruits[@]} : Il s'agit d'une extension de tableau qui prend tous les éléments du tableau de fruits. La syntaxe ${…} garantit que chaque élément est traité comme un élément distinct.
- do : ce mot-clé marque le début du corps de la boucle.
- echo Fruit actuel : $fruit : À l'intérieur de la boucle, cette ligne utilise la commande echo pour afficher la valeur actuelle de la variable de boucle fruit. Il imprime un message comme Current fruit: apple pour chaque fruit du tableau.
- done : ce mot-clé marque la fin du corps de la boucle. Il indique au script que la boucle est terminée.
pour la boucle
12) Écrivez un script shell qui calcule la somme des entiers de 1 à N à l'aide d'une boucle.
Créez un nom de script « exemple.sh ».
#!/bin/bash
echo Entrez un nombre (N) :
lire N
somme=0
pour (( i=1; i<=$N; i++ )); faire
somme=$((somme + i))
fait
echo La somme des entiers de 1 à $N est : $sumExplication:
Le script commence par vous demander de saisir un nombre (N) en utilisant read. Ce nombre déterminera combien de fois la boucle sera exécutée.
- La somme variable est initialisée à 0. Cette variable gardera une trace de la somme des entiers.
- La boucle for commence par for (( i=1; i<=$N; i++ )). Cette structure de boucle permet de répéter un ensemble d'actions un certain nombre de fois, en l'occurrence de 1 à la valeur de N.
- À l'intérieur de la boucle, ces choses se produisent :
- i=1 définit la variable de boucle i sur 1 au début de chaque itération.
- La condition de boucle i<=$N vérifie si i est toujours inférieur ou égal au nombre N donné.
- Si la condition est vraie, le corps de la boucle s'exécute.
- sum=$((sum + i)) calcule la nouvelle valeur de sum en y ajoutant la valeur actuelle de i. Cela additionne les entiers de 1 à la valeur i actuelle.
- Après chaque itération, i++ incrémente la valeur de i de 1.
- La boucle continue de s'exécuter jusqu'à ce que la condition i<=$N devienne fausse (lorsque i devient supérieur à N).
- Une fois la boucle terminée, le script affiche la somme des entiers de 1 au nombre N saisi.
13) Créez un script qui recherche un mot spécifique dans un fichier et compte ses occurrences.
Créez un nom de script `word_count.sh`
#!/bin/bash
echo Saisissez le mot à rechercher :
lire mot_cible
echo Entrez le nom du fichier :
lire le nom du fichier
count=$(grep -o -w $target_word $filename | wc -l)
echo Le mot « $target_word » apparaît $count fois dans « $filename ».Explication:
- echo Saisissez le mot à rechercher : : Cette ligne affiche un message demandant à l'utilisateur de saisir le mot qu'il souhaite rechercher dans un fichier.
- read target_word : cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée target_word.
- echo Entrez le nom du fichier : : Cette ligne affiche un message demandant à l'utilisateur de saisir le nom du fichier dans lequel il souhaite effectuer la recherche.
- read filename : Cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée filename.
- count=$(grep -o -w $target_word $filename | wc -l) : Cette ligne effectue le travail principal du script. Décomposons-le davantage :
- grep -o -w $target_word $filename : Cette partie de la commande recherche les occurrences du target_word dans le nom de fichier spécifié. Les options -o et -w garantissent que seules les correspondances de mots entiers sont prises en compte.
- | : Il s'agit d'un canal qui prend la sortie de la commande précédente et l'envoie en entrée à la commande suivante.
- wc -l : Cette partie de la commande utilise la commande wc pour compter le nombre de lignes dans l'entrée. L'option -l compte spécifiquement les lignes.
- La commande entière calcule le nombre d'occurrences du mot_cible dans le fichier et attribue ce nombre à la variable count.
14) Expliquez les différences entre la sortie standard (stdout) et l'erreur standard (stderr).
La principale différence entre la sortie standard (stdout) et l'erreur standard (stderr) est la suivante :
- Sortie standard (sortie standard) : Il s’agit du flux de sortie par défaut vers lequel va la sortie régulière d’une commande. Il est affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant>.
- Erreur standard (stderr) : Il s'agit du flux de sortie des messages d'erreur et des avertissements. Il est également affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant 2>.
15) Expliquez le concept d'instructions conditionnelles dans les scripts shell.
Instructions conditionnelles dans les scripts shell nous permettent de prendre des décisions et de contrôler le déroulement de notre script en fonction de certaines conditions. Ils permettent à notre script d'exécuter différents ensembles de commandes selon qu'une condition particulière est vraie ou fausse. Les principales instructions conditionnelles dans les scripts shell sont l'instruction if, l'instruction elif (facultatif) et l'instruction else (facultatif).
Voici la structure de base d’une instruction conditionnelle dans les scripts shell :
si [condition]; alors
# Commandes à exécuter si la condition est vraie
elif [ autre_condition ]; alors
# Commandes à exécuter si another_condition est vraie (facultatif)
autre
# Commandes à exécuter si aucune des conditions n'est vraie (facultatif)
êtreExplication:
- [ condition ] = Commande qui évalue la condition et renvoie un statut de sortie vrai (0) ou faux (différent de zéro).
- then = C'est un mot-clé qui indique que les commandes qui le suivent seront exécutées si la condition est évaluée comme vraie.
- elif = (abréviation de else if) C'est une section qui nous permet de spécifier des conditions supplémentaires à vérifier.
- else = c'est une section qui contient des commandes qui seront exécutées si aucune des conditions n'est vraie.
- fi = C'est un mot-clé qui marque la fin du bloc conditionnel.
16) Comment lire les lignes d'un fichier dans un script shell ?
À lire des lignes à partir d'un fichier dans un script shell, nous pouvons utiliser diverses méthodes, mais une approche courante consiste à utiliser une boucle while en combinaison avec la commande read. Voici comment nous pouvons procéder :
#!/bin/bash
fichier=/home/jayeshkumar/jayesh.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
while IFS= read -r ligne ; faire
echo Ligne lue : $line
# Ajoutez votre logique de traitement ici
fait <$fichier
autre
echo Fichier introuvable : $file
êtreExplication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=/home/jayeshkumar/jayesh.txt : Cette ligne définit le fichier de variables et attribue le chemin complet au fichier jayesh.txt dans le répertoire /home/jayeshkumar. Modifiez ce chemin pour qu'il corresponde au chemin réel du fichier que vous souhaitez lire.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. Il vérifie si le fichier spécifié par la variable $file existe. L'indicateur -e vérifie l'existence du fichier.
- while IFS= read -r ligne ; do : Cette ligne initie une boucle while qui lit les lignes du fichier.
- IFS= : IFS (Internal Field Separator) est défini sur une valeur vide pour préserver les espaces de début et de fin.
- read -r line : ceci lit la ligne actuelle du fichier et la stocke dans la ligne variable.
- echo Line read : $line : Cette ligne imprime le contenu de la ligne qui a été lue dans le fichier. La variable $line contient le contenu de la ligne courante.
- # Ajoutez votre logique de traitement ici : Il s'agit d'un commentaire fictif dans lequel vous pouvez ajouter votre propre logique pour traiter chaque ligne. Par exemple, vous pouvez analyser la ligne, extraire des informations ou effectuer des actions spécifiques en fonction du contenu.
- done <$file : Ceci marque la fin de la boucle while. Le < $file redirige le contenu du fichier à lire par la boucle.
- else : si le fichier n'existe pas (la condition dans l'instruction if est fausse), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé.
- fi : Cette ligne marque la fin de l'instruction if.
lecture d'un fichier
Ici , nous avons utilisé ` mot de passe ` pour obtenir le chemin du répertoire courant.
17) Écrivez une fonction dans un script shell qui calcule la factorielle d'un nombre donné.
Voici le script quicalculer la factorielled'un nombre donné.
#!/bin/bash
# Définir une fonction pour calculer factorielle
calculer_factorial() {
num=$1
fait=1
pour ((i=1; i<=num; i++)); faire
fait=$((fait * i))
fait
écho $fait
}
# Inviter l'utilisateur à saisir un numéro
echo Entrez un numéro :
lire num_entrée
# Appelez la fonction calculate_factorial avec le numéro d'entrée
factorial_result=$(calculate_factorial $input_num)
# Afficher le résultat factoriel
echo Factorielle de $input_num est : $factorial_resultExplication:
- Le script commence par la ligne shebang #!/bin/bash pour spécifier l'interpréteur.
- calculate_factorial() est défini comme une fonction. Il faut un argument, num, qui est le nombre pour lequel la factorielle doit être calculée.
- A l'intérieur de la fonction, fact est initialisé à 1. Cette variable stockera le résultat factoriel.
- La boucle for parcourt de 1 au nombre donné (num). À chaque itération, il multiplie la valeur actuelle du fait par l'indice de boucle i.
- Une fois la boucle terminée, la variable de fait contient la factorielle calculée.
- Le script invite l'utilisateur à saisir un nombre en utilisant read.
- La fonction calculate_factorial est appelée avec le numéro fourni par l'utilisateur et le résultat est stocké dans la variable factorial_result.
- Enfin, le script affiche le résultat factoriel calculé.
Factorielle
18) Comment gérez-vous les signaux comme Ctrl+C dans un script shell ?
Dans un script shell, vous pouvez gérer des signaux tels que Ctrl+C (également appelé SIGINT) à l'aide de la commande trap. Ctrl+C génère un signal SIGINT lorsque l'utilisateur appuie dessus pour interrompre le script ou le programme en cours d'exécution. En utilisant la commande trap, vous pouvez spécifier les actions à entreprendre lorsqu'un signal particulier est reçu. Voici comment gérer les signaux tels que Ctrl+C dans un script shell :
#!/bin/bash
nettoyer() {
echo Script interrompu. Effectuer un nettoyage…
# Ajoutez vos actions de nettoyage ici
sortie 1
}
# Configurer un piège pour appeler la fonction de nettoyage lorsque Ctrl+C (SIGINT) est reçu
nettoyage des pièges SIGINT
# Reste de votre script
écho En cours d'exécution…
dormir 10
écho Terminé.La gestion des signaux est importante pour rendre les scripts robustes et garantir qu'ils gèrent les interruptions inattendues avec élégance. Vous pouvez personnaliser la fonction de nettoyage en fonction de vos besoins spécifiques, comme la fermeture de fichiers, l'arrêt de processus ou la journalisation d'informations avant la fermeture du script.
Explication:
- #!/bin/bash : Cette ligne shebang spécifie l'interpréteur à utiliser pour exécuter le script.
- cleanup() { … } : Ceci définit une fonction nommée cleanup. Dans cette fonction, vous pouvez inclure toutes les actions qui doivent être effectuées lorsque le script est interrompu, telles que la fermeture de fichiers, la libération de ressources ou l'exécution d'autres tâches de nettoyage.
- trap cleanup SIGINT : La commande trap est utilisée pour configurer un gestionnaire de signal. Dans ce cas, il précise que lorsque le signal SIGINT (Ctrl+C) est reçu, la fonction de nettoyage doit être exécutée.
- echo Running…, sleep 10, echo Finished. : Ce ne sont que des exemples de commandes pour simuler l’exécution d’un script.
19) Créez un script qui recherche et supprime les lignes en double dans un fichier texte.
Voici notre script Linux dans lequel nous supprimerons les lignes en double d'un fichier texte.
#!/bin/bash
fichier_entrée=entrée.txt
fichier_de sortie=sortie.txt
trier $input_file | uniq> $fichier_sortie
echo Les lignes en double ont été supprimées avec succès.Explication:
- Le script commence par un shebang (#!/bin/bash), qui indique que le script doit être interprété à l'aide du shell Bash.
- La variable input_file est définie sur le nom du fichier d'entrée contenant des lignes en double (remplacez-le par le nom réel de votre fichier d'entrée).
- La variable output_file est définie sur le nom du fichier de sortie où les doublons seront supprimés (remplacez-le par le nom du fichier de sortie souhaité).
- Le script utilise la commande sort pour trier les lignes du fichier d'entrée. Le tri des lignes garantit que les lignes en double sont regroupées.
- Les lignes triées sont ensuite transmises via la commande uniq, qui supprime les lignes consécutives en double. La sortie de ce processus est redirigée vers le fichier de sortie.
- Une fois les doublons supprimés, le script imprime un message de réussite.
suppression de ligne en double
Ici, nous utilisons ` chat ` pour afficher le texte à l'intérieur du fichier texte.
20) Écrivez un script qui génère un mot de passe aléatoire sécurisé.
Voici notre script pour générer un mot de passe aléatoire sécurisé.
#!/bin/bash
# Fonction pour générer un mot de passe aléatoire
créer un mot de passe() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Appelez la fonction et stockez le mot de passe généré
mot de passe=$(generate_password)
echo Mot de passe généré : $passwordRemarque : L'utilisateur peut en conséquence modifier la longueur de son mot de passe en remplaçant le chiffre « 12 ».
Explication:
- Le script commence par un shebang (#!/bin/bash), indiquant qu'il doit être interprété à l'aide du shell Bash.
- La fonction generate_password est définie pour générer un mot de passe aléatoire. Voici comment cela fonctionne:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- Fold -w 12 divise les données aléatoires filtrées en lignes de 12 caractères chacune.
- head -n 1 sélectionne la première ligne, nous donnant effectivement une séquence aléatoire de caractères de longueur 12.
- La variable password reçoit le résultat de l'appel de la fonction generate_password.
- Enfin, le mot de passe généré est affiché en utilisant echo.
21) Écrivez un script shell qui calcule la taille totale de tous les fichiers d'un répertoire.
Voici un script shell pour calculer la taille totale de tous les fichiers d'un répertoire.
#!/bin/bash
répertoire=/chemin/vers/votre/répertoire
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo Taille totale des fichiers dans $directory : $total_sizeExplication:
- Le script commence par le shebang #!/bin/bash, indiquant qu'il doit être interprété à l'aide du shell Bash.
- La variable directory est définie sur le chemin du répertoire pour lequel vous souhaitez calculer la taille totale du fichier. Remplacez /path/to/your/directory par le chemin réel.
- La commande du est utilisée pour estimer l'utilisation de l'espace fichier. Les options utilisées sont :
- -c : produit un total général.
- -s : affiche uniquement la taille totale du répertoire spécifié.
- -h : tailles d'impression dans un format lisible par l'homme (par exemple, Ko, Mo, Go).
- La sortie de du est redirigée vers grep total pour filtrer la ligne qui contient la taille totale.
- awk '{print $1}' est utilisé pour extraire le premier champ (taille totale) de la ligne.
- La taille totale calculée est stockée dans la variable total_size.
- Enfin, le script affiche la taille totale en utilisant echo.
Taille totale des fichiers
Ici , nous avons utilisé ` mot de passe ` pour voir le chemin du répertoire actuel.
22) Expliquez la différence entre les instructions if et elif dans les scripts shell.
Fonctionnalité `if`Staiftement Déclaration `elif` But Expliquez la différence entre les instructions if et elif dans les scripts shell. Fournit des conditions alternatives pour vérifier lorsque la condition if initiale est fausse. usage Utilisé pour la condition initiale. Utilisé après la condition if initiale pour vérifier des conditions supplémentaires. nombre de blocs Ne peut en avoir qu'un seul if block. Peut avoir plusieurs blocs elif, mais un seul bloc else (facultatif). Exécution Exécute le bloc de code associé à l'instruction if si la condition est vraie. Si la condition est fausse, le bloc else (s'il est présent) est exécuté (facultatif). Vérifie chaque condition elif dans l'ordre. Si une condition elif est vraie, le bloc de code correspondant est exécuté et le script quitte l'intégralité du bloc conditionnel. Si aucune des conditions elif n'est vraie, le bloc else (s'il est présent) est exécuté. Structures imbriquées Peut être imbriqué dans d’autres blocs if, elif ou else. Ne peut pas être imbriqué dans un autre bloc elif, mais peut être utilisé dans un bloc if ou else. Comprenons-le par un exemple.
#!/bin/bash
nombre=5
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
autre
echo $le nombre n'est pas supérieur à 10
être
écho ---
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
elif [ $numéro -eq 10 ]; alors
echo $number est égal à 10
autre
echo $le nombre est inférieur à 10
êtreExplication:
Dans cet exemple, le premier bloc if vérifie si le nombre est supérieur à 10. Sinon, il imprime un message indiquant que le nombre n'est pas supérieur à 10. Le deuxième bloc avec les instructions elif vérifie plusieurs conditions séquentiellement jusqu'à ce que l'une d'entre elles soit vraie. Dans ce cas, puisque la valeur du nombre est 5, le résultat sera :
différence if_elif
23) Comment utiliser une boucle while pour exécuter des commandes à plusieurs reprises ?
Une boucle while est utilisée dans les scripts shell pour exécuter de manière répétée un ensemble de commandes tant qu'une condition spécifiée est vraie. La boucle continue d'exécuter les commandes jusqu'à ce que la condition devienne fausse.
Voici la syntaxe de base d’une boucle while :
tandis que [ condition ]; faire
# Commandes à exécuter
faitExplication:
- La boucle « while » commence par le mot-clé « while » suivi d'une condition entre crochets « [ ] ».
- Le corps de la boucle, qui contient les commandes à exécuter, est entouré des mots-clés « do » et « done ».
- La boucle vérifie d'abord la condition. Si la condition est vraie, les commandes contenues dans le corps de la boucle sont exécutées. Une fois le corps de la boucle exécuté, la condition est à nouveau vérifiée et le processus se répète jusqu'à ce que la condition devienne fausse.
Exemple: Si nous voulons imprimer des nombres de 1 à 5
#!/bin/bash
compteur=1
while [ $counter -le 5 ]; faire
Numéro d'écho : $compteur
compteur=$((compteur + 1))
faitExplication:
- La variable compteur est mise à 1.
- La boucle while vérifie si la valeur du compteur est inférieure ou égale à 5. Tant que cette condition est vraie, la boucle continue de s'exécuter.
- À l'intérieur de la boucle, la valeur actuelle du compteur est imprimée en utilisant echo.
- Le compteur est incrémenté de 1 à l'aide de l'expression $((counter + 1)).
boucle while
24) Créez un script shell qui recherche et répertorie tous les fichiers vides dans un répertoire.
Script Shell que vous pouvez utiliser pour rechercher et lister tous les fichiers vides dans un répertoire à l'aide des commandes `find` et `stat` :
#!/bin/bash
répertoire=$1″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
être
echo Fichiers vides dans $répertoire :
trouver $répertoire -type f -videExplication:
- ` #!/bin/bash ` : C'est ce qu'on appelle un shebang, et cela indique au système d'exploitation d'utiliser le shell Bash pour interpréter et exécuter le script.
- ` répertoire=$1″ ` : Cette ligne attribue le premier argument de ligne de commande (noté $1) à la variable ` annuaire `.
- ` if [ -z $répertoire ]; alors ` : Cette ligne démarre une instruction if qui vérifie si le ` annuaire ` La variable est vide (-z teste une chaîne vide).
- ` echo Utilisation : 0 $ ` : Si le répertoire est vide, cette ligne affiche un message d'utilisation, où ` 0 $ ` représente le nom du script.
- ` sortie 1 ` : Cette ligne quitte le script avec un code de sortie de ` 1 `, indiquant une erreur.
- ` être ` : Cette ligne marque la fin du ` si `déclaration.
- ` si [ ! -d $répertoire ]; alors ` : Cela démarre une autre instruction if pour vérifier si le répertoire fourni existe (` -d ` teste un répertoire).
- ` echo Erreur : « $directory » n'est pas un répertoire valide. ` : Si le répertoire fourni n'existe pas, cette ligne affiche un message d'erreur.
- ` sortie 1 ` : Quitte le script avec un code de sortie de ` 1 `.
- ` être ` : marque la fin de la seconde ` si` déclaration.
- ` echo Fichiers vides dans $répertoire : ` : Si tout est valide jusqu'à présent, cette ligne imprime un message indiquant que le script listera les fichiers vides dans le répertoire spécifié.
- ` trouver $répertoire -type f -vide ` : Cette ligne utilise le ` trouver ` commande pour rechercher des fichiers vides (` -vide `) de type fichiers normaux (` -type f `) dans le répertoire spécifié. Il répertorie ensuite ces fichiers vides.
Trouver des fichiers vides
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/
25) Quel est le but de la commande read dans les scripts shell ?
La commande read dans les scripts shell permet au script de vous demander des informations. C'est comme lorsqu'un ordinateur vous pose une question et attend votre réponse. Ceci est utile pour les scripts qui nécessitent que vous tapiez quelque chose ou lorsque le script doit travailler avec des informations provenant de fichiers. La commande read aide le script à s'arrêter et à attendre ce que vous tapez, puis il peut utiliser ces informations pour faire plus de choses dans le script.
Syntaxe de la commande read :
read variable_name>Exemple : Si nous voulons prendre le nom comme entrée de l'utilisateur pour l'imprimer.
#!/bin/bash
echo Veuillez entrer votre nom :
lire le nom
echo Bonjour, $name !lire le nom
En résumé, la commande read est utilisée pour capturer les entrées utilisateur ou les données des fichiers dans des scripts shell, rendant les scripts plus interactifs et polyvalents.
26) Écrivez un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
Voici un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
#!/bin/bash
répertoire=$1″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
êtrecd $répertoire || sortie 1
pour le fichier dans * ; faire
si [ -f $fichier ]; alors
nouveau nom=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nouveau nom ] && mv $file $nouveau nom
être
faitExplication:
- #!/bin/bash : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- répertoire=$1″ : Cette ligne attribue le premier argument de ligne de commande au répertoire de variables.
- if [ -z $répertoire ]; alors : Cette ligne vérifie si la variable répertoire est vide (aucun argument fourni lors de l'exécution du script).
- echo Utilisation : 0 $ : Si le répertoire est vide, cette ligne imprime un message d'utilisation avec le nom du script ($0).
- sortie 1 : Cette ligne quitte le script avec un code de sortie de 1, indiquant qu'une erreur s'est produite.
- F i : Cela marque la fin de la première instruction if.
- si [ ! -d $répertoire ]; alors : Cette ligne vérifie si le répertoire spécifié n'existe pas (-d teste un répertoire).
- echo Erreur : « $directory » n'est pas un répertoire valide. : Si le répertoire spécifié n'existe pas, cette ligne affiche un message d'erreur.
- sortie 1 : Quitte le script avec un code de sortie de 1.
- être : Marque la fin de la deuxième instruction if.
- cd $répertoire || sortie 1 : remplace le répertoire de travail actuel par le répertoire spécifié. Si le changement de répertoire échoue (par exemple, répertoire inexistant), le script se termine avec un code d'erreur.
- pour le fichier dans * ; faire: je pour le fichier dans * ; faire: lance une boucle qui parcourt tous les éléments du répertoire courant (* correspond à tous les noms de fichiers).
- si [ -f $fichier ]; alors : Vérifie si l'élément d'itération de boucle actuel est un fichier normal (-f teste un fichier normal).
- nouveau nom=$(echo $file | tr 'A-Z' 'a-z') : Convertit le nom de fichier actuel ($file) en minuscules à l'aide de la commande tr et stocke le résultat dans la variable newname.
- [ $file != $nouveau nom ] && mv $file $nouveau nom : Compare le nom de fichier d'origine avec le nouveau nom de fichier en minuscules. S'ils sont différents, il renomme le fichier à l'aide de la commande mv.
- être : Marque la fin de l’instruction if interne.
- fait : Marque la fin de la boucle.
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/test
27) Comment utiliser des opérations arithmétiques dans un script shell ?
Les opérations arithmétiques peuvent être effectuées dans un script shell à l'aide de diverses méthodes intégrées. Le shell fournit des mécanismes pour des calculs arithmétiques simples utilisant l'expansion arithmétique comme :
- Expansion arithmétique ($((…)))
- Utilisation de la commande expr
- Utilisation de la commande let
Voici notre script Shell expliquant les trois méthodes d'opérations arithmétiques.
#!/bin/bash
num1=10
num2=5#Expansion arithmétique ($((…)))
résultat=$((num1 + num2))
echo Somme : $résultat#Utilisation de la commande expr
somme=$(expr $num1 + $num2)
echo Somme : $somme#Utilisation de la commande let
soit somme = num1 + num2
echo Somme : $sommeExplication:
- `#!/bin/bash` : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- `num1=10` et ` num2=5` : Ces lignes attribuent les valeurs 10 et 5 aux variables ` num1 ' et ' numéro2 `, respectivement.
- `#Expansion arithmétique ($((…)))` : Il s'agit d'un commentaire indiquant le début de la section qui démontre le développement arithmétique.
- `résultat=$((num1 + num2))` : Cette ligne utilise le développement arithmétique pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` résultat `variable.
- `somme d'écho : $résultat` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` résultat `variable.
- `#Utilisation de la commande expr` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` expression ` commande pour les opérations arithmétiques.
- `somme=$(expr $num1 + $num2)` : Cette ligne utilise le ` expression ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` somme `variable. Notez que le ` expression La commande ` nécessite des espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.
- `#Utilisation de la commande let` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` laisser ` commande pour les opérations arithmétiques.
- `soit somme = num1 + num2″` : Cette ligne utilise le ` laisser ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et attribue le résultat au ` somme `variable. Le ' laisser La commande ` ne nécessite pas d'espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.
arithmétique
28) Créez un script qui vérifie si un hôte réseau est accessible.
Voici un simple script shell qui utilise la commande ping pour vérifier si un hôte réseau est accessible :
#!/bin/bash
hôte = 1 $″
si [ -z $hôte ]; alors
echo Utilisation : 0 $
sortie 1
être
ping -c 4 $hôte
si [ $? -éq 0 ]; alors
echo $host est accessible.
autre
echo $host n'est pas accessible.
êtreExplication:
- Il prend un nom d'hôte ou une adresse IP comme argument et vérifie si l'argument est fourni.
- Si aucun argument n'est fourni, il affiche un message d'utilisation et se termine.
- Il utilise la commande ping avec l'option -c 4 pour envoyer quatre requêtes d'écho ICMP à l'hôte spécifié.
- Une fois la commande ping exécutée, elle vérifie l'état de sortie ($?). Si l'état de sortie est 0, cela signifie que l'hôte est joignable et le script imprime un message de réussite. Sinon, il imprime un message d'échec.
Note : Nous devons fournir un nom d'hôte comme argument lors de l'exécution du script. Ici, nous avons utilisé google.com
29) Écrivez un script Shell pour trouver le plus grand élément d'un tableau :
Voici un script shell pour trouver le plus grand élément d'un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(3 56 24 89 67)# Initialiser une variable pour stocker la valeur maximale, en commençant par le premier élément
max=${tableau[0]}
# Parcourir le tableau
pour num dans ${array[@]} ; faire
# Comparez chaque élément avec le maximum actuel
si ((num> max)); alors
max=$num
être
fait# Imprimer la valeur maximale
echo L'élément maximum dans le tableau est : $max
Explication:
- ` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
- ` tableau=(3 56 24 89 67) ` : Le tableau est déclaré et initialisé avec des valeurs.
- ` max=${tableau[0]} ` : `max` est initialisé avec le premier élément du tableau.
- ` pour num dans ${array[@]} ; faire ` : Une boucle `for` est utilisée pour parcourir les éléments du tableau.
- ` si ((num> max)); alors ` : Une instruction `if` vérifie si l'élément actuel `num` est supérieur au maximum actuel `max`.
- ` max=$num` : Si`num ` est supérieur à `max`, `max` est mis à jour avec la valeur de num.
- ` fait ` : La boucle `for` est fermée.
- ` echo L'élément maximum dans le tableau est : $max ` : Enfin, le script imprime la valeur maximale trouvée dans le tableau.
le plus grand nombre
30) Écrivez un script pour calculer la somme des éléments dans un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(1 65 22 19 94)
# Initialiser une variable pour stocker la somme
somme=0
# Parcourez le tableau et ajoutez chaque élément à la somme
pour num dans ${array[@]} ; faire
matin=$((matin + matin))
fait# Imprimer la somme
echo La somme des éléments du tableau est : $sum
Explication:
` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
` tableau=(1 65 22 19 94) ` : Le tableau est déclaré et initialisé avec des valeurs.
` somme=0 `:` somme ` est initialisé à zéro pour contenir la somme des éléments.
` pour num dans ${array[@]} ; faire ` : Un ` pour ` La boucle est utilisée pour parcourir les éléments du tableau.
` matin=$((matin + matin)) ` : À l'intérieur de la boucle, chaque élément ` sur une ` est ajouté au ` somme `variable.
` fait ` : Le ` pour ` La boucle est fermée.
`echo La somme des éléments du tableau est : $sum` : Enfin, le script imprime la somme de tous les éléments du tableau.
Somme des éléments
En savoir plus sur les scripts Shell
- Différence entre shell et noyau
- Différence entre Bind Shell et Reverse Shell
- Introduction au Linux Shell et aux scripts Shell
Conclusion
Nous tous, les geeks, savons que le script shell est très utile pour augmenter la productivité du travail et pour gagner du temps. Donc, dans cet article, nous avons couvert 30 exemples de scripts shell très utiles et les plus conman . Nous espérons que ce guide complet sur l'exemple de script shell vous aidera à tout comprendre sur les scripts shell.
echo Premier argument :
echo Deuxième argument :
Si nous exécutons le script avec `.example.sh hello_1 hello_2`, il affichera :

arguments CLI
11) Comment utilisez-vous la boucle for pour parcourir une liste de valeurs ?
Créez un nom de script « exemple.sh ».
#!/bin/bash
fruits=(pomme banane cerise datte)
pour les fruits dans ${fruits[@]} ; faire
echo Fruit actuel : $fruit
fait
Explication:
La ligne `fruits=` crée un tableau nommé fruits avec quatre éléments : pomme, banane, cerise et date.
- pour les fruits dans ${fruits[@]} ; do : Cette ligne démarre une boucle for. Voici ce que signifie chaque partie :
- pour fruit : ceci déclare une variable de boucle appelée fruit. À chaque itération de la boucle, fruit contiendra la valeur de l'élément actuel du tableau fruits.
- ${fruits[@]} : Il s'agit d'une extension de tableau qui prend tous les éléments du tableau de fruits. La syntaxe ${…} garantit que chaque élément est traité comme un élément distinct.
- do : ce mot-clé marque le début du corps de la boucle.
- echo Fruit actuel : $fruit : À l'intérieur de la boucle, cette ligne utilise la commande echo pour afficher la valeur actuelle de la variable de boucle fruit. Il imprime un message comme Current fruit: apple pour chaque fruit du tableau.
- done : ce mot-clé marque la fin du corps de la boucle. Il indique au script que la boucle est terminée.

pour la boucle
12) Écrivez un script shell qui calcule la somme des entiers de 1 à N à l'aide d'une boucle.
Créez un nom de script « exemple.sh ».
#!/bin/bash
echo Entrez un nombre (N) :
lire N
somme=0
pour (( i=1; i<=$N; i++ )); faire
somme=$((somme + i))
fait
echo La somme des entiers de 1 à $N est : $sum
Explication:
Le script commence par vous demander de saisir un nombre (N) en utilisant read. Ce nombre déterminera combien de fois la boucle sera exécutée.
- La somme variable est initialisée à 0. Cette variable gardera une trace de la somme des entiers.
- La boucle for commence par for (( i=1; i<=$N; i++ )). Cette structure de boucle permet de répéter un ensemble d'actions un certain nombre de fois, en l'occurrence de 1 à la valeur de N.
- À l'intérieur de la boucle, ces choses se produisent :
- i=1 définit la variable de boucle i sur 1 au début de chaque itération.
- La condition de boucle i<=$N vérifie si i est toujours inférieur ou égal au nombre N donné.
- Si la condition est vraie, le corps de la boucle s'exécute.
- sum=$((sum + i)) calcule la nouvelle valeur de sum en y ajoutant la valeur actuelle de i. Cela additionne les entiers de 1 à la valeur i actuelle.
- Après chaque itération, i++ incrémente la valeur de i de 1.
- La boucle continue de s'exécuter jusqu'à ce que la condition i<=$N devienne fausse (lorsque i devient supérieur à N).
- Une fois la boucle terminée, le script affiche la somme des entiers de 1 au nombre N saisi.
13) Créez un script qui recherche un mot spécifique dans un fichier et compte ses occurrences.
Créez un nom de script `word_count.sh`
#!/bin/bash
echo Saisissez le mot à rechercher :
lire mot_cible
echo Entrez le nom du fichier :
lire le nom du fichier
count=$(grep -o -w $target_word $filename | wc -l)
echo Le mot « $target_word » apparaît $count fois dans « $filename ».
Explication:
- echo Saisissez le mot à rechercher : : Cette ligne affiche un message demandant à l'utilisateur de saisir le mot qu'il souhaite rechercher dans un fichier.
- read target_word : cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée target_word.
- echo Entrez le nom du fichier : : Cette ligne affiche un message demandant à l'utilisateur de saisir le nom du fichier dans lequel il souhaite effectuer la recherche.
- read filename : Cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée filename.
- count=$(grep -o -w $target_word $filename | wc -l) : Cette ligne effectue le travail principal du script. Décomposons-le davantage :
- grep -o -w $target_word $filename : Cette partie de la commande recherche les occurrences du target_word dans le nom de fichier spécifié. Les options -o et -w garantissent que seules les correspondances de mots entiers sont prises en compte.
- | : Il s'agit d'un canal qui prend la sortie de la commande précédente et l'envoie en entrée à la commande suivante.
- wc -l : Cette partie de la commande utilise la commande wc pour compter le nombre de lignes dans l'entrée. L'option -l compte spécifiquement les lignes.
- La commande entière calcule le nombre d'occurrences du mot_cible dans le fichier et attribue ce nombre à la variable count.
14) Expliquez les différences entre la sortie standard (stdout) et l'erreur standard (stderr).
La principale différence entre la sortie standard (stdout) et l'erreur standard (stderr) est la suivante :
- Sortie standard (sortie standard) : Il s’agit du flux de sortie par défaut vers lequel va la sortie régulière d’une commande. Il est affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant>.
- Erreur standard (stderr) : Il s'agit du flux de sortie des messages d'erreur et des avertissements. Il est également affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant 2>.
15) Expliquez le concept d'instructions conditionnelles dans les scripts shell.
Instructions conditionnelles dans les scripts shell nous permettent de prendre des décisions et de contrôler le déroulement de notre script en fonction de certaines conditions. Ils permettent à notre script d'exécuter différents ensembles de commandes selon qu'une condition particulière est vraie ou fausse. Les principales instructions conditionnelles dans les scripts shell sont l'instruction if, l'instruction elif (facultatif) et l'instruction else (facultatif).
Voici la structure de base d’une instruction conditionnelle dans les scripts shell :
si [condition]; alors
# Commandes à exécuter si la condition est vraie
elif [ autre_condition ]; alors
# Commandes à exécuter si another_condition est vraie (facultatif)
autre
# Commandes à exécuter si aucune des conditions n'est vraie (facultatif)
être
Explication:
- [ condition ] = Commande qui évalue la condition et renvoie un statut de sortie vrai (0) ou faux (différent de zéro).
- then = C'est un mot-clé qui indique que les commandes qui le suivent seront exécutées si la condition est évaluée comme vraie.
- elif = (abréviation de else if) C'est une section qui nous permet de spécifier des conditions supplémentaires à vérifier.
- else = c'est une section qui contient des commandes qui seront exécutées si aucune des conditions n'est vraie.
- fi = C'est un mot-clé qui marque la fin du bloc conditionnel.
16) Comment lire les lignes d'un fichier dans un script shell ?
À lire des lignes à partir d'un fichier dans un script shell, nous pouvons utiliser diverses méthodes, mais une approche courante consiste à utiliser une boucle while en combinaison avec la commande read. Voici comment nous pouvons procéder :
#!/bin/bash
fichier=/home/jayeshkumar/jayesh.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
while IFS= read -r ligne ; faire
echo Ligne lue : $line
# Ajoutez votre logique de traitement ici
fait <$fichier
autre
echo Fichier introuvable : $file
être
Explication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=/home/jayeshkumar/jayesh.txt : Cette ligne définit le fichier de variables et attribue le chemin complet au fichier jayesh.txt dans le répertoire /home/jayeshkumar. Modifiez ce chemin pour qu'il corresponde au chemin réel du fichier que vous souhaitez lire.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. Il vérifie si le fichier spécifié par la variable $file existe. L'indicateur -e vérifie l'existence du fichier.
- while IFS= read -r ligne ; do : Cette ligne initie une boucle while qui lit les lignes du fichier.
- IFS= : IFS (Internal Field Separator) est défini sur une valeur vide pour préserver les espaces de début et de fin.
- read -r line : ceci lit la ligne actuelle du fichier et la stocke dans la ligne variable.
- echo Line read : $line : Cette ligne imprime le contenu de la ligne qui a été lue dans le fichier. La variable $line contient le contenu de la ligne courante.
- # Ajoutez votre logique de traitement ici : Il s'agit d'un commentaire fictif dans lequel vous pouvez ajouter votre propre logique pour traiter chaque ligne. Par exemple, vous pouvez analyser la ligne, extraire des informations ou effectuer des actions spécifiques en fonction du contenu.
- done <$file : Ceci marque la fin de la boucle while. Le < $file redirige le contenu du fichier à lire par la boucle.
- else : si le fichier n'existe pas (la condition dans l'instruction if est fausse), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé.
- fi : Cette ligne marque la fin de l'instruction if.

lecture d'un fichier
Ici , nous avons utilisé ` mot de passe ` pour obtenir le chemin du répertoire courant.
commandes Kali Linux
17) Écrivez une fonction dans un script shell qui calcule la factorielle d'un nombre donné.
Voici le script quicalculer la factorielled'un nombre donné.
#!/bin/bash
# Définir une fonction pour calculer factorielle
calculer_factorial() {
num=
fait=1
pour ((i=1; i<=num; i++)); faire
fait=$((fait * i))
fait
écho $fait
}
# Inviter l'utilisateur à saisir un numéro
echo Entrez un numéro :
lire num_entrée
# Appelez la fonction calculate_factorial avec le numéro d'entrée
factorial_result=$(calculate_factorial $input_num)
# Afficher le résultat factoriel
echo Factorielle de $input_num est : $factorial_result
Explication:
- Le script commence par la ligne shebang #!/bin/bash pour spécifier l'interpréteur.
- calculate_factorial() est défini comme une fonction. Il faut un argument, num, qui est le nombre pour lequel la factorielle doit être calculée.
- A l'intérieur de la fonction, fact est initialisé à 1. Cette variable stockera le résultat factoriel.
- La boucle for parcourt de 1 au nombre donné (num). À chaque itération, il multiplie la valeur actuelle du fait par l'indice de boucle i.
- Une fois la boucle terminée, la variable de fait contient la factorielle calculée.
- Le script invite l'utilisateur à saisir un nombre en utilisant read.
- La fonction calculate_factorial est appelée avec le numéro fourni par l'utilisateur et le résultat est stocké dans la variable factorial_result.
- Enfin, le script affiche le résultat factoriel calculé.

Factorielle
18) Comment gérez-vous les signaux comme Ctrl+C dans un script shell ?
Dans un script shell, vous pouvez gérer des signaux tels que Ctrl+C (également appelé SIGINT) à l'aide de la commande trap. Ctrl+C génère un signal SIGINT lorsque l'utilisateur appuie dessus pour interrompre le script ou le programme en cours d'exécution. En utilisant la commande trap, vous pouvez spécifier les actions à entreprendre lorsqu'un signal particulier est reçu. Voici comment gérer les signaux tels que Ctrl+C dans un script shell :
#!/bin/bash
nettoyer() {
echo Script interrompu. Effectuer un nettoyage…
# Ajoutez vos actions de nettoyage ici
sortie 1
}
# Configurer un piège pour appeler la fonction de nettoyage lorsque Ctrl+C (SIGINT) est reçu
nettoyage des pièges SIGINT
# Reste de votre script
écho En cours d'exécution…
dormir 10
écho Terminé.
La gestion des signaux est importante pour rendre les scripts robustes et garantir qu'ils gèrent les interruptions inattendues avec élégance. Vous pouvez personnaliser la fonction de nettoyage en fonction de vos besoins spécifiques, comme la fermeture de fichiers, l'arrêt de processus ou la journalisation d'informations avant la fermeture du script.
Explication:
- #!/bin/bash : Cette ligne shebang spécifie l'interpréteur à utiliser pour exécuter le script.
- cleanup() { … } : Ceci définit une fonction nommée cleanup. Dans cette fonction, vous pouvez inclure toutes les actions qui doivent être effectuées lorsque le script est interrompu, telles que la fermeture de fichiers, la libération de ressources ou l'exécution d'autres tâches de nettoyage.
- trap cleanup SIGINT : La commande trap est utilisée pour configurer un gestionnaire de signal. Dans ce cas, il précise que lorsque le signal SIGINT (Ctrl+C) est reçu, la fonction de nettoyage doit être exécutée.
- echo Running…, sleep 10, echo Finished. : Ce ne sont que des exemples de commandes pour simuler l’exécution d’un script.
19) Créez un script qui recherche et supprime les lignes en double dans un fichier texte.
Voici notre script Linux dans lequel nous supprimerons les lignes en double d'un fichier texte.
#!/bin/bash
fichier_entrée=entrée.txt
fichier_de sortie=sortie.txt
trier $input_file | uniq> $fichier_sortie
echo Les lignes en double ont été supprimées avec succès.
Explication:
- Le script commence par un shebang (#!/bin/bash), qui indique que le script doit être interprété à l'aide du shell Bash.
- La variable input_file est définie sur le nom du fichier d'entrée contenant des lignes en double (remplacez-le par le nom réel de votre fichier d'entrée).
- La variable output_file est définie sur le nom du fichier de sortie où les doublons seront supprimés (remplacez-le par le nom du fichier de sortie souhaité).
- Le script utilise la commande sort pour trier les lignes du fichier d'entrée. Le tri des lignes garantit que les lignes en double sont regroupées.
- Les lignes triées sont ensuite transmises via la commande uniq, qui supprime les lignes consécutives en double. La sortie de ce processus est redirigée vers le fichier de sortie.
- Une fois les doublons supprimés, le script imprime un message de réussite.

suppression de ligne en double
Ici, nous utilisons ` chat ` pour afficher le texte à l'intérieur du fichier texte.
20) Écrivez un script qui génère un mot de passe aléatoire sécurisé.
Voici notre script pour générer un mot de passe aléatoire sécurisé.
#!/bin/bash
# Fonction pour générer un mot de passe aléatoire
créer un mot de passe() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Appelez la fonction et stockez le mot de passe généré
mot de passe=$(generate_password)
echo Mot de passe généré : $password
Remarque : L'utilisateur peut en conséquence modifier la longueur de son mot de passe en remplaçant le chiffre « 12 ».
Explication:
- Le script commence par un shebang (#!/bin/bash), indiquant qu'il doit être interprété à l'aide du shell Bash.
- La fonction generate_password est définie pour générer un mot de passe aléatoire. Voici comment cela fonctionne:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- Fold -w 12 divise les données aléatoires filtrées en lignes de 12 caractères chacune.
- head -n 1 sélectionne la première ligne, nous donnant effectivement une séquence aléatoire de caractères de longueur 12.
- La variable password reçoit le résultat de l'appel de la fonction generate_password.
- Enfin, le mot de passe généré est affiché en utilisant echo.
21) Écrivez un script shell qui calcule la taille totale de tous les fichiers d'un répertoire.
Voici un script shell pour calculer la taille totale de tous les fichiers d'un répertoire.
#!/bin/bash
répertoire=/chemin/vers/votre/répertoire
total_size=$(du -csh $directory | grep total | awk '{print }')
echo Taille totale des fichiers dans $directory : $total_size
Explication:
- Le script commence par le shebang #!/bin/bash, indiquant qu'il doit être interprété à l'aide du shell Bash.
- La variable directory est définie sur le chemin du répertoire pour lequel vous souhaitez calculer la taille totale du fichier. Remplacez /path/to/your/directory par le chemin réel.
- La commande du est utilisée pour estimer l'utilisation de l'espace fichier. Les options utilisées sont :
- -c : produit un total général.
- -s : affiche uniquement la taille totale du répertoire spécifié.
- -h : tailles d'impression dans un format lisible par l'homme (par exemple, Ko, Mo, Go).
- La sortie de du est redirigée vers grep total pour filtrer la ligne qui contient la taille totale.
- awk '{print }' est utilisé pour extraire le premier champ (taille totale) de la ligne.
- La taille totale calculée est stockée dans la variable total_size.
- Enfin, le script affiche la taille totale en utilisant echo.

Taille totale des fichiers
Ici , nous avons utilisé ` mot de passe ` pour voir le chemin du répertoire actuel.
22) Expliquez la différence entre les instructions if et elif dans les scripts shell.
Fonctionnalité | `if`Staiftement | Déclaration `elif` |
---|---|---|
But | Expliquez la différence entre les instructions if et elif dans les scripts shell. | Fournit des conditions alternatives pour vérifier lorsque la condition if initiale est fausse. |
usage | Utilisé pour la condition initiale. | Utilisé après la condition if initiale pour vérifier des conditions supplémentaires. |
nombre de blocs | Ne peut en avoir qu'un seul if block. | Peut avoir plusieurs blocs elif, mais un seul bloc else (facultatif). |
Exécution | Exécute le bloc de code associé à l'instruction if si la condition est vraie. Si la condition est fausse, le bloc else (s'il est présent) est exécuté (facultatif). | Vérifie chaque condition elif dans l'ordre. Si une condition elif est vraie, le bloc de code correspondant est exécuté et le script quitte l'intégralité du bloc conditionnel. Si aucune des conditions elif n'est vraie, le bloc else (s'il est présent) est exécuté. |
Structures imbriquées | Peut être imbriqué dans d’autres blocs if, elif ou else. | Ne peut pas être imbriqué dans un autre bloc elif, mais peut être utilisé dans un bloc if ou else. |
Comprenons-le par un exemple.
#!/bin/bash
nombre=5
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
autre
echo $le nombre n'est pas supérieur à 10
être
écho ---
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
elif [ $numéro -eq 10 ]; alors
echo $number est égal à 10
autre
echo $le nombre est inférieur à 10
être
Explication:
Dans cet exemple, le premier bloc if vérifie si le nombre est supérieur à 10. Sinon, il imprime un message indiquant que le nombre n'est pas supérieur à 10. Le deuxième bloc avec les instructions elif vérifie plusieurs conditions séquentiellement jusqu'à ce que l'une d'entre elles soit vraie. Dans ce cas, puisque la valeur du nombre est 5, le résultat sera :

différence if_elif
23) Comment utiliser une boucle while pour exécuter des commandes à plusieurs reprises ?
Une boucle while est utilisée dans les scripts shell pour exécuter de manière répétée un ensemble de commandes tant qu'une condition spécifiée est vraie. La boucle continue d'exécuter les commandes jusqu'à ce que la condition devienne fausse.
conversion d'une chaîne en entier
Voici la syntaxe de base d’une boucle while :
tandis que [ condition ]; faire
# Commandes à exécuter
fait
Explication:
- La boucle « while » commence par le mot-clé « while » suivi d'une condition entre crochets « [ ] ».
- Le corps de la boucle, qui contient les commandes à exécuter, est entouré des mots-clés « do » et « done ».
- La boucle vérifie d'abord la condition. Si la condition est vraie, les commandes contenues dans le corps de la boucle sont exécutées. Une fois le corps de la boucle exécuté, la condition est à nouveau vérifiée et le processus se répète jusqu'à ce que la condition devienne fausse.
Exemple: Si nous voulons imprimer des nombres de 1 à 5
#!/bin/bash
compteur=1
while [ $counter -le 5 ]; faire
Numéro d'écho : $compteur
compteur=$((compteur + 1))
fait
Explication:
- La variable compteur est mise à 1.
- La boucle while vérifie si la valeur du compteur est inférieure ou égale à 5. Tant que cette condition est vraie, la boucle continue de s'exécuter.
- À l'intérieur de la boucle, la valeur actuelle du compteur est imprimée en utilisant echo.
- Le compteur est incrémenté de 1 à l'aide de l'expression $((counter + 1)).

boucle while
24) Créez un script shell qui recherche et répertorie tous les fichiers vides dans un répertoire.
Script Shell que vous pouvez utiliser pour rechercher et lister tous les fichiers vides dans un répertoire à l'aide des commandes `find` et `stat` :
#!/bin/bash
répertoire=″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
être
echo Fichiers vides dans $répertoire :
trouver $répertoire -type f -vide
Explication:
- ` #!/bin/bash ` : C'est ce qu'on appelle un shebang, et cela indique au système d'exploitation d'utiliser le shell Bash pour interpréter et exécuter le script.
- ` répertoire=″ ` : Cette ligne attribue le premier argument de ligne de commande (noté ) à la variable ` annuaire `.
- ` if [ -z $répertoire ]; alors ` : Cette ligne démarre une instruction if qui vérifie si le ` annuaire ` La variable est vide (-z teste une chaîne vide).
- ` echo Utilisation : 0 $ ` : Si le répertoire est vide, cette ligne affiche un message d'utilisation, où ` 0 $ ` représente le nom du script.
- ` sortie 1 ` : Cette ligne quitte le script avec un code de sortie de ` 1 `, indiquant une erreur.
- ` être ` : Cette ligne marque la fin du ` si `déclaration.
- ` si [ ! -d $répertoire ]; alors ` : Cela démarre une autre instruction if pour vérifier si le répertoire fourni existe (` -d ` teste un répertoire).
- ` echo Erreur : « $directory » n'est pas un répertoire valide. ` : Si le répertoire fourni n'existe pas, cette ligne affiche un message d'erreur.
- ` sortie 1 ` : Quitte le script avec un code de sortie de ` 1 `.
- ` être ` : marque la fin de la seconde ` si` déclaration.
- ` echo Fichiers vides dans $répertoire : ` : Si tout est valide jusqu'à présent, cette ligne imprime un message indiquant que le script listera les fichiers vides dans le répertoire spécifié.
- ` trouver $répertoire -type f -vide ` : Cette ligne utilise le ` trouver ` commande pour rechercher des fichiers vides (` -vide `) de type fichiers normaux (` -type f `) dans le répertoire spécifié. Il répertorie ensuite ces fichiers vides.

Trouver des fichiers vides
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/
25) Quel est le but de la commande read dans les scripts shell ?
La commande read dans les scripts shell permet au script de vous demander des informations. C'est comme lorsqu'un ordinateur vous pose une question et attend votre réponse. Ceci est utile pour les scripts qui nécessitent que vous tapiez quelque chose ou lorsque le script doit travailler avec des informations provenant de fichiers. La commande read aide le script à s'arrêter et à attendre ce que vous tapez, puis il peut utiliser ces informations pour faire plus de choses dans le script.
Syntaxe de la commande read :
read variable_name>
Exemple : Si nous voulons prendre le nom comme entrée de l'utilisateur pour l'imprimer.
#!/bin/bash
echo Veuillez entrer votre nom :
lire le nom
echo Bonjour, $name !

lire le nom
En résumé, la commande read est utilisée pour capturer les entrées utilisateur ou les données des fichiers dans des scripts shell, rendant les scripts plus interactifs et polyvalents.
26) Écrivez un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
Voici un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
#!/bin/bash
répertoire=″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
êtrecd $répertoire || sortie 1
pour le fichier dans * ; faire
si [ -f $fichier ]; alors
nouveau nom=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nouveau nom ] && mv $file $nouveau nom
être
fait
Explication:
- #!/bin/bash : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- répertoire=″ : Cette ligne attribue le premier argument de ligne de commande au répertoire de variables.
- if [ -z $répertoire ]; alors : Cette ligne vérifie si la variable répertoire est vide (aucun argument fourni lors de l'exécution du script).
- echo Utilisation : 0 $ : Si le répertoire est vide, cette ligne imprime un message d'utilisation avec le nom du script (
).Pour toutes les distributions Linux, le script shell est comme une baguette magique qui automatise le processus, fait gagner du temps aux utilisateurs et augmente la productivité. Ce didacticiel sur les scripts doit vous présenter plus de 25 exemples de scripts.
Mais avant de passer au sujet de script shell exemples, comprenons le script shell et les cas d’utilisation réels des scripts shell.
Qu’est-ce que le script Shell ?
Eh bien, la coquille est un CLI ( interpréteur de ligne de commande ), qui s'exécute dans une fenêtre de texte dans laquelle les utilisateurs peuvent gérer et exécuter des commandes shell. D'autre part, le processus d'écriture d'un ensemble de commandes à exécuter sur un système Linux. Un fichier contenant de telles instructions est appelé un script bash.
Utilisations des scripts Shell
Vous trouverez ci-dessous quelques utilisations courantes de Shell Script :
- Automatisation des tâches – Il peut être utilisé pour automatiser des tâches répétitives telles que des sauvegardes régulières et des tâches d'installation de logiciels.
- Personnalisation – On peut utiliser des scripts shell pour concevoir son environnement de ligne de commande et effectuer facilement sa tâche selon les besoins.
- Gestion de fichiers - Les scripts shell peuvent également être utilisés pour gérer et manipuler des fichiers et des répertoires, comme déplacer, copier, renommer ou supprimer des fichiers.
Exemples de scripts Shell sous Linux
1) Qu'indique le shebang (#!) au début d'un script shell ?
Le shebang (#!) au début d'un script indique l'interpréteur qui doit être utilisé pour exécuter le script. Il indique au système quel shell ou interpréteur doit interpréter les commandes du script.
Par exemple: Supposons que nous ayons un script nommé monscript.sh écrit dans le shell Bash :
case
Dans cet exemple :
- Le #!/bin/bash au début du script indique que le script doit être interprété à l'aide du shell Bash.
- Les commandes echo sont utilisées pour imprimer des messages sur le terminal.
2) Comment exécuter un script shell à partir de la ligne de commande ?
Pour exécuter un script shell à partir de la ligne de commande, nous devons suivre ces étapes :
- Assurez-vous que le fichier de script dispose des autorisations exécutables à l'aide du commande chmod :
chmod +x myscript.sh>
- Exécutez le script en utilisant son nom de fichier :
./myscript.sh>
Ici, vous devez remplacer monscript.sh avec votre nom de script.
3) Écrivez un script shell qui imprime techcodeview.com sur le terminal.
Créez un nom de script `myscript.sh` (nous utilisons ` parce que ` éditeur, vous pouvez choisir n'importe quel éditeur)
vim myscript.sh>
#!/bin/bash
# Ce script imprime techcodeview.com sur le terminal
écho techcodeview.comimprimer le nom
Nous rendons notre script exécutable en utilisant `chmod +x` puis nous l'exécutons avec `./myscipt.sh` et obtenons la sortie souhaitée techcodeview.com.
4) Expliquez le but de la commande echo dans les scripts shell.
Le commande d'écho est utilisé pour afficher du texte ou des variables sur le terminal. Il est couramment utilisé pour imprimer des messages, des valeurs de variables et générer une sortie de programme.
commande d'écho
Dans cet exemple, nous devons exécuter `echo` directement sur le terminal, car cela fonctionne de la même manière dans le script shell.
5) Comment attribuer une valeur à une variable dans un script shell ?
Les variables reçoivent des valeurs à l'aide de l'opérateur d'affectation =.
Par exemple:
#!/bin/bash
# Attribuer une valeur à une variable
nom = Jayesh
âge=21
echo $nom $ageExplication:
- La variable de nom reçoit la valeur Jayesh.
- La variable âge reçoit la valeur 21.
- echo est utilisé pour imprimer et `$name` `$age` est utilisé pour appeler la valeur stockée dans les variables.
6) Écrivez un script shell qui prend le nom d'un utilisateur en entrée et le salue.
Créez un nom de script « exemple.sh ».
#!/bin/bash
# Demander à l'utilisateur son nom
écho Quel est ton nom ?
lire le nom
# Saluer l'utilisateur
echo Bonjour, $name ! Ravi de vous rencontrer.Explication:
- #!/bin/bash : C'est la ligne shebang. Il indique au système d'utiliser l'interpréteur Bash pour exécuter le script.
- # Demander à l'utilisateur son nom : Ceci est un commentaire. Il fournit un contexte sur le code à venir. Les commentaires sont ignorés par l'interprète.
- echo Quel est ton nom ? : La commande echo permet d'afficher le texte entre guillemets doubles sur le terminal.
- read name : la commande read attend que l'utilisateur saisisse du texte et le stocke dans le nom de la variable.
- echo Bonjour, $name ! Ravi de vous rencontrer. : Cette ligne utilise la commande echo pour imprimer un message de bienvenue qui inclut la valeur de la variable name, qui a été collectée à partir de l'entrée de l'utilisateur.
7) Comment ajouter des commentaires à un script shell ?
Commentaires dans les scripts shell sont utilisés pour fournir des explications ou un contexte au code. Ils sont ignorés par l’interprète et ne sont destinés qu’aux humains lisant le script. Vous pouvez ajouter des commentaires en utilisant le symbole #.
#!/bin/bash
# Ceci est un commentaire expliquant le but du script
écho gfg8) Créez un script shell qui vérifie si un fichier existe dans le répertoire actuel.
Voici un script qui vérifie si un fichier nommé exemple.txt existe dans le répertoire courant :
#!/bin/bash
fichier=exemple.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
echo Le fichier existe : $file
autre
echo Fichier introuvable : $file
êtreExplication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=example.txt : Cette ligne définit le fichier de variables et lui attribue la valeur example.txt. Vous pouvez le remplacer par le nom du fichier que vous souhaitez rechercher.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. La condition [ -e $file ] vérifie si le fichier spécifié par la valeur de la variable file existe. L'indicateur -e est utilisé pour vérifier l'existence du fichier.
- echo Le fichier existe : $file : Si la condition est vraie (c'est-à-dire que le fichier existe), cette ligne imprime un message indiquant que le fichier existe, ainsi que le nom du fichier.
- else : si la condition est fausse (c'est-à-dire que le fichier n'existe pas), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé, ainsi que le nom du fichier.
- fi : Cette ligne marque la fin de l'instruction if.
Recherche de fichier
9) Quelle est la différence entre les guillemets simples (') et les guillemets doubles () dans les scripts shell ?
Les guillemets simples (') et les guillemets doubles () sont utilisés pour délimiter des chaînes dans les scripts shell, mais ils ont des comportements différents :
- Guillemets simples : tout ce qui se trouve entre guillemets simples est traité comme une chaîne littérale. Les noms de variables et la plupart des caractères spéciaux ne sont pas développés.
- Guillemets doubles : les variables et certains caractères spéciaux entre guillemets doubles sont développés. Le contenu est soumis à la substitution de variables et à la substitution de commandes.
#!/bin/bash
abcd=Bonjour
echo '$abcd' # Sortie : $abcd
echo $abcd # Sortie : Bonjour10) Comment utiliser les arguments de ligne de commande dans un script shell ?
Arguments de ligne de commande sont des valeurs fournies à un script lors de son exécution. Ils sont accessibles dans le script à l'aide de variables spéciales telles que $1, $2, etc., où $1 représente le premier argument, $2 représente le deuxième argument, et ainsi de suite.
Par exemple: Si le nom de notre script dans `example.sh`
#!/bin/bash
echo Nom du script : $0
echo Premier argument : $1
echo Deuxième argument : $2Si nous exécutons le script avec `.example.sh hello_1 hello_2`, il affichera :
arguments CLI
11) Comment utilisez-vous la boucle for pour parcourir une liste de valeurs ?
Créez un nom de script « exemple.sh ».
#!/bin/bash
fruits=(pomme banane cerise datte)
pour les fruits dans ${fruits[@]} ; faire
echo Fruit actuel : $fruit
faitExplication:
La ligne `fruits=` crée un tableau nommé fruits avec quatre éléments : pomme, banane, cerise et date.
- pour les fruits dans ${fruits[@]} ; do : Cette ligne démarre une boucle for. Voici ce que signifie chaque partie :
- pour fruit : ceci déclare une variable de boucle appelée fruit. À chaque itération de la boucle, fruit contiendra la valeur de l'élément actuel du tableau fruits.
- ${fruits[@]} : Il s'agit d'une extension de tableau qui prend tous les éléments du tableau de fruits. La syntaxe ${…} garantit que chaque élément est traité comme un élément distinct.
- do : ce mot-clé marque le début du corps de la boucle.
- echo Fruit actuel : $fruit : À l'intérieur de la boucle, cette ligne utilise la commande echo pour afficher la valeur actuelle de la variable de boucle fruit. Il imprime un message comme Current fruit: apple pour chaque fruit du tableau.
- done : ce mot-clé marque la fin du corps de la boucle. Il indique au script que la boucle est terminée.
pour la boucle
12) Écrivez un script shell qui calcule la somme des entiers de 1 à N à l'aide d'une boucle.
Créez un nom de script « exemple.sh ».
#!/bin/bash
echo Entrez un nombre (N) :
lire N
somme=0
pour (( i=1; i<=$N; i++ )); faire
somme=$((somme + i))
fait
echo La somme des entiers de 1 à $N est : $sumExplication:
Le script commence par vous demander de saisir un nombre (N) en utilisant read. Ce nombre déterminera combien de fois la boucle sera exécutée.- La somme variable est initialisée à 0. Cette variable gardera une trace de la somme des entiers.
- La boucle for commence par for (( i=1; i<=$N; i++ )). Cette structure de boucle permet de répéter un ensemble d'actions un certain nombre de fois, en l'occurrence de 1 à la valeur de N.
- À l'intérieur de la boucle, ces choses se produisent :
- i=1 définit la variable de boucle i sur 1 au début de chaque itération.
- La condition de boucle i<=$N vérifie si i est toujours inférieur ou égal au nombre N donné.
- Si la condition est vraie, le corps de la boucle s'exécute.
- sum=$((sum + i)) calcule la nouvelle valeur de sum en y ajoutant la valeur actuelle de i. Cela additionne les entiers de 1 à la valeur i actuelle.
- Après chaque itération, i++ incrémente la valeur de i de 1.
- La boucle continue de s'exécuter jusqu'à ce que la condition i<=$N devienne fausse (lorsque i devient supérieur à N).
- Une fois la boucle terminée, le script affiche la somme des entiers de 1 au nombre N saisi.
13) Créez un script qui recherche un mot spécifique dans un fichier et compte ses occurrences.
Créez un nom de script `word_count.sh`
#!/bin/bash
echo Saisissez le mot à rechercher :
lire mot_cible
echo Entrez le nom du fichier :
lire le nom du fichier
count=$(grep -o -w $target_word $filename | wc -l)
echo Le mot « $target_word » apparaît $count fois dans « $filename ».Explication:
- echo Saisissez le mot à rechercher : : Cette ligne affiche un message demandant à l'utilisateur de saisir le mot qu'il souhaite rechercher dans un fichier.
- read target_word : cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée target_word.
- echo Entrez le nom du fichier : : Cette ligne affiche un message demandant à l'utilisateur de saisir le nom du fichier dans lequel il souhaite effectuer la recherche.
- read filename : Cette ligne lit l'entrée fournie par l'utilisateur et la stocke dans une variable nommée filename.
- count=$(grep -o -w $target_word $filename | wc -l) : Cette ligne effectue le travail principal du script. Décomposons-le davantage :
- grep -o -w $target_word $filename : Cette partie de la commande recherche les occurrences du target_word dans le nom de fichier spécifié. Les options -o et -w garantissent que seules les correspondances de mots entiers sont prises en compte.
- | : Il s'agit d'un canal qui prend la sortie de la commande précédente et l'envoie en entrée à la commande suivante.
- wc -l : Cette partie de la commande utilise la commande wc pour compter le nombre de lignes dans l'entrée. L'option -l compte spécifiquement les lignes.
- La commande entière calcule le nombre d'occurrences du mot_cible dans le fichier et attribue ce nombre à la variable count.
14) Expliquez les différences entre la sortie standard (stdout) et l'erreur standard (stderr).
La principale différence entre la sortie standard (stdout) et l'erreur standard (stderr) est la suivante :
- Sortie standard (sortie standard) : Il s’agit du flux de sortie par défaut vers lequel va la sortie régulière d’une commande. Il est affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant>.
- Erreur standard (stderr) : Il s'agit du flux de sortie des messages d'erreur et des avertissements. Il est également affiché par défaut sur le terminal. Vous pouvez le rediriger vers un fichier en utilisant 2>.
15) Expliquez le concept d'instructions conditionnelles dans les scripts shell.
Instructions conditionnelles dans les scripts shell nous permettent de prendre des décisions et de contrôler le déroulement de notre script en fonction de certaines conditions. Ils permettent à notre script d'exécuter différents ensembles de commandes selon qu'une condition particulière est vraie ou fausse. Les principales instructions conditionnelles dans les scripts shell sont l'instruction if, l'instruction elif (facultatif) et l'instruction else (facultatif).
Voici la structure de base d’une instruction conditionnelle dans les scripts shell :
si [condition]; alors
# Commandes à exécuter si la condition est vraie
elif [ autre_condition ]; alors
# Commandes à exécuter si another_condition est vraie (facultatif)
autre
# Commandes à exécuter si aucune des conditions n'est vraie (facultatif)
êtreExplication:
- [ condition ] = Commande qui évalue la condition et renvoie un statut de sortie vrai (0) ou faux (différent de zéro).
- then = C'est un mot-clé qui indique que les commandes qui le suivent seront exécutées si la condition est évaluée comme vraie.
- elif = (abréviation de else if) C'est une section qui nous permet de spécifier des conditions supplémentaires à vérifier.
- else = c'est une section qui contient des commandes qui seront exécutées si aucune des conditions n'est vraie.
- fi = C'est un mot-clé qui marque la fin du bloc conditionnel.
16) Comment lire les lignes d'un fichier dans un script shell ?
À lire des lignes à partir d'un fichier dans un script shell, nous pouvons utiliser diverses méthodes, mais une approche courante consiste à utiliser une boucle while en combinaison avec la commande read. Voici comment nous pouvons procéder :
#!/bin/bash
fichier=/home/jayeshkumar/jayesh.txt
# Vérifiez si le fichier existe
si [ -e $fichier ]; alors
while IFS= read -r ligne ; faire
echo Ligne lue : $line
# Ajoutez votre logique de traitement ici
fait <$fichier
autre
echo Fichier introuvable : $file
êtreExplication:
- #!/bin/bash : Il s'agit de la ligne shebang qui spécifie l'interpréteur (/bin/bash) à utiliser pour exécuter le script.
- file=/home/jayeshkumar/jayesh.txt : Cette ligne définit le fichier de variables et attribue le chemin complet au fichier jayesh.txt dans le répertoire /home/jayeshkumar. Modifiez ce chemin pour qu'il corresponde au chemin réel du fichier que vous souhaitez lire.
- si [ -e $fichier ]; then : Cette ligne commence une instruction if. Il vérifie si le fichier spécifié par la variable $file existe. L'indicateur -e vérifie l'existence du fichier.
- while IFS= read -r ligne ; do : Cette ligne initie une boucle while qui lit les lignes du fichier.
- IFS= : IFS (Internal Field Separator) est défini sur une valeur vide pour préserver les espaces de début et de fin.
- read -r line : ceci lit la ligne actuelle du fichier et la stocke dans la ligne variable.
- echo Line read : $line : Cette ligne imprime le contenu de la ligne qui a été lue dans le fichier. La variable $line contient le contenu de la ligne courante.
- # Ajoutez votre logique de traitement ici : Il s'agit d'un commentaire fictif dans lequel vous pouvez ajouter votre propre logique pour traiter chaque ligne. Par exemple, vous pouvez analyser la ligne, extraire des informations ou effectuer des actions spécifiques en fonction du contenu.
- done <$file : Ceci marque la fin de la boucle while. Le < $file redirige le contenu du fichier à lire par la boucle.
- else : si le fichier n'existe pas (la condition dans l'instruction if est fausse), le script exécute le code sous la branche else.
- echo File not found : $file : Cette ligne imprime un message d'erreur indiquant que le fichier spécifié n'a pas été trouvé.
- fi : Cette ligne marque la fin de l'instruction if.
lecture d'un fichier
Ici , nous avons utilisé ` mot de passe ` pour obtenir le chemin du répertoire courant.
17) Écrivez une fonction dans un script shell qui calcule la factorielle d'un nombre donné.
Voici le script quicalculer la factorielled'un nombre donné.
#!/bin/bash
# Définir une fonction pour calculer factorielle
calculer_factorial() {
num=$1
fait=1
pour ((i=1; i<=num; i++)); faire
fait=$((fait * i))
fait
écho $fait
}
# Inviter l'utilisateur à saisir un numéro
echo Entrez un numéro :
lire num_entrée
# Appelez la fonction calculate_factorial avec le numéro d'entrée
factorial_result=$(calculate_factorial $input_num)
# Afficher le résultat factoriel
echo Factorielle de $input_num est : $factorial_resultExplication:
- Le script commence par la ligne shebang #!/bin/bash pour spécifier l'interpréteur.
- calculate_factorial() est défini comme une fonction. Il faut un argument, num, qui est le nombre pour lequel la factorielle doit être calculée.
- A l'intérieur de la fonction, fact est initialisé à 1. Cette variable stockera le résultat factoriel.
- La boucle for parcourt de 1 au nombre donné (num). À chaque itération, il multiplie la valeur actuelle du fait par l'indice de boucle i.
- Une fois la boucle terminée, la variable de fait contient la factorielle calculée.
- Le script invite l'utilisateur à saisir un nombre en utilisant read.
- La fonction calculate_factorial est appelée avec le numéro fourni par l'utilisateur et le résultat est stocké dans la variable factorial_result.
- Enfin, le script affiche le résultat factoriel calculé.
Factorielle
18) Comment gérez-vous les signaux comme Ctrl+C dans un script shell ?
Dans un script shell, vous pouvez gérer des signaux tels que Ctrl+C (également appelé SIGINT) à l'aide de la commande trap. Ctrl+C génère un signal SIGINT lorsque l'utilisateur appuie dessus pour interrompre le script ou le programme en cours d'exécution. En utilisant la commande trap, vous pouvez spécifier les actions à entreprendre lorsqu'un signal particulier est reçu. Voici comment gérer les signaux tels que Ctrl+C dans un script shell :
#!/bin/bash
nettoyer() {
echo Script interrompu. Effectuer un nettoyage…
# Ajoutez vos actions de nettoyage ici
sortie 1
}
# Configurer un piège pour appeler la fonction de nettoyage lorsque Ctrl+C (SIGINT) est reçu
nettoyage des pièges SIGINT
# Reste de votre script
écho En cours d'exécution…
dormir 10
écho Terminé.La gestion des signaux est importante pour rendre les scripts robustes et garantir qu'ils gèrent les interruptions inattendues avec élégance. Vous pouvez personnaliser la fonction de nettoyage en fonction de vos besoins spécifiques, comme la fermeture de fichiers, l'arrêt de processus ou la journalisation d'informations avant la fermeture du script.
Explication:
- #!/bin/bash : Cette ligne shebang spécifie l'interpréteur à utiliser pour exécuter le script.
- cleanup() { … } : Ceci définit une fonction nommée cleanup. Dans cette fonction, vous pouvez inclure toutes les actions qui doivent être effectuées lorsque le script est interrompu, telles que la fermeture de fichiers, la libération de ressources ou l'exécution d'autres tâches de nettoyage.
- trap cleanup SIGINT : La commande trap est utilisée pour configurer un gestionnaire de signal. Dans ce cas, il précise que lorsque le signal SIGINT (Ctrl+C) est reçu, la fonction de nettoyage doit être exécutée.
- echo Running…, sleep 10, echo Finished. : Ce ne sont que des exemples de commandes pour simuler l’exécution d’un script.
19) Créez un script qui recherche et supprime les lignes en double dans un fichier texte.
Voici notre script Linux dans lequel nous supprimerons les lignes en double d'un fichier texte.
#!/bin/bash
fichier_entrée=entrée.txt
fichier_de sortie=sortie.txt
trier $input_file | uniq> $fichier_sortie
echo Les lignes en double ont été supprimées avec succès.Explication:
- Le script commence par un shebang (#!/bin/bash), qui indique que le script doit être interprété à l'aide du shell Bash.
- La variable input_file est définie sur le nom du fichier d'entrée contenant des lignes en double (remplacez-le par le nom réel de votre fichier d'entrée).
- La variable output_file est définie sur le nom du fichier de sortie où les doublons seront supprimés (remplacez-le par le nom du fichier de sortie souhaité).
- Le script utilise la commande sort pour trier les lignes du fichier d'entrée. Le tri des lignes garantit que les lignes en double sont regroupées.
- Les lignes triées sont ensuite transmises via la commande uniq, qui supprime les lignes consécutives en double. La sortie de ce processus est redirigée vers le fichier de sortie.
- Une fois les doublons supprimés, le script imprime un message de réussite.
suppression de ligne en double
Ici, nous utilisons ` chat ` pour afficher le texte à l'intérieur du fichier texte.
20) Écrivez un script qui génère un mot de passe aléatoire sécurisé.
Voici notre script pour générer un mot de passe aléatoire sécurisé.
#!/bin/bash
# Fonction pour générer un mot de passe aléatoire
créer un mot de passe() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Appelez la fonction et stockez le mot de passe généré
mot de passe=$(generate_password)
echo Mot de passe généré : $passwordRemarque : L'utilisateur peut en conséquence modifier la longueur de son mot de passe en remplaçant le chiffre « 12 ».
Explication:
- Le script commence par un shebang (#!/bin/bash), indiquant qu'il doit être interprété à l'aide du shell Bash.
- La fonction generate_password est définie pour générer un mot de passe aléatoire. Voici comment cela fonctionne:
- tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
- Fold -w 12 divise les données aléatoires filtrées en lignes de 12 caractères chacune.
- head -n 1 sélectionne la première ligne, nous donnant effectivement une séquence aléatoire de caractères de longueur 12.
- La variable password reçoit le résultat de l'appel de la fonction generate_password.
- Enfin, le mot de passe généré est affiché en utilisant echo.
21) Écrivez un script shell qui calcule la taille totale de tous les fichiers d'un répertoire.
Voici un script shell pour calculer la taille totale de tous les fichiers d'un répertoire.
#!/bin/bash
répertoire=/chemin/vers/votre/répertoire
total_size=$(du -csh $directory | grep total | awk '{print $1}')
echo Taille totale des fichiers dans $directory : $total_sizeExplication:
- Le script commence par le shebang #!/bin/bash, indiquant qu'il doit être interprété à l'aide du shell Bash.
- La variable directory est définie sur le chemin du répertoire pour lequel vous souhaitez calculer la taille totale du fichier. Remplacez /path/to/your/directory par le chemin réel.
- La commande du est utilisée pour estimer l'utilisation de l'espace fichier. Les options utilisées sont :
- -c : produit un total général.
- -s : affiche uniquement la taille totale du répertoire spécifié.
- -h : tailles d'impression dans un format lisible par l'homme (par exemple, Ko, Mo, Go).
- La sortie de du est redirigée vers grep total pour filtrer la ligne qui contient la taille totale.
- awk '{print $1}' est utilisé pour extraire le premier champ (taille totale) de la ligne.
- La taille totale calculée est stockée dans la variable total_size.
- Enfin, le script affiche la taille totale en utilisant echo.
Taille totale des fichiers
Ici , nous avons utilisé ` mot de passe ` pour voir le chemin du répertoire actuel.
22) Expliquez la différence entre les instructions if et elif dans les scripts shell.
Fonctionnalité `if`Staiftement Déclaration `elif` But Expliquez la différence entre les instructions if et elif dans les scripts shell. Fournit des conditions alternatives pour vérifier lorsque la condition if initiale est fausse. usage Utilisé pour la condition initiale. Utilisé après la condition if initiale pour vérifier des conditions supplémentaires. nombre de blocs Ne peut en avoir qu'un seul if block. Peut avoir plusieurs blocs elif, mais un seul bloc else (facultatif). Exécution Exécute le bloc de code associé à l'instruction if si la condition est vraie. Si la condition est fausse, le bloc else (s'il est présent) est exécuté (facultatif). Vérifie chaque condition elif dans l'ordre. Si une condition elif est vraie, le bloc de code correspondant est exécuté et le script quitte l'intégralité du bloc conditionnel. Si aucune des conditions elif n'est vraie, le bloc else (s'il est présent) est exécuté. Structures imbriquées Peut être imbriqué dans d’autres blocs if, elif ou else. Ne peut pas être imbriqué dans un autre bloc elif, mais peut être utilisé dans un bloc if ou else. Comprenons-le par un exemple.
#!/bin/bash
nombre=5
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
autre
echo $le nombre n'est pas supérieur à 10
être
écho ---
si [ $numéro -gt 10 ]; alors
echo $le nombre est supérieur à 10
elif [ $numéro -eq 10 ]; alors
echo $number est égal à 10
autre
echo $le nombre est inférieur à 10
êtreExplication:
Dans cet exemple, le premier bloc if vérifie si le nombre est supérieur à 10. Sinon, il imprime un message indiquant que le nombre n'est pas supérieur à 10. Le deuxième bloc avec les instructions elif vérifie plusieurs conditions séquentiellement jusqu'à ce que l'une d'entre elles soit vraie. Dans ce cas, puisque la valeur du nombre est 5, le résultat sera :
différence if_elif
23) Comment utiliser une boucle while pour exécuter des commandes à plusieurs reprises ?
Une boucle while est utilisée dans les scripts shell pour exécuter de manière répétée un ensemble de commandes tant qu'une condition spécifiée est vraie. La boucle continue d'exécuter les commandes jusqu'à ce que la condition devienne fausse.
Voici la syntaxe de base d’une boucle while :
tandis que [ condition ]; faire
# Commandes à exécuter
faitExplication:
- La boucle « while » commence par le mot-clé « while » suivi d'une condition entre crochets « [ ] ».
- Le corps de la boucle, qui contient les commandes à exécuter, est entouré des mots-clés « do » et « done ».
- La boucle vérifie d'abord la condition. Si la condition est vraie, les commandes contenues dans le corps de la boucle sont exécutées. Une fois le corps de la boucle exécuté, la condition est à nouveau vérifiée et le processus se répète jusqu'à ce que la condition devienne fausse.
Exemple: Si nous voulons imprimer des nombres de 1 à 5
#!/bin/bash
compteur=1
while [ $counter -le 5 ]; faire
Numéro d'écho : $compteur
compteur=$((compteur + 1))
faitExplication:
- La variable compteur est mise à 1.
- La boucle while vérifie si la valeur du compteur est inférieure ou égale à 5. Tant que cette condition est vraie, la boucle continue de s'exécuter.
- À l'intérieur de la boucle, la valeur actuelle du compteur est imprimée en utilisant echo.
- Le compteur est incrémenté de 1 à l'aide de l'expression $((counter + 1)).
boucle while
24) Créez un script shell qui recherche et répertorie tous les fichiers vides dans un répertoire.
Script Shell que vous pouvez utiliser pour rechercher et lister tous les fichiers vides dans un répertoire à l'aide des commandes `find` et `stat` :
#!/bin/bash
répertoire=$1″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
être
echo Fichiers vides dans $répertoire :
trouver $répertoire -type f -videExplication:
- ` #!/bin/bash ` : C'est ce qu'on appelle un shebang, et cela indique au système d'exploitation d'utiliser le shell Bash pour interpréter et exécuter le script.
- ` répertoire=$1″ ` : Cette ligne attribue le premier argument de ligne de commande (noté $1) à la variable ` annuaire `.
- ` if [ -z $répertoire ]; alors ` : Cette ligne démarre une instruction if qui vérifie si le ` annuaire ` La variable est vide (-z teste une chaîne vide).
- ` echo Utilisation : 0 $ ` : Si le répertoire est vide, cette ligne affiche un message d'utilisation, où ` 0 $ ` représente le nom du script.
- ` sortie 1 ` : Cette ligne quitte le script avec un code de sortie de ` 1 `, indiquant une erreur.
- ` être ` : Cette ligne marque la fin du ` si `déclaration.
- ` si [ ! -d $répertoire ]; alors ` : Cela démarre une autre instruction if pour vérifier si le répertoire fourni existe (` -d ` teste un répertoire).
- ` echo Erreur : « $directory » n'est pas un répertoire valide. ` : Si le répertoire fourni n'existe pas, cette ligne affiche un message d'erreur.
- ` sortie 1 ` : Quitte le script avec un code de sortie de ` 1 `.
- ` être ` : marque la fin de la seconde ` si` déclaration.
- ` echo Fichiers vides dans $répertoire : ` : Si tout est valide jusqu'à présent, cette ligne imprime un message indiquant que le script listera les fichiers vides dans le répertoire spécifié.
- ` trouver $répertoire -type f -vide ` : Cette ligne utilise le ` trouver ` commande pour rechercher des fichiers vides (` -vide `) de type fichiers normaux (` -type f `) dans le répertoire spécifié. Il répertorie ensuite ces fichiers vides.
Trouver des fichiers vides
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/
25) Quel est le but de la commande read dans les scripts shell ?
La commande read dans les scripts shell permet au script de vous demander des informations. C'est comme lorsqu'un ordinateur vous pose une question et attend votre réponse. Ceci est utile pour les scripts qui nécessitent que vous tapiez quelque chose ou lorsque le script doit travailler avec des informations provenant de fichiers. La commande read aide le script à s'arrêter et à attendre ce que vous tapez, puis il peut utiliser ces informations pour faire plus de choses dans le script.
Syntaxe de la commande read :
read variable_name>
Exemple : Si nous voulons prendre le nom comme entrée de l'utilisateur pour l'imprimer.
#!/bin/bash
echo Veuillez entrer votre nom :
lire le nom
echo Bonjour, $name !lire le nom
En résumé, la commande read est utilisée pour capturer les entrées utilisateur ou les données des fichiers dans des scripts shell, rendant les scripts plus interactifs et polyvalents.
26) Écrivez un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
Voici un script shell qui convertit tous les noms de fichiers d'un répertoire en minuscules.
#!/bin/bash
répertoire=$1″
if [ -z $répertoire ]; alors
echo Utilisation : 0 $
sortie 1
êtresi [ ! -d $répertoire ]; alors
echo Erreur : « $directory » n'est pas un répertoire valide.
sortie 1
êtrecd $répertoire || sortie 1
pour le fichier dans * ; faire
si [ -f $fichier ]; alors
nouveau nom=$(echo $file | tr 'A-Z' 'a-z')
[ $file != $nouveau nom ] && mv $file $nouveau nom
être
faitExplication:
- #!/bin/bash : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- répertoire=$1″ : Cette ligne attribue le premier argument de ligne de commande au répertoire de variables.
- if [ -z $répertoire ]; alors : Cette ligne vérifie si la variable répertoire est vide (aucun argument fourni lors de l'exécution du script).
- echo Utilisation : 0 $ : Si le répertoire est vide, cette ligne imprime un message d'utilisation avec le nom du script ($0).
- sortie 1 : Cette ligne quitte le script avec un code de sortie de 1, indiquant qu'une erreur s'est produite.
- F i : Cela marque la fin de la première instruction if.
- si [ ! -d $répertoire ]; alors : Cette ligne vérifie si le répertoire spécifié n'existe pas (-d teste un répertoire).
- echo Erreur : « $directory » n'est pas un répertoire valide. : Si le répertoire spécifié n'existe pas, cette ligne affiche un message d'erreur.
- sortie 1 : Quitte le script avec un code de sortie de 1.
- être : Marque la fin de la deuxième instruction if.
- cd $répertoire || sortie 1 : remplace le répertoire de travail actuel par le répertoire spécifié. Si le changement de répertoire échoue (par exemple, répertoire inexistant), le script se termine avec un code d'erreur.
- pour le fichier dans * ; faire: je pour le fichier dans * ; faire: lance une boucle qui parcourt tous les éléments du répertoire courant (* correspond à tous les noms de fichiers).
- si [ -f $fichier ]; alors : Vérifie si l'élément d'itération de boucle actuel est un fichier normal (-f teste un fichier normal).
- nouveau nom=$(echo $file | tr 'A-Z' 'a-z') : Convertit le nom de fichier actuel ($file) en minuscules à l'aide de la commande tr et stocke le résultat dans la variable newname.
- [ $file != $nouveau nom ] && mv $file $nouveau nom : Compare le nom de fichier d'origine avec le nouveau nom de fichier en minuscules. S'ils sont différents, il renomme le fichier à l'aide de la commande mv.
- être : Marque la fin de l’instruction if interne.
- fait : Marque la fin de la boucle.
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/test
27) Comment utiliser des opérations arithmétiques dans un script shell ?
Les opérations arithmétiques peuvent être effectuées dans un script shell à l'aide de diverses méthodes intégrées. Le shell fournit des mécanismes pour des calculs arithmétiques simples utilisant l'expansion arithmétique comme :
- Expansion arithmétique ($((…)))
- Utilisation de la commande expr
- Utilisation de la commande let
Voici notre script Shell expliquant les trois méthodes d'opérations arithmétiques.
#!/bin/bash
num1=10
num2=5#Expansion arithmétique ($((…)))
résultat=$((num1 + num2))
echo Somme : $résultat#Utilisation de la commande expr
somme=$(expr $num1 + $num2)
echo Somme : $somme#Utilisation de la commande let
soit somme = num1 + num2
echo Somme : $sommeExplication:
- `#!/bin/bash` : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- `num1=10` et ` num2=5` : Ces lignes attribuent les valeurs 10 et 5 aux variables ` num1 ' et ' numéro2 `, respectivement.
- `#Expansion arithmétique ($((…)))` : Il s'agit d'un commentaire indiquant le début de la section qui démontre le développement arithmétique.
- `résultat=$((num1 + num2))` : Cette ligne utilise le développement arithmétique pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` résultat `variable.
- `somme d'écho : $résultat` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` résultat `variable.
- `#Utilisation de la commande expr` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` expression ` commande pour les opérations arithmétiques.
- `somme=$(expr $num1 + $num2)` : Cette ligne utilise le ` expression ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` somme `variable. Notez que le ` expression La commande ` nécessite des espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.
- `#Utilisation de la commande let` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` laisser ` commande pour les opérations arithmétiques.
- `soit somme = num1 + num2″` : Cette ligne utilise le ` laisser ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et attribue le résultat au ` somme `variable. Le ' laisser La commande ` ne nécessite pas d'espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.
arithmétique
28) Créez un script qui vérifie si un hôte réseau est accessible.
Voici un simple script shell qui utilise la commande ping pour vérifier si un hôte réseau est accessible :
#!/bin/bash
hôte = 1 $″
si [ -z $hôte ]; alors
echo Utilisation : 0 $
sortie 1
être
ping -c 4 $hôte
si [ $? -éq 0 ]; alors
echo $host est accessible.
autre
echo $host n'est pas accessible.
êtreExplication:
- Il prend un nom d'hôte ou une adresse IP comme argument et vérifie si l'argument est fourni.
- Si aucun argument n'est fourni, il affiche un message d'utilisation et se termine.
- Il utilise la commande ping avec l'option -c 4 pour envoyer quatre requêtes d'écho ICMP à l'hôte spécifié.
- Une fois la commande ping exécutée, elle vérifie l'état de sortie ($?). Si l'état de sortie est 0, cela signifie que l'hôte est joignable et le script imprime un message de réussite. Sinon, il imprime un message d'échec.
Note : Nous devons fournir un nom d'hôte comme argument lors de l'exécution du script. Ici, nous avons utilisé google.com
29) Écrivez un script Shell pour trouver le plus grand élément d'un tableau :
Voici un script shell pour trouver le plus grand élément d'un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(3 56 24 89 67)# Initialiser une variable pour stocker la valeur maximale, en commençant par le premier élément
max=${tableau[0]}
# Parcourir le tableau
pour num dans ${array[@]} ; faire
# Comparez chaque élément avec le maximum actuel
si ((num> max)); alors
max=$num
être
fait# Imprimer la valeur maximale
echo L'élément maximum dans le tableau est : $max
Explication:
- ` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
- ` tableau=(3 56 24 89 67) ` : Le tableau est déclaré et initialisé avec des valeurs.
- ` max=${tableau[0]} ` : `max` est initialisé avec le premier élément du tableau.
- ` pour num dans ${array[@]} ; faire ` : Une boucle `for` est utilisée pour parcourir les éléments du tableau.
- ` si ((num> max)); alors ` : Une instruction `if` vérifie si l'élément actuel `num` est supérieur au maximum actuel `max`.
- ` max=$num` : Si`num ` est supérieur à `max`, `max` est mis à jour avec la valeur de num.
- ` fait ` : La boucle `for` est fermée.
- ` echo L'élément maximum dans le tableau est : $max ` : Enfin, le script imprime la valeur maximale trouvée dans le tableau.
le plus grand nombre
30) Écrivez un script pour calculer la somme des éléments dans un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(1 65 22 19 94)
# Initialiser une variable pour stocker la somme
somme=0
# Parcourez le tableau et ajoutez chaque élément à la somme
pour num dans ${array[@]} ; faire
matin=$((matin + matin))
fait# Imprimer la somme
echo La somme des éléments du tableau est : $sum
Explication:
` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
` tableau=(1 65 22 19 94) ` : Le tableau est déclaré et initialisé avec des valeurs.
` somme=0 `:` somme ` est initialisé à zéro pour contenir la somme des éléments.
` pour num dans ${array[@]} ; faire ` : Un ` pour ` La boucle est utilisée pour parcourir les éléments du tableau.
` matin=$((matin + matin)) ` : À l'intérieur de la boucle, chaque élément ` sur une ` est ajouté au ` somme `variable.
` fait ` : Le ` pour ` La boucle est fermée.
`echo La somme des éléments du tableau est : $sum` : Enfin, le script imprime la somme de tous les éléments du tableau.
Somme des éléments
En savoir plus sur les scripts Shell
- Différence entre shell et noyau
- Différence entre Bind Shell et Reverse Shell
- Introduction au Linux Shell et aux scripts Shell
Conclusion
Nous tous, les geeks, savons que le script shell est très utile pour augmenter la productivité du travail et pour gagner du temps. Donc, dans cet article, nous avons couvert 30 exemples de scripts shell très utiles et les plus conman . Nous espérons que ce guide complet sur l'exemple de script shell vous aidera à tout comprendre sur les scripts shell.
- sortie 1 : Cette ligne quitte le script avec un code de sortie de 1, indiquant qu'une erreur s'est produite.
- F i : Cela marque la fin de la première instruction if.
- si [ ! -d $répertoire ]; alors : Cette ligne vérifie si le répertoire spécifié n'existe pas (-d teste un répertoire).
- echo Erreur : « $directory » n'est pas un répertoire valide. : Si le répertoire spécifié n'existe pas, cette ligne affiche un message d'erreur.
- sortie 1 : Quitte le script avec un code de sortie de 1.
- être : Marque la fin de la deuxième instruction if.
- cd $répertoire || sortie 1 : remplace le répertoire de travail actuel par le répertoire spécifié. Si le changement de répertoire échoue (par exemple, répertoire inexistant), le script se termine avec un code d'erreur.
- pour le fichier dans * ; faire: je pour le fichier dans * ; faire: lance une boucle qui parcourt tous les éléments du répertoire courant (* correspond à tous les noms de fichiers).
- si [ -f $fichier ]; alors : Vérifie si l'élément d'itération de boucle actuel est un fichier normal (-f teste un fichier normal).
- nouveau nom=$(echo $file | tr 'A-Z' 'a-z') : Convertit le nom de fichier actuel ($file) en minuscules à l'aide de la commande tr et stocke le résultat dans la variable newname.
- [ $file != $nouveau nom ] && mv $file $nouveau nom : Compare le nom de fichier d'origine avec le nouveau nom de fichier en minuscules. S'ils sont différents, il renomme le fichier à l'aide de la commande mv.
- être : Marque la fin de l’instruction if interne.
- fait : Marque la fin de la boucle.
Note : Nous devons fournir un répertoire comme argument lors de l'exécution du script. Ici, nous avons utilisé le chemin du répertoire actuel home/jayeshkumar/test
27) Comment utiliser des opérations arithmétiques dans un script shell ?
Les opérations arithmétiques peuvent être effectuées dans un script shell à l'aide de diverses méthodes intégrées. Le shell fournit des mécanismes pour des calculs arithmétiques simples utilisant l'expansion arithmétique comme :
- Expansion arithmétique ($((…)))
- Utilisation de la commande expr
- Utilisation de la commande let
Voici notre script Shell expliquant les trois méthodes d'opérations arithmétiques.
#!/bin/bash
num1=10
num2=5#Expansion arithmétique ($((…)))
résultat=$((num1 + num2))
echo Somme : $résultat#Utilisation de la commande expr
somme=$(expr $num1 + $num2)
echo Somme : $somme#Utilisation de la commande let
soit somme = num1 + num2
echo Somme : $somme
Explication:
- `#!/bin/bash` : C'est le shebang, précisant que le script doit être interprété à l'aide du shell Bash.
- `num1=10` et ` num2=5` : Ces lignes attribuent les valeurs 10 et 5 aux variables ` num1 ' et ' numéro2 `, respectivement.
- `#Expansion arithmétique ($((…)))` : Il s'agit d'un commentaire indiquant le début de la section qui démontre le développement arithmétique.
- `résultat=$((num1 + num2))` : Cette ligne utilise le développement arithmétique pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` résultat `variable.
- `somme d'écho : $résultat` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` résultat `variable.
- `#Utilisation de la commande expr` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` expression ` commande pour les opérations arithmétiques.
- `somme=$(expr $num1 + $num2)` : Cette ligne utilise le ` expression ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et stocke le résultat dans le ` somme `variable. Notez que le ` expression La commande ` nécessite des espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.
- `#Utilisation de la commande let` : Ceci est un commentaire indiquant le début de la section qui démontre l'utilisation du ` laisser ` commande pour les opérations arithmétiques.
- `soit somme = num1 + num2″` : Cette ligne utilise le ` laisser ` commande pour calculer la somme de ` num1 ' et ' numéro2 ` et attribue le résultat au ` somme `variable. Le ' laisser La commande ` ne nécessite pas d'espaces autour des opérateurs.
- `echo Somme : $somme` : Cette ligne imprime la somme calculée en utilisant la valeur stockée dans le fichier ` somme `variable.

arithmétique
28) Créez un script qui vérifie si un hôte réseau est accessible.
Voici un simple script shell qui utilise la commande ping pour vérifier si un hôte réseau est accessible :
#!/bin/bash
hôte = 1 $″
si [ -z $hôte ]; alors
echo Utilisation : 0 $
sortie 1
être
ping -c 4 $hôte
si [ $? -éq 0 ]; alors
echo $host est accessible.
autre
echo $host n'est pas accessible.
être
Explication:
- Il prend un nom d'hôte ou une adresse IP comme argument et vérifie si l'argument est fourni.
- Si aucun argument n'est fourni, il affiche un message d'utilisation et se termine.
- Il utilise la commande ping avec l'option -c 4 pour envoyer quatre requêtes d'écho ICMP à l'hôte spécifié.
- Une fois la commande ping exécutée, elle vérifie l'état de sortie ($?). Si l'état de sortie est 0, cela signifie que l'hôte est joignable et le script imprime un message de réussite. Sinon, il imprime un message d'échec.
Note : Nous devons fournir un nom d'hôte comme argument lors de l'exécution du script. Ici, nous avons utilisé google.com
29) Écrivez un script Shell pour trouver le plus grand élément d'un tableau :
Voici un script shell pour trouver le plus grand élément d'un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(3 56 24 89 67)# Initialiser une variable pour stocker la valeur maximale, en commençant par le premier élément
j'essaie d'entrermax=${tableau[0]}
# Parcourir le tableau
pour num dans ${array[@]} ; faire
# Comparez chaque élément avec le maximum actuel
si ((num> max)); alors
max=$num
être
fait# Imprimer la valeur maximale
echo L'élément maximum dans le tableau est : $max
Explication:
- ` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
- ` tableau=(3 56 24 89 67) ` : Le tableau est déclaré et initialisé avec des valeurs.
- ` max=${tableau[0]} ` : `max` est initialisé avec le premier élément du tableau.
- ` pour num dans ${array[@]} ; faire ` : Une boucle `for` est utilisée pour parcourir les éléments du tableau.
- ` si ((num> max)); alors ` : Une instruction `if` vérifie si l'élément actuel `num` est supérieur au maximum actuel `max`.
- ` max=$num` : Si`num ` est supérieur à `max`, `max` est mis à jour avec la valeur de num.
- ` fait ` : La boucle `for` est fermée.
- ` echo L'élément maximum dans le tableau est : $max ` : Enfin, le script imprime la valeur maximale trouvée dans le tableau.

le plus grand nombre
30) Écrivez un script pour calculer la somme des éléments dans un tableau.
#!/bin/bash
# Déclarer un tableau
tableau=(1 65 22 19 94)
# Initialiser une variable pour stocker la somme
somme=0
# Parcourez le tableau et ajoutez chaque élément à la somme
pour num dans ${array[@]} ; faire
matin=$((matin + matin))
fait# Imprimer la somme
echo La somme des éléments du tableau est : $sum
Explication:
` #!/bin/bash ` : La ligne shebang spécifie que le script doit être interprété à l'aide du shell Bash.
` tableau=(1 65 22 19 94) ` : Le tableau est déclaré et initialisé avec des valeurs.
` somme=0 `:` somme ` est initialisé à zéro pour contenir la somme des éléments.
` pour num dans ${array[@]} ; faire ` : Un ` pour ` La boucle est utilisée pour parcourir les éléments du tableau.
` matin=$((matin + matin)) ` : À l'intérieur de la boucle, chaque élément ` sur une ` est ajouté au ` somme `variable.
` fait ` : Le ` pour ` La boucle est fermée.
`echo La somme des éléments du tableau est : $sum` : Enfin, le script imprime la somme de tous les éléments du tableau.

Somme des éléments
En savoir plus sur les scripts Shell
- Différence entre shell et noyau
- Différence entre Bind Shell et Reverse Shell
- Introduction au Linux Shell et aux scripts Shell
Conclusion
Nous tous, les geeks, savons que le script shell est très utile pour augmenter la productivité du travail et pour gagner du temps. Donc, dans cet article, nous avons couvert 30 exemples de scripts shell très utiles et les plus conman . Nous espérons que ce guide complet sur l'exemple de script shell vous aidera à tout comprendre sur les scripts shell.