GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel de script Bash pour les débutants

Si vous débutez avec les systèmes Linux, des termes tels que "Shell scripting" ou "Scripts bash ” peut être assez commun – Mais que signifient-ils? Avant d'entrer dans les détails, l'apprentissage des scripts Bash peut vous aider à gagner du temps dans l'exécution et l'exécution de diverses tâches système et à mieux comprendre la ligne de commande Linux (Terminal) et à automatiser plusieurs tâches système.

Qu'est-ce que Bash ?

Bash, acronyme de "Bourne-Again-Shell," est un shell Unix ou un interpréteur de langage de commande pour le système d'exploitation GNU. Il a été le principal Shell pour les distributions Linux et les versions Apple macOS avant macOS Catalina. Bash est également disponible pour Windows 10 via le sous-système Windows pour Linux.

Bash s'exécute généralement dans une fenêtre de texte communément appelée Terminal, où les utilisateurs saisissent des commandes pour effectuer diverses tâches. Bash peut également exécuter des commandes écrites dans un fichier, une méthode appelée "bash scripting".

Différence entre les scripts Bash et les scripts Shell

Les scripts Shell et les scripts Bash ne sont pas les mêmes choses. Avec les scripts Bash, vous utilisez explicitement le shell bash. D'un autre côté, les scripts Shell peuvent être un mot assez large puisque nous avons d'autres shells disponibles que Bash. Certains des plus courants incluent Korn (ksh), le shell C (csh), le shell Z (zsh) et le shell Bash (sh). Cependant, il ne serait pas surprenant de trouver des personnes utilisant indifféremment les scripts bash et les scripts shell pour signifier la même chose. Notre article sur les 6 meilleurs shells open source pour Linux donne une description détaillée de ces shells.

Dans cet article, nous examinerons les scripts Bash. Par défaut, de nombreuses distributions Linux disponibles utilisent le shell Bash. Consultez notre article sur les 6 meilleures distributions Linux pour les débutants. Pour confirmer le shell que vous utilisez sur votre distribution Linux actuelle, exécutez la commande sur le terminal.

écho $SHELL

À partir de l'image ci-dessus, vous pouvez voir que l'interpréteur par défaut de mon système est bash. Actuellement, j'utilise Ubuntu 20.04 LTS. Plongeons !

Comprendre les scripts Bash

Les scripts bash sont des fichiers texte contenant des commandes bash qui sont exécutées pour effectuer diverses tâches. Pour écrire ces scripts, vous n'avez besoin que d'un simple éditeur de texte comme gedit, leaf pad, vim, nano et bien plus encore. N'oubliez pas de sauvegarder vos scripts avec un .sh extension et sous forme de texte brut et non de texte enrichi. L'un de mes éditeurs préférés que j'utilise pour écrire des scripts est l'éditeur nano.

Nom, attribution d'autorisations et exécution d'un script Bash

Comme expliqué ci-dessus, assurez-vous d'utiliser l'extension .sh pour vos scripts bash. Par exemple, vous pouvez avoir un script avec le nom fosslinux_backup.sh . Cependant, il serait préférable que vous soyez prudent lorsque vous nommez vos scripts. Par exemple, la plupart des gens aiment enregistrer la plupart de leurs scripts en tant que "test". Inconnu de la plupart, il existe une commande intégrée Unix appelée test, qui vérifie les types de fichiers et compare les valeurs. Vous pouvez utiliser la commande which pour vérifier s'il existe un programme portant le même nom que celui de votre script afin d'éviter tout conflit de programme.

quelle [commande]e.gquel test

À partir de la sortie ci-dessus, nous pouvons voir que test est déjà une commande intégrée. Par conséquent, pour éviter tout conflit entre les programmes, je ne nommerai aucun de mes scripts comme "test".

Pour rendre le script exécutable pour chaque utilisateur, utilisez la commande ci-dessous :

chmod +x [script.sh]

Pour rendre le script exécutable pour l'utilisateur actuel, utilisez la commande ci-dessous :

chmod u+x [script.sh]

Maintenant, pour exécuter le script, exécutez la commande ci-dessous :

./[script_name]

Avec la méthode ci-dessus, vous vous rendrez compte que vous devrez utiliser le cd commande pour se déplacer dans le répertoire contenant le script ou transmettre le chemin d'accès au script. Cependant, il existe une solution de contournement à cela. Enregistrez vos scripts dans le bin répertoire présent dans le répertoire de base.

Avec les mises à jour récentes, la plupart des distributions ne sont pas livrées avec le bin dossier par défaut. Il vous sera donc demandé de le créer manuellement. En plaçant vos scripts dans ce dossier, vous pouvez exécuter le script en tapant son nom sur le Terminal sans utiliser le cd et ./ commandes.

Consignes pour les scripts bash

Avant d'écrire votre premier script, vous devez comprendre certaines directives lors de l'écriture de scripts.

  • Tous vos scripts doivent commencer par la ligne "#!/bin/bash".
  • Mettre chaque commande sur une nouvelle ligne.
  • Chaque commentaire commence par un # symbole.
  • Les commandes sont entourées de () crochets.

Le #!/bin/bash (Hash-Bang Hack) est le chemin vers le shell que nous allons utiliser. Si vous utilisez un autre shell, vous devrez modifier ce chemin. Nous comprenons que tous les commentaires commencent par le # symbole. Cependant, lorsqu'il est suivi d'un (!) mark dans le Hash-Bang Hack, le script est forcé de s'exécuter avec le shell pointé par cette ligne. Dans notre cas, c'est le shell Bash.

Votre premier script Bash

Comme la plupart des langages de programmation, nous écrirons un script qui imprime le "Hello World" déclaration lors de son exécution. Ouvrez votre éditeur de texte préféré et collez les commandes ci-dessous. Enregistrez le fichier texte sous fossHelloWorld.sh ou tout autre nom qui n'est pas une commande intégrée.

#!/bin/bash#Ce script imprimera 'Hello World' sur le Terminalecho "Hello World"

Une fois le fichier enregistré, rendez-le exécutable en exécutant la commande ci-dessous :

chmod +x fossHelloWorld.sh

Maintenant, lancez-le avec la commande ci-dessous :

./fossHelloWorld.sh

Le script ci-dessus ne comporte que trois lignes. Le premier est le Hash-Bang Hack, dont nous avons discuté ci-dessus, le second est un commentaire et le troisième est la commande qui sera exécutée. Attention, les commentaires ne sont jamais exécutés.

Examinons d'autres fonctionnalités de script bash que vous pouvez utiliser.

Commande d'écho

La commande Echo est utilisée pour imprimer la sortie sur la ligne de commande ou le terminal Linux. Si vous êtes un développeur et que vous avez déjà travaillé avec PHP, vous devez également avoir rencontré cette commande. Écrivons un petit script bash pour montrer comment cette commande fonctionne.

#!/bin/bash#Imprimons la première ligneecho "This is Fosslinux.com - With a new line"#Imprimons la deuxième déclaration sans nouvelle ligneecho -n "This is Fosslinux - No new Line" 

Enregistrez votre script, attribuez les autorisations requises et exécutez-le.

Pour comprendre le code, la première commande echo imprime une instruction et passe à la ligne suivante. La deuxième commande echo a le -n argument qui empêche le script d'aller à la ligne suivante. Vous pouvez utiliser de nombreuses autres options avec la commande Echo, y compris des variables, comme nous le verrons ci-dessous.

Variables

Les variables sont une partie commune et nécessaire de tout langage de programmation. On peut déclarer des variables Bash de plusieurs manières. Lorsque vous attribuez une valeur à une variable, vous n'avez pas besoin d'utiliser de symboles. Cependant, lors de l'appel de la valeur de la variable, vous devrez utiliser le $ signe au début de la variable.

Vous pouvez utiliser des variables sur le Terminal ou en tant que scripts. Exécutez les commandes ci-dessous sur votre Terminal.

myWebsite ="Fosslinux.com"echo $myWebsite

Créons maintenant un script bash qui prend deux entrées de l'utilisateur et les stocke dans des variables $x et $y . Le script vérifiera alors si les deux valeurs sont égales ou non.

#!/bin/bashecho "Entrez le premier nombre"lire aecho "Entrez le deuxième nombre"lire bif [[ $a -eq $b ]]thenecho "Les nombres sont égaux"elseecho "Les nombres ne sont pas égaux"fi 

Enregistrez le script et exécutez-le. Dans l'image ci-dessous, vous pouvez voir que nous avons saisi différentes valeurs et que le script a pu vérifier si elles sont égales ou non.

Maintenant, regardons de plus près le code. Les deux premières instructions d'écho invitent l'utilisateur à saisir les premier et deuxième nombres. Le read La commande attendra que l'utilisateur entre un nombre et le stocke dans la variable spécifiée. Dans notre cas, c'est a et b . Nous avons alors une instruction if qui vérifie si les deux valeurs sont égales ou non.

Énoncé conditionnel

Dans n'importe quel langage de programmation, les instructions conditionnelles contrôlent le déroulement d'un programme. Un morceau de code ne s'exécutera que lorsqu'une condition particulière est remplie. Certaines des instructions conditionnelles les plus courantes incluent « si-alors-sinon » et « cas ». Vous trouverez ci-dessous la syntaxe de base de l'instruction if-then-else.

if [[ condition ]]thenelsefi

Jetez un œil au script ci-dessous, qui utilise l'instruction conditionnelle "if-then-else".

#!/bin/bashecho "Entrez votre âge"read ageif ((age> 18 ))thenecho "Vous pouvez aller à la fête"elsecho "Vous n'êtes pas éligible pour aller à la fête"fi

Passons en revue le script ci-dessus. Nous avons l'echo instruction qui invite les utilisateurs à entrer leur numéro d'âge. Le read La déclaration stocke l'âge entré dans une variable "âge". Nous avons ensuite une instruction conditionnelle if-then-else qui vérifie si l'âge est supérieur à 18 ans avant d'instruire l'utilisateur.

Boucles

Les boucles sont couramment utilisées lorsque vous souhaitez exécuter un morceau de code plusieurs fois. Par exemple, si je voulais faire écho à 1000 lignes de la déclaration "Bienvenue à Fosslinux", j'aurais besoin de 1000 déclarations d'écho. Cependant, avec les boucles, tout ce que j'ai à faire est de spécifier le nombre de fois que je veux que l'instruction soit répercutée ou imprimée sur le terminal. Bash prend en charge trois types de boucles; Pour la boucle, la boucle While et la boucle Until. Regardons chacun d'eux.

  • La boucle For

Une boucle For est utilisée pour parcourir une liste de données spécifiées ou un tableau. Vous trouverez ci-dessous la syntaxe de base de la boucle Bash For ;

pour Valeur dans 1 2 3 4 5 .. Ndoinstruction1instruction2instruction-Ndone

ou,

pour VALUE dans fichier1 fichier2 fichier3doinstruction1 sur $VALUEinstruction2instruction-Ndone

Jetez un œil au script ci-dessous. Il parcourt les jours de la semaine donnés et les imprime sur le terminal ligne par ligne.

#Lire un nom de jour de la semaine dans chaque itération de la boucle pour le jour dans Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanchedoecho "$day"done

Enregistrons le script sous ForLoop.sh et l'exécuter. Vous trouverez ci-dessous une capture d'écran de la sortie.

Ce n'est qu'un exemple simple de ce que vous pouvez faire avec la boucle For. Vous pouvez également le combiner avec des instructions conditionnelles pour effectuer une tâche particulière.

  • La boucle While

La boucle While exécute une tâche spécifique alors qu'une condition particulière reste vraie. À chaque itération, la boucle vérifiera d'abord la condition avant d'exécuter les instructions. Lorsque la condition est fausse, la boucle se terminera. La syntaxe de base de la boucle While bash est la suivante :

pendant que [CONDITION]do[COMMANDS]done

Par exemple, nous pouvons avoir un script qui imprimera la déclaration "Bienvenue sur FOSSLINUX.COM" 20 fois jusqu'à ce qu'une variable X soit définie sur 20. Essayons de mettre cela en pratique. Jetez un œil au script ci-dessous.

#!/bin/bashx=1while [ $x -le 20 ]doecho "Bienvenue sur FOSSLINUX.COM"x=$(( $x + 1 ))done

Enregistrons le script sous WhileLoop.sh et l'exécuter. Vous trouverez ci-dessous une capture d'écran de la sortie.

Jetons un coup d'œil au script While Loop ci-dessus. Nous déclarons d'abord une variable X en lui donnant la valeur 1. Nous créons ensuite une instruction While qui produit l'instruction "Bienvenue sur FOSSLINUX.COM" alors que X est inférieur à 20. Enfin, nous incrémentons X de un après chaque itération.

  • La boucle jusqu'à

Les boucles Bash Until sont utilisées pour exécuter un ensemble d'instructions ou de commandes tant que la condition définie est fausse. Vous trouverez ci-dessous la syntaxe de base de la boucle Until.

jusqu'à ce que [CONDITION]faites[INSTARUCTIONS/COMMANDES]faites

Semblable à la boucle While, la boucle Until évalue d'abord la condition définie avant d'exécuter les instructions ou les commandes. Si la condition est fausse, les instructions sont exécutées. La boucle est terminée lorsque la condition est évaluée à vrai. Jetez un œil à l'exemple ci-dessous.

#!/bin/bashcount=0until [ $count -gt 5 ]doecho Compteur :$count((count++))done

Après avoir enregistré et exécuté le script ci-dessus, nous obtenons le résultat ci-dessous :

Les scripts ci-dessus créent d'abord un nombre de variables et le définissent sur zéro (0). C'est la condition qui contrôle le déroulement de notre programme. La boucle Until vérifie si la valeur de comptage est supérieure à 5. Si ce n'est pas le cas, elle imprimera les instructions passées. Cependant, si la valeur est supérieure à 5, la boucle se terminera immédiatement. Enfin, nous incrémentons la valeur de comptage de 1 (count++).

Fonctions Bash

Dans la programmation et les scripts, les fonctions sont utilisées pour contenir un morceau de code réutilisable nécessaire pour effectuer une tâche particulière. Par conséquent, si vous souhaitez exécuter des commandes similaires à différentes parties de votre script, vous n'avez pas besoin d'écrire ces commandes à plusieurs reprises. Placez-les dans une fonction et exécutez la fonction à la place.
Vous trouverez ci-dessous la syntaxe de base de la fonction Bash.

nom_fonction () {}

ou,

fonction nom_fonction {}

Créons un script simple qui utilise des fonctions. Nous créons d'abord une fonction appelée "myFunction", qui génère la déclaration "Bonjour, je suis la première fonction" lorsqu'elle est appelée. La deuxième fonction, "myCities", est un peu avancée car elle prend les arguments passés. Les arguments sont donnés après l'appel du nom de la fonction. Ils sont accessibles dans la fonction en tant que $1.

#!/bin/bashmyFunction () {echo "Bonjour, je suis la première fonction"echo "Bonjour, je suis la première fonction"echo}echo "Ceci est la deuxième fonction"function myCities () {echo Hello $1}myFunctionmyCities Washington,D.CmyCities Phoenix

Après avoir enregistré et exécuté le script, nous obtenons la sortie ci-dessous.

Menus Bash

Lors de l'écriture d'un script pour effectuer une tâche avancée, vous devrez peut-être que l'utilisateur sélectionne une seule option parmi plusieurs options affichées sur le terminal. Pour y parvenir, nous utiliserons le bash select commande.

Il crée un script de menu simple qui invitera les utilisateurs à sélectionner leurs distributions Linux préférées dans une liste. Jetez un œil au script ci-dessous.

#!/bin/bash#Imprimer le message pour l'utilisateurecho "Select your favorite Linux Distribution"select distro in Ubuntu Fedora OpenSUSE DeepIN Parrot ArchLinux Kalido#Print the selected valueif [[ $distro =="Exit" ]]thenexit 0elseecho "La distribution Linux sélectionnée est $distro"fidone

Enregistrons le script sous menu.sh et exécutons-le. Nous obtenons la sortie ci-dessous.

Dans le script ci-dessus, nous avons une liste de sept distributions Linux à partir de laquelle l'utilisateur en sélectionnera une. Après avoir fait une sélection, elle est stockée dans la variable distro et imprimé plus tard en le concaténant avec la chaîne "La distribution Linux sélectionnée est." Les menus de sélection de Bash peuvent être très utiles, en particulier lorsque plusieurs scripts effectuent différentes tâches et qu'il faut sélectionner celui qu'ils souhaitent exécuter.

Arithmétique

Chaque langage de programmation prend en charge l'exécution d'opérations arithmétiques, et les scripts bash ne font pas exception. Cependant, la façon dont nous effectuons les opérations arithmétiques est un peu différente. Vous trouverez ci-dessous l'une des façons d'effectuer des opérations arithmétiques dans bash. Nous examinerons quatre types d'opérations arithmétiques :la somme, la division et la multiplication.

#!/bin/bash# Calcule le sumresult=$((70+15))# Affiche la somme valueecho "sum =$result"# Calcule la divisionresult=$((100/25))# Affiche la division valueecho " division =$result"#Calculate Multiplicationresult=$((15*15))echo "Multiplication =$result"

Enregistrons le script ci-dessus sous arithmetic.sh et exécutons-le. Nous obtenons la sortie ci-dessous.

Conclusion

Il s'agit d'un guide complet pour débutants pour démarrer avec les scripts Bash. Cependant, il y a plus à Bash que ce qui est couvert dans ce tutoriel. L'un des endroits que je recommanderais pour faire progresser vos compétences est le manuel de référence Bash de GNU. Si vous rencontrez des problèmes ou commentez ce message, n'hésitez pas à cliquer sur les commentaires ci-dessous.


Linux
  1. Tutoriel de script Bash pour les débutants :qu'est-ce que c'est, comment en écrire un et exemples de script

  2. Tutoriel de commande cd Linux pour les débutants (8 exemples)

  3. Tutoriel de commande Linux comm pour les débutants (5 exemples)

  4. Tutoriel de commande Linux df pour les débutants (8 exemples)

  5. Tutoriel de commande de date Linux pour les débutants (8 exemples)

Tutoriel de commande Linux nm pour les débutants (10 exemples)

Tutoriel de commande Linux OD pour les débutants (6 exemples)

Tutoriel de commande Linux w pour débutants (5 exemples)

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Tutoriel Bash Heredoc pour les débutants

Shell Scripting pour les débutants - Comment écrire des scripts Bash sous Linux