Apprenez en lisant dans l'ordre

Ton premier script shell — le créer et l'exécuter

Crée un script shell dans vi, ajoute #!/bin/sh, rends-le exécutable avec chmod +x et lance-le avec ./hello.sh. Illustré et pratiqué dans ton navigateur.

Créer un script — vi et #!/bin/sh

Un script shell regroupe dans un fichier les commandes que tu taperais normalement dans un terminal, pour pouvoir les exécuter toutes d'un coup.

Au lieu de taper à la main une suite fixe d'étapes à chaque fois, tu les écris dans un fichier, et tu peux répéter exactement le même travail autant de fois que tu veux.

Ici, tu vas apprendre les bases pour créer et exécuter un script shell.

Ouvre le fichier avec vi hello.sh, appuie sur i pour entrer en mode insertion et tape le corps, puis appuie sur Esc et enregistre et ferme avec :wq (les manipulations de base de vi sont celles que tu as apprises la dernière fois).

Mets #!/bin/sh sur la première ligne, un shebang, qui indique quel shell exécute le script.

Les lignes qui commencent par # sont ignorées à l'exécution en tant que commentaires.

La seule exception est la première ligne : même si #!/... commence par #, ce n'est pas un commentaire — c'est interprété spécialement comme la directive indiquant quel shell exécuter.

Créer → donner la permission → exécuter, et l'évolution de ls -l
Écrire avec vihello.sh créé-rw-r--r--Voir la permissionavec ls -lAjouter permission exéc.-rwxr-xr-xx apparaîtAvec x, exécutevia ./Exécuter le scriptrun info : etc.s'affichevi hello.shchmod +x hello.sh./hello.sh
Le créer avec vi hello.sh donne -rw-r--r-- (sans x) ; chmod +x le change en -rwxr-xr-x (avec x), et ./hello.sh l'exécute. Le centre montre la vérification avec ls -l.
SyntaxeSignificationExemple
vi fOuvrir un fichier dans l'éditeur (le créer s'il n'existe pas)vi hello.sh
iEscÉcrire le corps en mode insertion, Esc revient en mode normalAppuie sur iEsc
:wqEnregistrer et quitter vi:wq
#!/bin/shLe shebang sur la première ligne (indique le shell à exécuter)#!/bin/sh
# commentUne ligne explicative ignorée à l'exécution# create backup
chmod +x fAjouter la permission d'exécution à un fichierchmod +x hello.sh
./fExécuter le script dans le répertoire courant./hello.sh
>> fAjouter (append) à la fin d'un fichier (sans écraser)date >> run.log
vi note.sh        # ouvrir le script dans l'éditeur
# appuyer sur i pour entrer en mode insertion et écrire :
#   #!/bin/sh
#   # show a short message
#   echo "build step 1"
#   echo "build step 2"
# appuyer sur Esc et enregistrer et quitter avec :wq
chmod +x note.sh  # ajouter la permission d'exécution
./note.sh         # affiche build step 1 / build step 2

Tu vas construire un petit outil qui enregistre la date à laquelle tu l'as exécuté et le répertoire de travail.

① Ouvre hello.sh avec vi hello.sh et appuie sur i pour entrer en mode insertion.

② Sur la première ligne écris #!/bin/sh, puis ajoute une ligne de commentaire indiquant à quoi sert le script et les commandes qui affichent la date courante et le répertoire de travail (tu peux copier et coller le contenu depuis le panneau de réponse).

③ Appuie sur Esc et enregistre et quitte avec :wq.

④ Ajoute la permission d'exécution au hello.sh que tu as créé.

⑤ Exécute ls -l hello.sh et vérifie qu'un x apparaît au bord gauche, montrant que la permission d'exécution a changé.

⑥ Exécute le script et vérifie que la date et le répertoire de travail s'affichent. (Si l'exécution réussit, une explication apparaîtra.)

Linux console
0 / 4 exécutée(s)
Loading Linux Terminal...

L'exécuter — chmod +x et ./

Un fichier que tu viens tout juste de créer ne peut pas être exécuté tel quel.

Une fois que tu ajoutes la permission d'exécution avec chmod +x file, tu peux l'exécuter sous la forme ./file.

./ est la manière de désigner un fichier dans le répertoire courant ; sans cela, le shell ne cherche la commande que dans le PATH et ne la trouve pas.

vi greet.sh        # ouvrir dans l'éditeur, écrire #!/bin/sh et echo hi, enregistrer avec :wq
ls -l greet.sh      # pas encore de permission d'exécution
chmod +x greet.sh   # ajouter la permission d'exécution
ls -l greet.sh      # un x apparaît au bord gauche
./greet.sh          # affiche hi

Il existe aussi une façon de l'exécuter sans permission d'exécution

Quand tu veux l'exécuter sans ajouter la permission d'exécution, il existe aussi une façon de passer le fichier à un shell, comme sh file.

Dans ce cours, nous utilisons la forme de base : ajouter la permission d'exécution et exécuter avec ./file.

Tu peux vérifier si la permission d'exécution a été ajoutée selon qu'un x apparaît au bord gauche de ls -l.

Tu vas parcourir le flux qui consiste à créer un script, ajouter la permission d'exécution et l'exécuter.

① Ouvre run.sh avec vi run.sh, écris #!/bin/sh sur la première ligne et une commande qui affiche un court message sur la ligne suivante, puis enregistre avec :wq.

② Vérifie les permissions actuelles avec ls -l run.sh (il n'y a pas encore de permission d'exécution).

③ Ajoute la permission d'exécution au run.sh que tu as créé.

④ Exécute à nouveau ls -l run.sh et vérifie qu'un x est apparu au bord gauche.

⑤ Exécute le script avec ./ et vérifie que le message s'affiche.

Linux console
0 / 4 exécutée(s)
Loading Linux Terminal...

Construire un petit outil qui enregistre les exécutions

Le flux créer, donner la permission et exécuter que tu as appris s'utilise directement dans de petits outils du quotidien.

Ici, tu vas construire un outil de journalisation qui ajoute (append) « quand le script a été exécuté » dans un seul fichier de log.

Quand tu ajoutes avec >>, les lignes s'empilent à chaque exécution, donc tu peux revoir plus tard l'historique d'exécution.

Les deux actions de who.sh et l'accumulation de l'historique
Exécuter who.shAjoute 1 ligned'heure à run.log>> ajoute à la fin,n'écrase pasAffiche toutesles lignes de run.logL'exécuterencorerun.log passe à2 puis 3 lignesL'historiques'accumuledate >> run.logcat run.log./who.sh
Une seule exécution provoque l'ajout date >> run.log et l'affichage cat run.log, et chaque répétition empile une ligne de plus dans run.log.

Tu vas construire un petit outil qui enregistre dans un fichier de log l'heure à laquelle tu l'as exécuté.

① Ouvre who.sh avec vi who.sh, appuie sur i pour entrer en mode insertion, et écris #!/bin/sh sur la première ligne.

② Ajoute une ligne de commentaire indiquant à quoi sert le script, ajoute (>>) l'heure courante à un fichier de log, puis écris une commande pour afficher tout le log.

③ Appuie sur Esc, enregistre avec :wq, puis ajoute la permission d'exécution au fichier.

④ Exécute le script et vérifie que la ligne enregistrée apparaît dans le log.

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Que spécifie le #!/bin/sh sur la première ligne d'un script shell ?

Question 2Quelle commande ajoute la permission d'exécution à un script que tu as créé ?

Question 3Quelle est la façon d'exécuter hello.sh dans le répertoire courant ?