Ceci est le premier article d'une série axée sur les scripts Gnu Bash. Ce n'est pas un cours complet sur la programmation bash, mais à la fin, vous devriez apprendre une ou deux choses. Je veux dire, des choses utiles qui vous faciliteront la vie.
La paresse est la clé du succès
Parfois, j'ai besoin d'exécuter la commande1, suivie de la commande2, puis de la commande3 et enfin de la commande4. Au bout d'un moment, j'ai besoin de répéter cette séquence de commandes. Mais comme je suis très intelligent, j'ai parcouru l'historique des commandes avec la touche fléchée vers le haut pour ne pas recommencer.
Puis, après un certain temps, je dois le refaire, et je sais que je devrai le refaire plusieurs fois à l'avenir. Par exemple, chaque jour, vous démarrez votre ordinateur, vous connectez à votre Linux basé sur Debian et vérifiez les mises à jour de paquets :
# apt-get update (...) # apt-get upgrade (...) # apt-get dist-upgrade
Au lieu de taper ces 52 caractères à chaque fois, vous pouvez les mettre dans un script comme celui-ci :
#!/bin/bash #this is not a Hello world apt-get update apt-get upgrade apt-get dist-upgrade
Vous pouvez enregistrer ce script sous "up.sh" et le lendemain matin après votre connexion, exécutez simplement :./up.sh . Juste comme ça, vous avez enregistré 44 frappes, vous devenez paresseux ou quoi ?.
Non, nous ne le sommes pas, si vous essayez d'exécuter "tel quel", vous obtiendrez une belle erreur d'autorisation refusée . C'est parce que je n'ai jamais dit de définir l'autorisation d'exécution :
# chmod +x up.sh
Plus tard, je vous montrerai comment être encore plus paresseux.
Outre les commandes sur les dernières lignes, vous avez remarqué le caractère numérique (#) sur les deux premières lignes. La toute première ligne s'appelle shebang et indique au système quel interpréteur utilise pour exécuter les commandes sur le script.
Le second n'est qu'un commentaire et vous pouvez le mettre partout :ce qui se cache derrière ce signe sera ignoré. Par exemple :
# this is a comment command1 # this also is a comment. Should explain what that command do #command2. # This was command... but as was commented out, bash would ignore it
Il est important (pour moi du moins) d'ajouter au moins quelques commentaires pour vous rappeler ce que fait le script et pourquoi. Également, dans les gros scripts, pour ajouter des commentaires pour expliquer des blocs, des sections ou des parties du script. Les commentaires vous aideront lorsque vous reviendrez à votre script quelques mois, semaines, voire jours plus tard.
Devenir plus paresseux
Il n'est pas nécessaire de taper à chaque fois que nous nous connectons à nos systèmes. Nous pouvons faire en sorte que l'ordinateur exécute ce script pour nous. Vous pouvez ajouter la ligne "./up.sh ” à l'un des endroits suivants :
- .bashrc . Cela exécutera le script chaque fois que vous lancerez un shell sans connexion (c'est-à-dire le terminal inclus sur votre bureau, comme xterm)
- .bash_profile Ceci est pour le shell de connexion, par exemple lorsque vous tapez votre utilisateur et votre mot de passe sur la console ou que vous vous connectez à votre système via ssh.
- .xinitrc comme .bashrc mais pour les sessions graphiques. Vous utilisez probablement un bureau moderne avec ses propres outils pour démarrer automatiquement les applications, utilisez-les.
- une entrée dans votre fichier crontab, donc il s'exécute périodiquement.
Variables
Nous avons besoin de "quelque chose" pour stocker des valeurs, par exemple une entrée utilisateur, un paramètre de la ligne de commande. Ce « quelque chose » est une variable. Au fait, je suppose que vous savez déjà ce qu'est une variable.
Pour déclarer une variable, vous pouvez
- attribuer une valeur à un nom de variable. Exemple :x=1
- saisissez l'utilisateur pour une valeur avec la commande de lecture :read x
- un paramètre de la ligne de commande. J'y reviens très bientôt
- il existe d'autres façons de définir une variable que nous verrons plus tard
Pour "appeler" une variable, tapez le signe dollar suivi du nom de la variable. Par exemple si on veut imprimer à l'écran la valeur de la variable $x :
echo "x value: $x" echo "Type y vaue:" read y echo "You typed: $y"
Les paramètres de la ligne de commande sont stockés dans des variables numérotées. Par exemple, utilisez le premier argument, appelez la variable $1. Pour le 2e, appelez 2 $. Etc. La variable $0 stocke le nom du fichier de script. Dans mon premier exemple not-a-hello-world, la valeur de $0 est "up.sh".
Tableaux
Les tableaux sont définis de la même manière, mais avec les valeurs entre parenthèses. Comme ceci :
array=(uno dos tres)
Vous pouvez ajouter ultérieurement d'autres valeurs au tableau avec l'index entre crochets :
array[3]=cuatro
Vous pouvez "appeler" un élément de tableau avec des accolades pour le nom du tableau et des crochets pour la position de l'élément (commençant par 0) :
$ echo ${array[0]} uno
Si vous n'utilisez pas l'accolade, bash affichera une [position de l'élément] littérale, par exemple :
$ echo $array[0] uno[0]
Vous pouvez appeler tout le tableau avec un @ comme index comme ceci :
$ echo ${array[@]} uno dos tres cuatro
Enfin, vous pouvez obtenir le nombre d'éléments d'un tableau avec le signe dièse (le même que j'ai dit avant que ce soit pour les commentaires) comme ceci :
echo ${#array[@]}
4
Il y a beaucoup d'autres choses que nous pouvons faire avec les tableaux et d'autres types de tableaux, comme les tableaux associatifs. Mais cela suffit pour aujourd'hui.
Restez à l'écoute
Jusqu'à présent, je n'ai rien montré de très "woaaah “. Il n'y a même pas une seule capture d'écran dans cet article. Mais mon intention vers la fin de cette série - peut-être trois articles ou plus - est de donner des outils pour faire quelque chose d'utile. Je ne sais pas si vous deviendrez un gourou des scripts bash, mais vous pouvez essayer 😉
Dans le prochain, je couvrirai certaines structures de contrôle, pipelines et redirection. En attendant, vous pouvez consulter la page de manuel de bash, mais au moins pour moi, c'est un peu déroutant