Les scripts shell sont une partie importante de l'automatisation des processus sous Linux. Les scripts vous aident à écrire une séquence de commandes dans un fichier, puis à les exécuter.
Cela vous fait gagner du temps car vous n'avez pas à écrire certaines commandes encore et encore. Vous pouvez effectuer efficacement les tâches quotidiennes et même les programmer pour une exécution automatique.
Vous pouvez également définir certains scripts à exécuter au démarrage, tels que l'affichage d'un message particulier lors du lancement d'une nouvelle session ou la définition de certaines variables d'environnement.
Les applications et les utilisations des scripts sont nombreuses, alors allons-y.
Dans cet article, vous apprendrez :
- Qu'est-ce qu'un shell bash ?
- Qu'est-ce qu'un script bash et comment l'identifier ?
- Comment créer votre premier script bash et l'exécuter.
- La syntaxe de base des scripts shell.
- Comment voir les scripts programmés d'un système.
- Comment automatiser les scripts en les planifiant via des tâches cron.
La meilleure façon d'apprendre est de pratiquer. Je vous encourage fortement à suivre en utilisant Replit. Vous pouvez accéder à un shell Linux en cours d'exécution en quelques minutes.
Introduction au shell Bash
La ligne de commande Linux est fournie par un programme appelé shell. Au fil des ans, le programme shell a évolué pour répondre à diverses options.
Différents utilisateurs peuvent être configurés pour utiliser différents shells. Mais la plupart des utilisateurs préfèrent s'en tenir au shell par défaut actuel. Le shell par défaut pour de nombreuses distributions Linux est le GNU Bourne-Again Shell (bash). Bash est remplacé par Bourne shell (sh
).
Lorsque vous lancez le shell pour la première fois, il utilise un script de démarrage situé dans le .bashrc
ou .bash_profile
fichier qui permet de personnaliser le comportement du shell.
Lorsqu'un shell est utilisé de manière interactive, il affiche un $
lorsqu'il attend une commande de l'utilisateur. C'est ce qu'on appelle l'invite du shell.
[username@host ~]$
Si le shell s'exécute en tant que root, l'invite est remplacée par #
. L'invite du shell superutilisateur ressemble à ceci :
[root@host ~]#
Bash est très puissant car il peut simplifier certaines opérations difficiles à accomplir efficacement avec une interface graphique. N'oubliez pas que la plupart des serveurs n'ont pas d'interface graphique et qu'il est préférable d'apprendre à utiliser les pouvoirs d'une interface de ligne de commande (CLI).
Qu'est-ce qu'un script bash ?
Un script bash est une série de commandes écrites dans un fichier. Ceux-ci sont lus et exécutés par le programme bash. Le programme s'exécute ligne par ligne.
Par exemple, vous pouvez naviguer vers un certain chemin, créer un dossier et générer un processus à l'intérieur à l'aide de la ligne de commande.
Vous pouvez effectuer la même séquence d'étapes en enregistrant les commandes dans un script bash et en l'exécutant. Vous pouvez exécuter le script autant de fois que vous le souhaitez.
Comment identifier un script bash ?
Extension de fichier de .sh
.
Par convention de nommage, les scripts bash se terminent par un .sh
. Cependant, les scripts bash peuvent fonctionner parfaitement sans le sh
extension.
Les scripts commencent par un bash bang.
Les scripts sont également identifiés par un shebang
. Shebang est une combinaison de bash #
et bang !
suivi le chemin du shell bash. C'est la première ligne du script. Shebang dit au shell de l'exécuter via bash shell. Shebang est simplement un chemin absolu vers l'interpréteur bash.
Vous trouverez ci-dessous un exemple de déclaration shebang.
#! /bin/bash
Le chemin du programme bash peut varier. Nous verrons plus tard comment l'identifier.
Droits d'exécution
Les scripts ont des droits d'exécution pour l'utilisateur qui les exécute.
Un droit d'exécution est représenté par x
. Dans l'exemple ci-dessous, mon utilisateur a le rwx
(lecture, écriture, exécution) des droits sur le fichier test_script.sh
Couleur du fichier
Les scripts exécutables apparaissent dans une couleur différente du reste des fichiers et dossiers.
Dans mon cas, les scripts avec des droits d'exécution apparaissent en vert.
Comment créer votre premier script Bash
Créons un script simple dans bash qui affiche Hello World
.
Créer un fichier nommé hello_world.sh
touch hello_world.sh
Trouvez le chemin vers votre shell bash.
which bash
Dans mon cas, le chemin est /usr/bin/bash
et je l'inclurai dans le shebang.
Écrivez la commande.
Nous allons echo
"hello world" à la console.
Notre script ressemblera à ceci :
#! usr/bin/bash
echo "Hello World"
Editez le fichier hello_world.sh
à l'aide d'un éditeur de texte de votre choix et ajoutez-y les lignes ci-dessus.
Fournir des droits d'exécution à votre utilisateur.
Modifiez les permissions du fichier et autorisez l'exécution du script en utilisant la commande ci-dessous :
chmod u+x hello_world.sh
chmod
modifie les droits existants d'un fichier pour un utilisateur particulier. Nous ajoutons +x
à l'utilisateur u
.
Exécuter le script.
Vous pouvez exécuter le script des manières suivantes :
./hello_world.sh
bash hello_world.sh
.
Voici le résultat :
La syntaxe de base des scripts bash
Comme tout autre langage de programmation, les scripts bash suivent un ensemble de règles pour créer des programmes compréhensibles par l'ordinateur. Dans cette section, nous étudierons la syntaxe des scripts bash.
Comment définir des variables
Nous pouvons définir une variable en utilisant la syntaxe variable_name=value
. Pour obtenir la valeur de la variable, ajoutez $
avant la variable.
#!/bin/bash
# A simple variable example
greeting=Hello
name=Tux
echo $greeting $name
Tux est aussi le nom de la mascotte de Linux, le pingouin.
Expressions arithmétiques
Vous trouverez ci-dessous les opérateurs pris en charge par bash pour les calculs mathématiques :
Opérateur | Utilisation |
---|---|
+ | ajout |
- | soustraction |
* | multiplication |
/ | division |
** | exponentiation |
% | module |
Exécutons quelques exemples.
Les expressions numériques peuvent également être calculées et stockées dans une variable en utilisant la syntaxe ci-dessous :
var=$((expression))
Essayons un exemple.
#!/bin/bash
var=$((3+9))
echo $var
Les fractions ne sont pas correctement calculées en utilisant les méthodes ci-dessus et tronquées.
Pour les calculs décimaux , nous pouvons utiliser bc
commande pour obtenir la sortie à un nombre particulier de décimales. bc
(Bash Calculator) est une calculatrice en ligne de commande qui prend en charge le calcul jusqu'à un certain nombre de décimales.
echo "scale=2;22/7" | bc
Où scale
définit le nombre de décimales requises dans la sortie.
Comment lire les entrées utilisateur
Parfois, vous aurez besoin de recueillir les entrées de l'utilisateur et d'effectuer les opérations pertinentes.
En bash, nous pouvons prendre l'entrée de l'utilisateur en utilisant le read
commande.
read variable_name
Pour inviter l'utilisateur avec un message personnalisé, utilisez le -p
drapeau.
read -p "Enter your age" variable_name
Exemple :
#!/bin/bash
echo "Enter a numner"
read a
echo "Enter a numner"
read b
var=$((a+b))
echo $var
Opérateurs logiques de comparaison numérique
La comparaison est utilisée pour vérifier si les instructions sont évaluées à true
ou false
. Nous pouvons utiliser les opérateurs ci-dessous pour comparer deux déclarations :
Fonctionnement | Syntaxe | Explication |
---|---|---|
Égalité | num1 -eq num2 | est-ce que num1 est égal à num2 |
Supérieur à égal à | num1 -ge num2 | est num1 supérieur ou égal à num2 |
Supérieur à | num1 -gt num2 | est num1 supérieur à num2 |
Inférieur à | num1 -le num2 | est num1 inférieur ou égal à num2 |
Moins de | num1 -lt num2 | est num1 inférieur à num2 |
Pas égal à | num1 -ne num2 | est-ce que num1 n'est pas égal à num2 |
Syntaxe :
if [ conditions ]
then
commands
fi
Exemple :
Comparons deux nombres et trouvons leur relation :
read x
read y
if [ $x -gt $y ]
then
echo X is greater than Y
elif [ $x -lt $y ]
then
echo X is less than Y
elif [ $x -eq $y ]
then
echo X is equal to Y
fi
Sortie :
Énoncés conditionnels (prise de décision)
Les conditions sont des expressions qui évaluent une expression booléenne (true
ou false
). Pour vérifier les conditions, nous pouvons utiliser if
, if-else
, if-elif-else
et conditions imbriquées.
La structure des instructions conditionnelles est la suivante :
if...then...fi
déclarationsif...then...else...fi
déclarationsif..elif..else..fi
if..then..else..if..then..fi..fi..
(Conditions imbriquées)
Syntaxe :
if [[ condition ]]
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
Pour créer des comparaisons significatives, nous pouvons utiliser AND -a
et OU -o
aussi.
La déclaration ci-dessous se traduit par :Si a
est supérieur à 40 et b
est inférieur à 6.
if [ $a -gt 40 -a $b -lt 6 ]
Exemple :Trouvons le type de triangle en lisant les longueurs de ses côtés.
read a
read b
read c
if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL
elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE
fi
Sortie :
Cas de test #1
Cas de test #2
Cas de test #3
Boucle et saut
Les boucles For vous permettent d'exécuter des instructions un certain nombre de fois.
Boucle avec des nombres :
Dans l'exemple ci-dessous, la boucle itérera 5 fois.
#!/bin/bash
for i in {1..5}
do
echo $i
done
Boucle avec des chaînes :
Nous pouvons également parcourir les chaînes.
#!/bin/bash
for X in cyan magenta yellow
do
echo $X
done
Boucle While
Les boucles While vérifient une condition et bouclent jusqu'à ce que la condition reste true
. Nous devons fournir une instruction de compteur qui incrémente le compteur pour contrôler l'exécution de la boucle.
Dans l'exemple ci-dessous, (( i += 1 ))
est l'instruction du compteur qui incrémente la valeur de i
.
Exemple :
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
Lecture de fichiers
Supposons que nous ayons un fichier sample_file.txt
comme indiqué ci-dessous :
Nous pouvons lire le fichier ligne par ligne et imprimer la sortie à l'écran.
#!/bin/bash
LINE=1
while read -r CURRENT_LINE
do
echo "$LINE: $CURRENT_LINE"
((LINE++))
done < "sample_file.txt"
Sortie :
Comment exécuter des commandes avec des back-ticks
Si vous avez besoin d'inclure la sortie d'une commande complexe dans votre script, vous pouvez écrire la déclaration à l'intérieur des tiques arrière.
Syntaxe :
var=` commands
`
Exemple :Supposons que nous voulions obtenir la sortie d'une liste de points de montage avec tmpfs
en leur nom. Nous pouvons créer une déclaration comme celle-ci :df -h | grep tmpfs
.
Pour l'inclure dans le script bash, nous pouvons l'entourer de back ticks.
#!/bin/bash
var=`df -h | grep tmpfs`
echo $var
Sortie :
Comment obtenir des arguments pour les scripts à partir de la ligne de commande
Il est possible de donner des arguments au script à l'exécution.
$@
représente la position des paramètres, à partir de un.
#!/bin/bash
for x in $@
do
echo "Entered arg is $x"
done
Exécutez-le comme ceci :
./script arg1 arg2
Comment automatiser des scripts en planifiant via des tâches cron
Cron est un utilitaire de planification de tâches présent dans les systèmes de type Unix. Vous pouvez programmer des tâches pour qu'elles s'exécutent quotidiennement, hebdomadairement, mensuellement ou à une heure précise de la journée. L'automatisation sous Linux repose fortement sur les tâches cron.
Ci-dessous la syntaxe pour programmer les crons :
# Cron job example
* * * * * sh /path/to/script.sh
Ici, *
représente représente minute(s) heure(s) jour(s) mois(s) jour(s) de la semaine, respectivement.
Vous trouverez ci-dessous quelques exemples de planification de tâches cron.
CALENDRIER | VALEUR PLANIFIÉE |
---|---|
5 0 * 8 * | A 00h05 en août. |
5 4 * * 6 | A 04h05 le dimanche. |
0 22 * * 1-5 | À 22h00 tous les jours de la semaine du lundi au vendredi. |
Vous pouvez en savoir plus sur cron en détail dans cet article de blog.
Comment vérifier les scripts existants dans un système
Utiliser crontab
crontab -l
répertorie les scripts déjà programmés pour un utilisateur particulier.
Utilisation de la commande de recherche
Le find
La commande aide à localiser les fichiers en fonction de certains modèles. Comme la plupart des scripts se terminent par .sh
, nous pouvons utiliser le script de recherche comme ceci :
find . -type f -name "*.sh"
Où,
.
représente le répertoire courant. Vous pouvez modifier le chemin en conséquence.-type f
indique que le type de fichier que nous recherchons est un fichier texte.*.sh
indique de faire correspondre tous les fichiers se terminant par.sh
.
Si vous souhaitez en savoir plus sur la commande de recherche en détail, consultez mon autre message.
Conclusion
Dans ce didacticiel, nous avons appris les bases des scripts shell. Nous avons examiné des exemples et une syntaxe qui peuvent nous aider à écrire des programmes significatifs.
Quelle est votre chose préférée que vous avez apprise dans ce tutoriel ? Faites-le moi savoir sur Twitter !
Vous pouvez lire mes autres articles ici.
Vecteur de travail créé par macrovector - www.freepik.com