Salut à tous c'est Florian du site ITConnect, bienvenue dans cette introduction au scripting
bash sous Linux, puisque effectivement aujourd'hui je vous propose une vidéo complète d'introduction
au scripting bash. Nous allons voir ce que c'est le bash, nous allons également faire nos premiers
pas avec l'exécution de nos premières commandes et puis après on va créer notre premier script
bash. Je vais vous expliquer un petit peu la syntaxe globale et quelques notions de base
comme les variables, des choses comme ça, ce qui vous permettra de bien prendre en main le bash pour
faire vos premiers pas. Et puis par la suite je pourrais vous proposer d'autres vidéos pour
approfondir le sujet et aborder des notions complémentaires comme les structures conditionnelles
les boucles, etc. N'hésitez pas aussi à commenter cette vidéo pour me dire si c'est un sujet qui
vous intéresse, si c'est un sujet pour lequel vous aimeriez plus de contenu, pour aussi que
j'adapte en fonction de ce que vous aimeriez voir sur la chaîne YouTube ITConnect. Nous
allons tout de suite rentrer dans le vif du sujet mais avant cela pensez à vous abonner à la chaîne
YouTube ITConnect. Le bash est l'un des interpréteurs de commandes les plus populaires sur les
environnements Linux Unix. Effectivement on va le retrouver par défaut sur de nombreuses
distributions comme Debian, Ubuntu, Rocky Linux, etc. On va installer ces distributions là et de
base on aura accès à cet interpréteur de commandes qui est le bash. Alors c'est quoi le
bash ? En fait c'est ce que l'on appelle un shell. Le shell va être une interface système qui
va venir se positionner entre l'utilisateur et le système d'exploitation et qui va nous
permettre d'interagir avec le système d'exploitation par l'intermédiaire de commandes que l'on va venir
exécuter. On va pouvoir utiliser le bash pour faire de l'administration d'une machine locale
donc pour gérer les fichiers, gérer les données, etc. On va pouvoir faire de l'administration en
ligne de commande de notre machine Linux, mais on va aussi pouvoir s'appuyer sur le bash pour
créer des scripts et donc automatiser des tâches diverses et variées, et notamment des tâches qui
vont être répétitives. Aujourd'hui le bash est une compétence essentielle pour ceux qui souhaitent
faire de l'administration de machine Linux. Il n'y a pas forcément besoin d'être expert en bash
mais ça me semble vraiment indispensable aujourd'hui pour tout administrateur système d'avoir un minimum de connaissances sur le bash, au même titre qu'il faudra avoir un minimum de
connaissances en PowerShell pour la partie Windows, Windows Server. Pour utiliser le bash
nous allons utiliser ce que l'on appelle un terminal, donc notre shell. Dans notre shell
on va à l'intérieur exécuter différentes commandes, et dans les scripts on pourra utiliser
ces mêmes commandes ainsi que différentes instructions. Voici la structure de base d'une
commande en bash. On va tout d'abord avoir le nom de la commande ici au tout début, et derrière
potentiellement une ou plusieurs options et un ou plusieurs arguments. On pourrait exécuter la
commande ls seul, mais on peut aussi venir lui ajouter une ou plusieurs options. Dans ce cas là
ici on a l'option "-a". On pourrait avoir "-a", et d'autres lettres encore derrière en fonction des
options qu'on veut utiliser. L'argument c'est en quelque sorte la valeur de ce que l'on veut
cibler. Ici on va cibler le répertoire "-home", "-flow". On pourrait avoir aussi plusieurs
arguments, tout dépend de ce que va attendre la commande en termes de valeur. Pour le nom des
options, il faut savoir qu'on a deux façons de les écrire. On a d'une part les noms longs et
d'autre part les noms courts. Ici j'ai utilisé un nom court. Le nom long va être comme ici
"-le nom complet de l'option". Le nom court sera seulement un tiré et derrière une lettre. Cette
lettre n'est pas choisie par hasard, elle est documentée dans l'aide de la commande en question
On va toujours avoir un équivalent entre un nom long et un nom court. Surtout comme on est sur
Linux, il faut faire très attention à la casse. Ici le fait de mettre un tiré R en majuscule ne
sera pas la même chose que mettre un tiré R en minuscule. Il faut vraiment faire attention à la
casse sous Linux. Voilà la syntaxe de base d'une commande en bâche. Maintenant ce que je vous
propose, c'est qu'on bascule sur une machine Linux pour commencer à exécuter nos premières
commandes bâche. Par la suite, nous allons créer notre premier script. Pour cette démonstration
je vais utiliser une machine sous Ubuntu 24.04 avec un environnement de bureau installé. Ce que
je vais faire, c'est lancer le terminal. J'ai directement accès à l'interprèteur de commandes
bâche. Je vais commencer par faire exécuter une première commande, c'est la commande PWD. A quoi
sert cette commande ? Elle sert à m'indiquer le répertoire dans lequel je me situe au niveau de
mon shell. Ici j'ai le tilde qui est précisé. Le tilde veut dire quoi ? Ça veut dire que mon
shell est positionné dans mon répertoire utilisateur. Ce répertoire utilisateur, c'est le
dossier home flow, puisque je suis connecté avec l'utilisateur flow. Si je me déplace dans le
système de fichiers, je vais utiliser une autre commande, la commande CD, qui va me permettre de
naviguer sur le système de fichiers. Je pourrais aller par exemple dans ETC, et si je relance la
commande PWD, j'ai bien ici cette fois-ci comme répertoire courant. Ceci est intéressant de voir
dans quel répertoire on se situe, puisque quand on va exécuter une commande bâche, parfois on va
préciser un chemin complet, mais si on ne précise pas de chemin, par exemple quand on va créer un
fichier, il sera créé ce fichier dans le répertoire courant dans lequel on se situe. L'information
qui est ici, entre les deux points et le dollar, nous indique bien le répertoire dans lequel on se
situe actuellement. On peut le vérifier avec la commande PWD, mais pour le coup c'est une
information quand même importante. Nous allons maintenant évoquer la commande LS, qui permet de
lister le contenu d'un répertoire. Je vais me repositionner dans mon répertoire home, et je vais
simplement faire la commande LS, sans préciser le moindre argument derrière. Là il me liste le
contenu du dossier. Maintenant, comme je l'ai expliqué en introduction, on peut utiliser
différentes commandes, différents arguments. Je vais pouvoir faire par exemple un LS-L. Là on
voit bien qu'il m'a listé le contenu de mon répertoire courant, puisque je n'ai pas précis�
d'argument derrière. Du coup on pourrait faire un LS-L et préciser un chemin, par exemple
slashetc, et là il me liste bien ce qui est dans slashetc sur ma machine. On voit bien l'intérêt
de préciser ou non une valeur pour l'argument qui vient derrière la commande. Maintenant on pourrait
se demander comment on fait pour explorer des options supplémentaires, pour voir quelles sont
les possibilités offertes par la commande LS. Dans ce cas là, on va faire un LS-LP. En général
ça fonctionne avec toutes les commandes. On fait un LS-LP et ça nous affiche l'aide de la commande
Donc là on peut savoir à quoi sert cette commande, à quoi servent les différentes options. On a �
chaque fois le nom court et le nom long de la commande, comme je l'évoquais tout à l'heure
On peut utiliser ce que l'on souhaite. Là je vais avoir des explications pour l'ensemble des options
disponibles pour cette commande. Cela me permet d'en savoir plus. Il faut savoir aussi qu'on peut
consulter à partir de la ligne de commande ce que l'on appelle les pages de manuel. En fait on va
tout simplement faire un man et derrière on va mettre le nom de la commande, par exemple man
LS. On va ouvrir la documentation, les pages de manuel de la commande LS. On a des informations
de manière un peu plus structurées encore sur l'utilisation de cette commande. On va retrouver
les différentes options, leurs significations, etc. Donc là on a vraiment l'aide complète. Cette
aide complète, ce que l'on appelle les man pages, on peut les retrouver aussi sur internet. Il y a
plusieurs sites qui proposent des versions en ligne de ces aides. Donc là on a quand même
plus d'informations que quand on fait le "- "- help. Cela peut être intéressant d'aller faire un
tour ici. Ce que je vous propose c'est qu'on explore un petit peu plus d'autres commandes
par exemple pour explorer la commande mkdir. Ici je vais faire un ls et je vais faire mkdir
Alors mkdir c'est quoi ? Cela veut dire make directory, c'est une commande qui va nous
permettre de créer un répertoire ou plusieurs répertoires. Je pourrais tout simplement faire
un mkdir demo ici et je vais avoir créé en principe un dossier qui va s'appeler demo �
la racine de mon profil utilisateur, puisque je suis bien positionné ici à la racine de mon
profil. On le crée dans le répertoire courant. Si je fais un ls tout simplement, mon dossier
demo qui n'était pas là ici est présent désormais. Pourrions aussi préciser le chemin complet si on
veut créer le dossier demo dans un répertoire spécifique qui n'est pas le répertoire courant
Et on peut créer dans ce dossier demo plusieurs sous-dossiers. Dans ce cas là on va faire un
slash, on va mettre des accolades et entre les accolades on va venir mettre les noms des
dossiers qu'on veut créer. Par exemple ici dossier 1 et dossier 2. On met les noms entre guillemets
on les sépare par une virgule, on fait un trait. Maintenant si je fais un ls-l de mon home flow
demo, j'ai bien dossier 1 et dossier 2 qui ont été créés. On voit qu'on peut optimiser puisque
sinon j'aurais dû faire plusieurs commandes mkdir. Une autre commande qui peut être assez
intéressante c'est la commande touch. La commande touch va nous servir à créer un fichier vide
On utilise aussi en général cette fichier pour venir jouer sur l'horodatage des horaires d'accès
des fichiers. Si je veux créer le fichier itconnect.txt dans le dossier 1 que j'ai cré�
précédemment, il suffit de faire touch comme ceci et le dossier a été créé. D'ailleurs si je fais
un ls dans le dossier 1, je vois bien que mon fichier a été créé. C'est un fichier vide mais il a
été créé, maintenant je pourrais l'éditer et ajouter du contenu. C'est une étape malgré tout
facultative puisqu'on pourrait ouvrir ce fichier avec un éditeur de texte même s'il n'existe pas
l'enregistrer ce qui permettrait de le créer à l'emplacement souhaité. Enfin, on va évoquer
pour terminer avant de passer à la rédaction de notre premier script, une autre commande très
intéressante mais aussi relativement dangereuse, c'est la commande rm qui va nous permettre de
supprimer des dossiers et leur contenu ou supprimer un fichier ou des fichiers. C'est une commande de
suppression de données. Pourquoi je dis qu'elle est potentiellement dangereuse ? C'est à dire
qu'une mauvaise manipulation de cette commande, on pourrait cibler sans faire exprès des répertoires
système et procéder à la suppression. On peut vraiment faire planter une machine Linux si on
utilise mal la commande rm. Il faut vraiment faire attention à ce que l'on va cibler quand on va faire
un rm. Typiquement, je pourrais chercher à vider le contenu de mon répertoire dossier 1. Dans ce
cas-là, je mets le nom du chemin complet et je vais venir mettre une étoile. Le fait de mettre un
"-r", ça permet d'avoir la récursivité. Je vais vraiment supprimer tout ce qu'il y a dans ce
répertoire, sous cette arborescence et l'étoile permet de cibler le contenu du répertoire et non
le répertoire en lui-même. Cela me permet de supprimer le contenu de mon dossier 1. En l'occurrence
ici, ça a bien supprimé le fichier itconnect.txt. Maintenant, si je veux supprimer le répertoire
démo en lui-même, je vais faire simplement un rm-r et je vais venir préciser le dossier comme
ceci. Si je fais un ls home flow, on voit que mon dossier démo a disparu, n'est plus là, il a ét�
supprimé et tous ses sous-dossiers ont été supprimés également. Nous venons de voir des
commandes de base pour la navigation sur le système, pour la manipulation de données, créer un fichier
créer un dossier, supprimer un fichier ou un dossier, etc. C'est vraiment la base pour
prendre en main le Shell Bash sur une machine Linux. Il faut savoir que des commandes en
existent des dizaines, des centaines, donc on ne peut pas tout présenter dans une vidéo. Ce qu'il
faut, c'est au fur et à mesure des besoins, explorer des commandes, explorer des notions
Là, c'est vraiment une introduction. Maintenant, ce que l'on va faire, c'est voir comment créer
notre premier script Bash sur une machine Linux. Déjà, ce qu'il faut savoir, c'est qu'un script Bash
va avoir l'extension .sh. Quand vous voyez un fichier .sh, cela veut dire que cela correspond
à un script Bash. Ce que l'on va faire, c'est tout simplement créer ce fichier. On va créer ce fichier
vide. On a vu qu'on pouvait le créer avec la commande touch, donc c'est ce que l'on va faire, cela va nous permettre de manipuler un petit peu. Par exemple, ce fichier, je vais l'appeler
script-demo.sh et je vais le créer à la racine de mon répertoire personnel. J'ai bien créé ce fichier
on le voit, il est ici. Il est totalement vide, il fait 0 octets. Maintenant, on va se demander comment
on peut faire pour éditer ce fichier, pour écrire notre script. On a plusieurs possibilités. On va
pouvoir utiliser un éditeur de texte classique, tel que le très simple Nano ou le plus complet
Vim sur la machine Linux. On va pouvoir éditer notre script, indiquer les lignes de commandes
etc. que l'on souhaite. On peut aussi aller plus loin et utiliser une application comme Visual
Studio Code, que vous pouvez installer facilement à partir du centre d'application sur Ubuntu ou avec
une simple commande apt-get install, puisqu'il y a vraiment un paquet qui est prêt à l'emploi pour
cela. Cela vous permet ensuite d'avoir sur la machine Linux le Visual Studio Code. Dans le
Visual Studio Code, vous pouvez écrire vos scripts, les exécuter, etc. Vous avez vraiment un
éditeur de code très complet. C'est un éditeur de code gratuit et open source proposé par Microsoft
Là, je ne vais pas vous imposer l'utilisation de Visual Studio Code. Ce que l'on va faire
c'est utiliser le Nano, qui est vraiment un éditeur de texte très simple. Vous allez pouvoir créer
votre premier script Bash avec Nano sans aucun souci. Ce que l'on va faire, c'est ouvrir ce
fichier. On va faire un Nano et on va appeler script-demo.sh. On se retrouve avec notre script
il est vide. Qu'allons-nous ajouter dans ce script ? Il faut savoir que la première ligne de votre
script doit être ce que l'on appelle le Shebang. Le Shebang, c'est une ligne qui va permettre �
votre machine de savoir quel interprèteur de script doit être utilisé pour exécuter le contenu du
fichier. En l'occurrence, ici, ça va être Bash. On va préciser "-!" et le chemin vers Bash
Cela va permettre à Linux de savoir ce script-là, il faut l'exécuter avec Bash. C'est vraiment très
important d'ajouter cette première ligne. Là, c'est du Bash, donc on met ça et en fonction de
ce qu'on utilise, on va venir adapter. C'est forcément la première ligne de votre script
Ensuite, vous allez venir ajouter vos commandes. Cela va dépendre de vos besoins. On va tout
simplement faire un écho, cela va permettre d'afficher un message dans la console. On va
mettre par exemple, Hello World ! Demo IT Connect ! On va faire ça, on met bien un guillemet à la
fin. On pourrait même, pour respecter les bonnes pratiques, ajouter un commentaire. On ajoute un
commentaire en mettant un dièse et le texte derrière pour décrire la ligne de commande qui
suit. On va mettre, voilà, écrire un texte dans la console. Une fois qu'on a fait ça, on va
enregistrer le fichier. C'est CTRL O avec Nano. Ensuite, on fait entrer, voilà, et on va pouvoir
fermer. Comment on va pouvoir maintenant exécuter ce script ? Ce que l'on va faire pour exécuter le
script, c'est un .slash et le nom du script derrière. Je vais faire script-demo.slash
je fais entrer et là, il me dit « Permission non accordée ». Pourquoi ? Effectivement
si je fais un ls-l, quand on fait ls-l, la commande ls nous retourne la liste du contenu du répertoire
et on a aussi une visibilité sur les droits. On peut voir au niveau des droits qu'il y a des droits
en lecture-écriture pour l'utilisateur propriétaire, le groupe propriétaire, et des droits en lecture
pour les autres. Ce qui va nous manquer ici, c'est le droit d'exécution, le droit d'exécuter le
script. C'est pour ça qu'il va falloir rajouter des permissions sur ce fichier avant de pouvoir
l'exécuter. Ce qu'on va faire, c'est un chmod plus x sur le fichier script-demo.sh. Là, si je refais
un ls-l, cette fois-ci, j'ai bien le droit d'exécuter. On voit d'ailleurs qu'il y a eu un
changement au niveau des couleurs ici. Je vais pouvoir tenter d'exécuter une nouvelle fois mon
script. Je vais faire script-demo.sh. Pensez aussi à utiliser la tabulation pour bénéficier de
l'autocomplétion. On va exécuter et mon script fonctionne puisqu'on me retourne bien « Hello World
Demo IT Connect ». On vient de créer un premier script très basique, mais on a créé notre premier
script-demo.sh. Pour finir, je vais vous montrer un autre script qui s'appelle ping.sh. Je vais
vous montrer ce script qui va aller un peu plus loin, qui va me permettre d'aborder d'autres notions. Je vais vous expliquer la notion de variable, des choses comme ça. Ce script qui
est à l'écran permet tout simplement de définir l'adresse IP ou le nom d'un serveur. Ensuite
on va faire un ping sur ce serveur et on va dire est-ce que oui ou non ce serveur a répondu au
ping ? C'est quelque chose de très simple, mais qui permet d'introduire certaines notions. Tout
d'abord la notion de variable, qui va nous permettre de stocker une valeur, une information
en mémoire. Ici, c'est une variable qui s'appelle serveur. Je stocke dedans l'information qui est
l'adresse IP 192.168.1.254. Si j'appelle ma variable serveur, cela revient à appeler la
valeur qui est à l'intérieur, puisque cette variable sera remplacée par sa valeur. Ce qui
veut dire qu'ensuite quand je vais faire un ping, un ping-C2. Pourquoi un ping-C2 ? Sur Linux
quand on fait un ping, c'est un ping indéfini. Il ne va jamais s'arrêter. Le fait de faire un
ping-C2, on va dire qu'on va faire deux pings. La cible du ping, c'est qui ? C'est $server
c'est à dire ma variable serveur. On voit bien ici que quand on déclare une variable, on ne met
pas le dollar, on met le nom de la variable, qui égale la valeur. Ce qui est important
c'est de ne pas mettre d'espace ni avant ni après, sinon cela renverra une erreur. J'ai
bien affecté cette valeur à ma variable, et ensuite pour lire le contenu de la variable
je fais un $le nom de la variable, comme on peut le voir ici. Ensuite, qu'est-ce que c'est que
cette flèche pour rediriger vers $devnull ? C'est pour masquer la sortie de la commande. Mon
objectif, ce n'est pas d'afficher le résultat du ping directement dans la console, c'est d'afficher
soit ce texte, soit ce texte en fonction du résultat du ping. La sortie de la commande ping
je veux en quelque sorte la masquer. Je la redirige vers $devnull, elle sera cachée puisqu'elle est
envoyée vers un périphérique qui est nul. Après, ce que l'on va faire, c'est utiliser une
structure conditionnelle if pour déterminer si le serveur est en ligne ou pas, c'est-à-dire
est-ce qu'il a répondu au ping ou non. Ce que l'on va faire, c'est utiliser $.interrogation. Cela
nous permet de savoir si la dernière commande qu'on a exécutée, en l'occurrence ici le ping
est-ce que cette commande s'est bien exécutée ou non. C'est une variable spéciale qui est
alimentée automatiquement par $.bash. Si on a un code de retour qui est de 0, cela veut dire que
la commande s'est bien exécutée. Si on a un autre code, c'est qu'il y a eu un problème. Du coup
on va regarder avec le $.if, si on essaie de traduire ce que j'ai voulu faire de manière
littéraire. Si le code de retour de la dernière commande n'est pas égal à 0, alors on écrit
erreur, le serveur n'a pas répondu au ping. Sinon, cela veut dire que le code de retour est
égal à 0, implicitement. Le serveur est en ligne et cette instruction permet de finir la structure
conditionnelle. Je pourrais vous proposer une vidéo complète sur les structures conditionnelles
pour vous expliquer tout cela dans le détail. Là, on fait vraiment un test de si le code de
retour de cette commande n'est pas égal à 0. Si cette condition est vraie, et uniquement dans ce
cas-là, on va exécuter ce qu'il y a à l'intérieur de ce premier bloc, entre le $then et le $else
Et sinon, on va exécuter ce qui est ici. Voilà pour ce premier script bash un peu plus évolu�
que le premier que je vous ai présenté. Maintenant, ce que l'on peut faire, c'est tout simplement l'exécuter. J'ai déjà fait un chmod plus x sur le fichier ping.sh. Là
il est en train de faire des pings et il me retourne bien. Le serveur me remet l'adresse IP
parce qu'on a précisé ici le contenu. On a fait appel à la variable, donc la variable est
remplacée par sa valeur. Le serveur est en ligne. J'ai bien eu le retour attendu dans la console
Je n'ai pas eu le détail de la sortie du ping, mais simplement mon texte personnalisé que j'ai
défini dans le script. Pour finir, je vous propose de vous parler du pipeline en bâche. C'est quoi
le pipeline ? C'est le caractère que vous avez sur la touche 6 d'un clavier AZERTY. C'est ce que
l'on peut appeler la barre verticale. C'est le caractère que je vous ai mis à l'écran. Il va
jouer un rôle clé, puisqu'il va nous permettre de connecter plusieurs commandes ensemble. Le
résultat d'une première commande sera envoyé à une deuxième commande, et le résultat de cette
deuxième commande pourrait être envoyé à une troisième commande, etc. Ce qui va être très
intéressant, par exemple, pour exécuter une commande en fonction du résultat de la première
commande, ou aussi pour appliquer des filtres, faire des recherches, etc. Si on prend l'exemple
de mon script ping.sh, j'aimerais savoir dans ce script combien il y a de lignes. Pour afficher le
contenu d'un fichier, on peut utiliser la commande cat. On fait cat, le nom du fichier derrière
Cela m'affiche tout simplement le contenu du fichier. Ce que je vais faire à partir de là
c'est avec le pipeline. Le pipeline vient toujours se positionner après une première
commande. Vous ne pouvez pas commencer une ligne avec un pipeline. Derrière, je vais envoyer le
résultat de cette commande, c'est-à-dire le contenu de mon fichier, à la commande wc
qui signifie word count. C'est une commande qui permet de compter le nombre de mots
le nombre de lignes dans un fichier. On va utiliser l'option "-l", pour retourner uniquement
le nombre de lignes présentes dans le fichier. Je fais entrer et on me dit que ce fichier contient
15 lignes. On voit bien tout de suite l'intérêt du pipeline, l'interconnexion qu'il y a eu entre
ma première commande et ma deuxième commande. C'est vraiment quelque chose de très intéressant
Nous pouvons utiliser cette notion de pipeline pour faire des recherches dans un fichier avec
la commande grep, qui est vraiment indispensable sous Linux et très puissante. Si je fais un
grep ping, par exemple, j'affiche le contenu de mon fichier, je fais un grep ping et il me
retourne toutes les lignes de mon fichier qui contiennent le mot ping. Je vois bien ici
j'ai un premier commentaire, un deuxième, bien entendu j'ai ma commande ping et j'ai la commande
echo qui est ici, puisque cette commande echo contient également le mot clé ping que j'ai
recherché. C'est vraiment un exemple très simple de recherche, mais ça vous montre un petit peu
également ce que l'on peut faire avec le pipeline et aussi un rapide aperçu de la commande grep
Voilà cette vidéo d'introduction au scripting Bash, à la rédaction de script Bash est �
présent terminée. J'espère que ça vous a plu, sachez que vous pouvez utiliser le
Bash sur une machine Linux telle que Ubuntu, comme je l'ai présenté ici
sur une Debian ou autre, mais également sur Windows, puisque vous pouvez installer Windows
Subsystem for Linux ou WSL, ce qui vous permet d'utiliser Linux depuis Windows. Là vous allez
avoir la possibilité d'exécuter des commandes Bash, mais aussi de créer des scripts, donc ça
vous permet en quelque sorte d'utiliser le Bash depuis Windows si vous voulez vous entraîner
sans avoir une autre machine ou sans utiliser une machine virtuelle si votre poste de travail n'est
pas sur Linux. J'espère que ça vous a plu, n'hésitez pas surtout à me dire si vous voulez
plus de contenu sur le scripting Bash, si c'est un sujet qui vous intéresse. En attendant
bien pensez à liker, à commenter et à partager au max cette vidéo ! Je vous dis à très vite, ciao