Vous êtes sur la page 1sur 19

La Gestion des scripts Shell

SCRIPTING SHELL ET PYTHON


Enseignant : TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

1 Introduction
Shell est un programme unique qui fournit à l'utilisateur une interface pour interagir avec le
noyau en acceptant des commandes lisibles par l'homme, puis le convertit en langage
compréhensible par le noyau. Shell, dans un système d'exploitation Linux, peut prendre des
entrées de l'utilisateur sous forme de commandes, les traiter, puis afficher une sortie. Vous pouvez
accéder à Shell à l'aide de Terminal sous Linux.
Il existe deux catégories de Shell :

• Shell de ligne de commande


• Shell graphique

1.1 Shell de ligne de commande

Un Shell est accessible par un utilisateur à l'aide d'interfaces de ligne de commande. Ainsi, il y a
des programmes comme le terminal sous Linux ou Mac et l'invite de commande dans Windows
pour obtenir des entrées sous la forme de commandes lisibles par l'homme, puis afficher la sortie
dans la même interface de ligne de commande.

1.2 Shell graphique

Le Shell graphique fournit aux utilisateurs une interface utilisateur graphique (GUI Graphical
User Interface) pour interagir, effectuer des opérations telles que l'ouverture, la fermeture et
l'enregistrement de fichiers. Les systèmes d’exploitation Windows et Ubuntu sont d'excellents
exemples de GUI Shell (Desktop), où un utilisateur n'a pas à saisir des commandes pour chaque
opération. Pourtant, derrière chaque action, il y a une commande Shell qui s'exécute pour
effectuer ces actions.

2 Qu'est-ce que BASH Shell ?


BASH (Bourne Again Shell) est l'interpréteur de ligne de commande par défaut pour la plupart
des distributions Linux de nos jours. Il s'agit d'une version mise à jour de l'ancien « Shell Bourne ».
Si vous êtes un administrateur système Linux ou un utilisateur expérimenté, vous devez avoir une
excellente connaissance des commandes Shell BASH pour effectuer les tâches quotidiennes.

2.1 Qu'est-ce que le script BASH ?

La plupart du temps, nous utilisons les commandes Shell une par une dans le terminal pour nos
tâches quotidiennes. Cependant, il arrive parfois que l’on effectue des tâches complexes ou des
tâches répétitives, ce qui implique une série de commandes exécutées dans un ordre précis et bien
déterminé. Un Shell peut également prendre des commandes en entrée d'un fichier, donc pour
faciliter notre travail, nous pouvons écrire ces commandes dans un fichier et les exécuter dans le
Shell pour éviter le travail manuel. Ces fichiers sont appelés scripts Shell.

2.2 Comprendre les scripts BASH Shell

Afin de créer un script bash nous suivrons un certain nombre d’étape :

2
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

• Etape 1 : Créer un fichier à l'aide d'un éditeur de texte avec l'extension « .sh ». L’extension
permet au système de savoir quel programme utilisé et pour nous utilisateur ou
administrateur, nous pouvons savoir immédiatement que c’est un script bash.
• Etape 2 : La première instruction à mettre dans le fichier est le « #!/bin/bash ». Cette
instruction permet au système de savoir quel programme exécutera les instructions de ce
fichier. Cette instruction s’appelle le « shebang ».
• Etape 3 : La troisième étape consiste à écrire les instructions que l’on souhaite faire
exécuter par le script.
Voici donc un exemple de fichier de script Shell :

#!/bin/bash
ls

Nous le nommerons « list.sh » et pour l’exécuter dans le terminal, nous utiliserons la commande
suivante :

$ bash list.sh

3 Avantages
Le script bash présente de nombreux avantages :

• Il automatise le travail répétitif, ce qui économise beaucoup d'efforts et de temps.


• Vous pouvez créer votre utilitaire.
• Les scripts Bash sont portables ; vous pouvez utiliser un script sur d'autres systèmes Linux
sans aucune modification.
• Il a le même ensemble de syntaxe que nous utilisons dans le terminal standard, donc
n'implique pas d'apprentissage supplémentaire.
• Vous pouvez rapidement écrire un script bash avec peu d'aide.
• Il peut fournir un débogage interactif lors de l'exécution de tâches qui aident en cas
d'erreur ou de problème.

4 Inconvénients
Le script bash peut avoir des inconvénients :

• Sujette aux erreurs, une seule erreur peut modifier le déroulement du programme et peut
être nuisible.
• Vitesse d'exécution lente.
• Avoir des structures de données très minimales, contrairement aux autres langages de
programmation.
• Pas bien adapté aux tâches importantes et complexes.
La suite de ce cours vous permettra d’acquérir les notions de base de bash scripting. La plupart
des opérations largement utilisées de bash scripting seront expliquées avec des exemples
simples de script.

3
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5 Exemples Pratiques

5.1 Hello world

Le programme « Helloworld » est le tout premier programme qu'un programmeur écrit tout en
apprenant un nouveau langage. C’est un programme qui imprime le « Bonjour le monde » en tant
que sortie. Vous pouvez donc créer un fichier helloword.sh à l'aide de l'éditeur (vim ou nano) :

$ nano helloworld.sh

Copiez maintenant les lignes ci-dessous dans « helloworld.sh » et sauvegardez-les.

#!/bin/bash
echo "Bonjour le monde"

Vous pouvez maintenant exécuter la commande :

$ bash helloworld.sh

Une autre méthode est d’abord de rendre le fichier exécutable :

$ chmod a+x helloworld.sh

Et maintenant, exécutez le fichier en utilisant la commande ci-dessous.

$ ./helloworld.sh

5.2 Utilisation de la commande Echo

La commande echo est la commande la plus courante et la plus utilisée sous Linux. Elle est utilisée
pour imprimer du texte ou une sortie dans le Bash. Il dispose de nombreuses options qui
effectuent des opérations différentes.
Syntaxe :

echo [options] [ARGUMENTS]

Voici les options :

• n est utilisé pour supprimer la nouvelle ligne


• e est utilisé pour interpréter les caractères échappés par l’antislash « \ »
• E est utilisé pour désactiver l’interprétation des caractères d’échappement, et c’est
l’option par défaut pour la commande echo.
Exemple : Créez un nouveau fichier echo.sh et ajoutez les lignes ci-dessous.

#!/bin/bash
echo "Script Scripting Shell et Python"
echo -n "Je suis un adminsys"
echo -e "\nJe \t domine \t le \t réseau"

4
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

Ici \n est un caractère d’échappement pour une nouvelle ligne, et \t est un caractère
d’échappement pour l’onglet horizontal. Exécutez le fichier avec la commande :

$ bash echo.sh

5.3 Utilisation des commentaires

Les commentaires sont des remarques d'un programmeur sur le but ou la raison du code ou de la
logique. Il est recommandé d’ajouter des commentaires pour qu’à l’avenir, tout le monde puisse
comprendre le code en lisant simplement les commentaires. Les commentaires font partie du code
mais sont ignorés par le compilateur. Dans le script bash, toute ligne commençant par « # » est
considérée comme un commentaire. Par exemple :

#!/bin/bash
# Ceci est un commentaire
echo "Je suis un commentaire"

Ici « # Ceci est un commentaire » est un commentaire, et quand nous exécuterons ce script, le
l’interpréteur ignorera la ligne.
Les commentaires peuvent être des :

• Commentaires sur une seule ligne : Dans ce cas, il faut utiliser « # »


• Commentaires sur plusieurs lignes : Dans ce cas, il faut utiliser « : ‘commentaires’ »
Exemple de commentaire sur plusieurs lignes :

#!/bin/bash
: '
Ce script calcul
La somme de 2 et 8.
'
((sum=2+8))
# le résultat sera
echo "sum is $sum"

Enregistrez le fichier sous multicommentaires.sh et exécutez-le à partir de la commande :

$ bash multicommentaires.sh

5.4 Utilisation de variables

Les variables sont des symboles nommés utilisés pour stocker temporairement des valeurs. Il peut
s'agir d'une chaîne ou d'une valeur numérique que nous pouvons utiliser à n'importe quel endroit
du script. Vous pouvez créer des variables et leur attribuer des valeurs. Les noms de variable
doivent être descriptifs afin que vous puissiez comprendre l'objectif pour lequel vous avez créé
cette variable.
Nous avons trois types de variables dans les scripts bash :

5.4.1 Variables spéciales :


Voici les autres variables prédéfinies uniques :

5
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

• $# : nombre de paramètres de ligne de commande passés au script.


• $@ : Tous les paramètres envoyés au script.
• $? : Le statut de fin du dernier processus à exécuter.
• $$ : ID de processus du script actuel.
• $USER : l'utilisateur exécutant le script.
• $HOSTNAME : Le nom d'hôte de la machine exécutant le script.
• $SECONDS : le nombre de secondes pendant lesquelles le script a été exécuté.
• $RANDOM : renvoie un nombre aléatoire.
• $LINENO : renvoie le numéro de ligne actuel du script.

5.4.2 Variables d'environnement :


Pour voir les variables d'environnement actives dans votre session Bash, utilisez la commande :

$ env | less

5.4.3 Variables définies par l’utilisateur :


Les variables définies par l’utilisateur sont celles que nous définissons dans notre script. Par
exemple, nous avons la variable « annee » pour stocker l’année en cours comme ci-dessous :

annee=2021

Et nous pourrons l’utiliser plus tard :

echo $annee

Vous pouvez voir que nous avons utilisé $ pour référencer sa valeur.
Exemple : Créez un fichier variables.sh et ajoutez-y les lignes ci-dessous.

#!/bin/bash
website=www.esgis.tg
annee=2022

# Utilisation de variables spéciales


nom=$USER
echo "Bienvenue sur $website"
echo -e "Salut $nom \n"
echo -e "Annee = $annee \n"
echo "Exécution sur $HOSTNAME"

Enregistrez-le et testez-le.

5.5 Obtenir l’entrée de l’utilisateur

Obtenir la contribution de l’utilisateur est très crucial pour rendre un script interactif, donc à cette
fin dans le script bash, nous utilisons la commande read.

6
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

#!/bin/bash
echo "Veuillez saisir votre nom : "
read nom
echo "Votre nom est $nom"

5.6 Utilisation d’arguments en ligne de commande

Nous pouvons également lire l’entrée de l’utilisateur à partir d’arguments de commande, tout
comme n’importe quel autre langage de programmation. Nous pouvons ensuite utiliser ces
arguments dans nos scripts comme $1, $2, et ainsi de suite, selon le nombre d’arguments que nous
avons fournis. Créez un fichier arguments.sh et copiez les lignes ci-dessous en elle.

#!/bin/bash
echo "Nombre d’arguments : $#"
echo "Nom : $1"
echo "Contact : $2"
echo "Nom et Prénom : $3"

Exécutez maintenant le fichier script arguments.sh avec trois paramètres supplémentaires après
son nom comme ici :

$ bash arguments.sh TOSSOU 90439985 ‘TOSSOU K. Elom Francis K.’

5.7 Utilisation d’arguments en ligne de commande avec des noms :

Il est aussi possible de lire des arguments de ligne de commande avec des noms. Pour le faire, nous
créons un fichier nommé command_line_names.sh et ajoutons le code suivant.
NB : Ici, deux arguments, X et Y sont lus par ce script et affiche la somme de X et Y.

#!/bin/bash
for arg in "$@"
do
index=$(echo $arg | cut -f1 -d=)
val=$(echo $arg | cut -f2 -d=)
case $index in
X) x=$val;;
Y) y=$val;;
*)
esac
done ((resultat=x+y))
echo "X+Y=$resultat"

Exécutez le fichier avec la commande bash et avec deux arguments de ligne de commande comme
ici :

$ bash command_line_names.sh X=45 Y=20

Vous trouverez plus de détails ici.

7
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.8 Utilisation de boucles

Les boucles sont utilisées dans tous les langages de programmation où vous devez exécuter le
même code de façon répétitive. Il existe deux types de boucles dans le script bash (while et for).
Nous verrons chacun par un.

5.8.1 Boucle « while »


Il est utilisé lorsque vous avez besoin de répéter la ligne de code un nombre inconnu de fois jusqu’à
ce qu’il satisfasse à certaines conditions. Voici sa structure :

#!/bin/bash
while [CONDITION]
do
[COMMANDS]
done

La condition est évaluée avant d’exécuter les commandes à chaque itération, et elle continuera à
s’exécuter jusqu’à ce que la condition évalue à faux, et la boucle sera terminée.

#!/bin/bash
i=0
while [ $i -le 4 ]
do
echo Number: $i
((i++))
done

5.8.2 Boucle « for »


La boucle for s’itère sur une liste d’éléments et exécute l’ensemble donné de commandes. La
boucle for dans Bash prend la forme suivante :

#!/bin/bash
for item in [LIST]
do
[COMMANDS]
done

Dans l’exemple ci-dessous, la boucle s’itérera sur chaque élément et générera une table de variable
i.

#!/bin/bash
i=2
for (( compteur=1; compteur<=10; compteur++ ))
do
((resultat= $i * $compteur))
echo "$i x $compteur = $resultat"
done

8
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.9 Utilisation de déclarations conditionnelles

Les énoncés conditionnels sont l’un des concepts fondamentaux de tout langage de
programmation. Vous prenez des décisions en fonction de certaines conditions remplies. Dans le
script bash, nous avons des blocs conditionnels.

5.9.1 Déclaration « if »
Dans un script bash, la condition « if » a plusieurs formes, mais regardons l’état de base. Vous
pouvez l’utiliser la condition « if » avec des conditions simples ou multiples. Le bloc de début et de
fin de cette instruction est défini par « if » et « fi ».

if Condition
then
INSTRUCTIONS
fi

Vous pouvez voir si les instructions commencent par évaluer l’état et exécuter les instructions
entre « then » et « fi », à condition que la condition dans if soit évaluée à True, autrement la
déclaration sera ignorée.
Créez un fichier nommé simple_if.sh et ajoutez-y ce code :

#!/bin/bash

echo -n "Saisissez un nombre : "


read VAR

if [[ $VAR -gt 10 ]]
then
echo "La variable est plus grande que 10."
fi

Il est demandé à l’utilisateur de saisir un nombre. Si le nombre est plus grand que 10 alors la sorite
« La variable est plus grande que 10. » sera affichée. Autrement, rien ne sera affiché. A titre de
comparaison :

• « -lt » est utilisé pour « plus petit que » (less than).


• « -eq » pour l’égalité (equal),
• « -ne » pour la non égalité (not equal).

5.9.2 Déclaration « if else »


Maintenant, nous allons ajouter le bloc « if else », qui s’exécutera si la condition est fausse.

if Condition
then
STATEMENTS1
else
STATEMENTS2
fi

9
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

Nous allons donc modifier l’exemple ci-dessus comme suit :

#!/bin/bash

echo -n "Sasissez un nombre: "


read VAR

if [[ $VAR -gt 10 ]]
then
echo "La variable est plus grande que 10."
else
echo "La variable est égale ou plus petite que 10."
fi

Si vous exécutez le code et entrez un nombre, le script affiche une chaîne de caractère en fonction
du fait que le nombre est supérieur ou inférieur/égal à 10.

5.9.3 Déclaration « if elif »


Bash a une syntaxe équivalente pour sinon si ainsi :

if Condition1
then
STATEMENTS1
elif Condition2
then
STATEMENTS2
else
STATEMENTS3
fi

Donc, après avoir modifié l’exemple ci-dessus comme suit :

#!/bin/bash

echo -n "Saisissez un nombre : "


read VAR

if [[ $VAR -gt 10 ]]
then
echo "La variable est plus grande que 10."
elif [[ $VAR -eq 10 ]]
then
echo "La variable est égale à 10."
else
echo "La variable est plus petite que 10."
fi

10
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.10 Utilisation de l’instruction « case »

L’instruction case est utilisée comme alternative de l’instruction if-elseif-else. Le bloc de départ
et de fin de cette déclaration est défini par « case » et « esac ». Créez un nouveau fichier nommé «
case_example.sh » et ajoutez le script suivant. La sortie du script suivant sera la même que la
précédente si l’exemple.

#!/bin/bash

echo "Devinez le numéro et tentez de remporter le premier prix"


read n
case $n in
101)
echo echo "Vous avez obtenu le 1er prix" ;;
510)
echo "Vous avez obtenu le 2ème prix" ;;
999)
echo "Vous avez obtenu le 3ème prix" ;;
*)
echo "Désolé, essayez pour la prochaine fois" ;;
esac

5.11 Utilisation des fonctions

Tout comme d’autres langages de programmation, le script bash a également le concept de


fonctions. Il permet à l’utilisateur d’écrire un bloc de code personnalisé qui sera nécessaire pour
être réutilisé encore et encore.

Syntaxe :

function NomFonction()
{
instructions
}

Maintenant, nous allons créer une fonction somme qui prendra les numéros d’entrée de
l’utilisateur et affichera la somme de ces nombres comme sortie.

#!/bin/bash
function Somme()
{
echo -n "Entrez le premier chiffre : "
read a
echo -n "Entrez le second chiffre : "
read b
echo "La somme est : $(( a+b ))"
}

Somme

11
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.12 Créer une fonction avec paramètres

Bash ne peut pas déclarer le paramètre de fonction ou les arguments au moment de la déclaration
de fonction. Mais vous pouvez utiliser des paramètres en fonction en utilisant d’autres variables.
Si deux valeurs sont passées au moment de l’appel de fonction, puis les variables $1 et $2 sont
utilisés pour lire les valeurs.
Pour mieux comprendre, nous allons créer un fichier nommé fonction_parametre.sh et ajouter
le code suivant.

#!/bin/bash

Rectangle_Area() {
area=$(($1 * $2))
echo "L’aire est : $area"
}

Rectangle_Area 10 20

NB : Ici, la fonction Rectangle_Area() calculera l’aire d’un rectangle en fonction des valeurs de
paramètres.

5.13 Passer la valeur de retour d’une fonction

La fonction Bash peut passer à la fois les valeurs numériques et les chaînes de caractères. Pour
bien comprendre nous allons créer un fichier nommé fonction_retour.sh et y ajoutez le code
suivant.

#!/bin/bash
fonction salutation() {
str= "Bonjour, $nom"
echo $str
}
echo "Saisissez votre nom : "
read nom val=$(salutation)
echo "La valeur de retour de la fonction est $val"

NB : La fonction, salutation() renvoie une valeur de chaîne dans la variable, val qui imprime plus
tard en combinant avec d’autres cordes. Vous trouverez plus de détail ici.

5.14 Afficher la longueur des chaînes de caractères

Le traitement des chaînes est une partie essentielle du script bash. Le script Bash a un moyen
simple d’obtenir la longueur d’une variable de chaîne. Dans l’exemple, nous allons voir comment :

#!/bin/bash
Str="Bienvenue dans le cours d’Administration Avancée sous Linux"
echo "La longueur est : ${#Str}"

12
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.15 Concaténation de chaînes de caractères

Le script Bash fournit un moyen facile de gérer les opérations de chaîne comme la concaténation
de plusieurs chaînes en une seule chaîne. Dans l’exemple, nous voyons comment le faire :

#!/bin/bash

string1="Scripting "
string2="Shell "
string3="et Python"
string=$string1$string2$string3
echo "$string est un cours génial !"

5.16 Extraction de chaîne de caractère

Bash donne un moyen d’extraire une sous-chaîne d’une chaîne de caractère. L’exemple ci-dessous
explique comment le faire à partir d’une position particulière. Mais avant expliquons certaines
lignes :

${string:position}

Extraire la sous-chaîne $string à la $position.

${string:position:length}

Extraire $length de caractères sous-chaîne de $string à partir de $position. Dans l’exemple ci-
dessous, Passons à la pratique :

#!/bin/bash
Str="Bienvenue au cours de SSP"
# Extraction de sous-caractères à partir de la position 15
echo ${Str:15}
# Extraction de 5 caractères de sous-chaîne à partir de la position 15
echo ${Str:15:5}

5.17 Trouver et remplacer une chaîne de caractère

Le script Bash a un moyen pratique et facile de trouver et de remplacer le texte dans une chaîne.
Il peut être utilisé de deux façons :

${string/pattern/replacement}

Cela ne remplacera que la première correspondance dans la chaîne donnée. Pour remplacer toutes
les correspondances, nous l’utiliserons comme indiqué ci-dessous :

${string//pattern/replacement}

Dans l’exemple qui suit, nous utiliserons les deux options pour vous montrer la différence à la
sortie :

13
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

#! /bin/bash
Str="Le chemin du bash est /bin/bash"
# Recherche et remplacement de la première correspondance uniquement
echo ${Str/bash/sh}
# Recherche et remplacement de toutes les correspondances
echo ${Str//bash/sh}

5.18 Vérifiez le nombre pair/impair

Dans notre prochain exemple, nous allons écrire un script bash qui acceptera un numéro d’entrée
de l’utilisateur et s’affichera si le nombre donné est un nombre pair ou impair.

#!/bin/bash
echo -n "Veuillez saisir un nombre : "
read n
num=$(expr $n % 2)
if [ $num -eq 0 ]; then
echo "C’est un nombre pair"
else
echo "C’est un nombre impair"
fi

5.19 Générer le factoriel d’un nombre

L’exemple suivant vous montrera comment générer le factoriel d’un nombre donné à l’aide d’un
script shell.

#!/bin/bash
echo -n "Veuillez saisir un nombre : "
read n
fact=1
while [ $n -gt 1 ]
do
fact=$((fact * n))
n=$((n - 1))
done
echo $fact

5.20 Création de répertoires

L’exemple suivant vous montrera comment créer un répertoire à partir d’un script shell. Le script
recevra le nom du dossier et vérifiera s’il existe déjà ou non. Dans le cas où il existe, Il affichera
comme message « Le répertoire existe déjà » sinon, il créera un répertoire.

14
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

#!/bin/bash
echo -n "Veuillez entrer le nom d’un dossier ->"
read dir
if [ -d "$dir" ]
then
echo "Le répertoire existe déjà !"
else
`mkdir $dir`
echo "Le répertoire a bien été créé !"
fi

5.21 Tester s’il existe un fichier

Il est aussi possible de vérifier l’existence d’un fichier en bash en utilisant l’option « -e » ou « -f ».
L’option « -f » est utilisée dans le script suivant pour tester l’existence du fichier. Créez un fichier
nommé « fichier_existe.sh » et ajoutez le code suivant :
NB : Ici, le nom de fichier passera de la ligne de commande.

#!/bin/bash
nom_de_fichier=$1
if [ -f "$nom_de_fichier" ]; then
echo "Le fichier existe !"
else
echo "Le fichier n’existe pas !"
fi

5.22 Lecture de fichiers

En utilisant Bash, vous pouvez lire des fichiers très efficacement. L’exemple ci-dessous montre
comment lire un fichier à l’aide de scripts shell. Créez un fichier appelé « entreprises.txt » avec
le contenu suivant.

Google
Amazone
Microsoft
Macdonald
KFC
Apple

Ce script lira le fichier ci-dessus et affichera la sortie.

#!/bin/bash
file='entreprises.txt'
while read line; do
echo $line
done < $file

15
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.23 Suppression de fichiers

À l’aide d’un script bash, vous pouvez également supprimer un fichier. Dans l’exemple, l’utilisateur
sera invité à fournir le nom de fichier comme entrée et le supprimera s’il existe. Il utilise la
commande Linux rm pour la suppression ici.

#!/bin/bash
echo -n "Veuillez saisir le nom d’un fichier ->"
read nom
rm -i $nom
echo "Fichier supprimé !"

5.24 Ajouter du contenu à un fichier

De nouvelles données peuvent être ajoutées dans n’importe quel fichier existant en utilisant
l’opérateur '>>' en bash. Créez un fichier nommé « ajout_fichier.sh »et ajoutez le code suivant
pour ajouter du nouveau contenu à la fin du fichier. Ici, « Apprentissage de script bash » sera
ajouté au fichier « SSP.txt » après l’exécution du script :

#!/bin/bash
echo "Avant l’ajout au fichier"
cat SSP.txt
echo "Apprentissage de script bash" >> SSP.txt
echo "Après l’ajout au fichier"
cat SSP.txt

5.25 Afficher le contenu des fichiers avec le nombre de lignes

Dans cet exemple, nous allons écrire un script bash qui affichera tous les fichiers dans le répertoire
actuel avec le nombre de ligne.

#!/usr/bin/env bash
for F in *
do
if [[ -f $F ]]
then
echo $F: $(cat $F | wc -l)
fi
done

Dans cet exemple, nous avons utilisé une boucle for pour obtenir tous les fichiers du répertoire,
puis utilisé la commande cat combinée à wc pour compter les lignes.

5.26 Afficher le nombre de fichiers et de dossiers

Dans notre exemple suivant, le script Linux bash trouve le nombre de fichiers ou de dossiers
présents à l’intérieur d’un répertoire donné. Il utilise la commande Linux find. Les utilisateurs
seront invités à entrer le nom du répertoire où ils souhaitent rechercher des fichiers à partir de la
ligne de commande.

16
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

#!/bin/bash

if [ -d "$@" ]; then
echo "Les fichiers trouvés : $(find "$@" -type f | wc -l)"
echo "Les dossiers trouvés : $(find "$@" -type d | wc -l)"
else
echo "[ERREUR] Veuillez réessayer."
exit 1
fi

5.27 Obtenir la date actuelle du système et le formater

Vous pouvez obtenir la date et la valeur d’heure du système actuelles à l’aide de la commande
date. Chaque partie de la valeur de la date et de l’heure peut être formatée en utilisant 'Y', 'm', 'd',
'H', 'M' et 'S'. Créez un nouveau fichier nommé formatage_date.sh et ajoutez le code suivant aux
valeurs distinctes jour, mois, année, heure, minute et seconde :

#!/bin/bash
Annee='date +%Y'
Mois='date +%m'
Jour='date +%d'
Heure='date +%H'
Minute='date +%M'
Seconde='date +%S'
echo 'date'
echo "La Date actuelle est : $Jour-$Mois-$Annee"
echo "L’heure actuelle est : $Heure:$Minute:$Seconde"

5.28 La commande « wait »

wait est une commande intégrée de Linux qui permet au système d’attendre avant de terminer
n’importe quel processus en cours d’exécution. La commande d’attente est utilisée avec un id de
processus particulier ou un id de tâche. Si aucun id de processus ou id de tâche n’est donné avec
la commande d’attente alors il attendra que tous les processus enfants actuels se terminent et
retournent l’état de sortie. Créez un fichier nommé wait_example.sh et ajoutez le script suivant :

#!/bin/bash
echo "La commande Wait " &
process_id=$!
wait $process_id
echo "Processus terminé avec le status $?"

5.29 La commande « sleep »

Lorsque vous souhaitez mettre en pause l’exécution de n’importe quelle commande pendant une
période de temps spécifique, vous pouvez utiliser la commande sleep. Vous pouvez définir la
valeur du délai par secondes(s), minutes(m), heures(h) et jours(d). Créez un fichier nommé «
exemple_sleep.sh » et ajoutez le script suivant.
NB : Ce script attendra 5 secondes après la l’exécution.

17
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

#!/bin/bash

echo "Attendre pour 5 secondes… "


sleep 5
echo « Terminé »

5.30 Vérifiez si l’utilisateur est root

Dans cet exemple nous verrons comment savoir si un utilisateur est root ou non à partir de scripts
Linux bash :

#!/bin/bash
ROOT_UID=0

if [ "$UID" -eq "$ROOT_UID" ]


then
echo "Vous êtes un utilisateur root."
else
echo " Vous n’êtes pas un utilisateur root."
fi

Vous devez exécuter le script bash avec la commande sudo.

5.31 Envoyer du courrier à l’aide de Bash

Une chose intéressante, vous pouvez également envoyer des e-mails à partir de scripts bash. Dans
l’exemple simple suivant, nous verrons comment le faire :

#!/bin/bash
destinataire=”mon_mail@esgis.tg”
objet=”Salutations”
message=”Bonjour M. TOSSOU \n Comment allez-vous ?”
`mail -s $objet $destinataire <<< $message`

Il enverra un e-mail au destinataire contenant le sujet et le message donné. Pour ceux qui pourrait
avoir des soucis avec l’installation de la commande mail, une piste de solution se trouve ici.

5.32 Nettoyage des fichiers journaux

Ce script supprimera tous les fichiers journaux présents à l’intérieur de votre répertoire /var/log.
Vous pouvez ajouter plus de variables pour contenir d’autres répertoires de journaux et les
nettoyer ainsi.

#!/bin/bash
LOG_DIR=/var/log
cd $LOG_DIR

cat /dev/null > messages


cat /dev/null > wtmp
echo "Fichiers journaux supprimés."

NB : Vous devez exécuter le script en tant qu’utilisateur root.

18
TOSSOU Kodjo Elom Francis K.
LA GESTION DES SCRIPTS SHELL

5.33 Afficher les statistiques du serveur

Ce script nous permettra d’afficher de brèves statistiques de serveur. En tant qu’administrateur


système, ce script bash vous aidera à obtenir des détails importants comme la disponibilité, les
dernières connexions, le disque et l’utilisation de la mémoire pour une machine Linux.

#!/bin/bash
date
echo "uptime:"
uptime
echo "Actuellement connecté(s):"
w
echo "--------------------"
echo "Dernière(s) connexion(s):"
last -a | head -3
echo "--------------------"
echo "Utilisation du Disque et de la mémoire :"
df -h | xargs | awk '{print "Disque Libre/total : " $11 " / " $9}'
free -m | xargs | awk '{print "Mémoire Libre/total : " $17 " / " $8 "
MB"}'
echo "--------------------"

NB : Vous devez exécuter le script en tant qu’utilisateur root.

5.34 Maintenance du système

Ce petit script shell Linux améliore et nettoie le système automatiquement au lieu de le faire
manuellement.

#!/bin/bash

echo -e "\n$(date "+%d-%m-%Y --- %T") --- Début de la Maintenance\n"

apt-get update
apt-get -y upgrade

apt-get -y autoremove
apt-get autoclean

echo -e "\n$(date "+%T") \t Fin de la Maintenance"

NB : Vous devez exécuter le script en tant qu’utilisateur root.

6 Conclusion
Les scripts shell Linux peuvent être utiles. Des tâches complexes exécutées de manière appropriée
peuvent augmenter votre productivité dans une large mesure et vous aider à résoudre les
problèmes en un rien de temps. De plus, il n’y a pas de limite à son évolutivité. En tant
qu’administrateur système Linux, je vous recommande fortement de maîtriser ces exemples de
script bash.

19
TOSSOU Kodjo Elom Francis K.

Vous aimerez peut-être aussi