Apprenez en lisant dans l'ordre

Premier script shell — #!/bin/sh et chmod +x

Cet article fait partie du Cours Linux, qui vous permet de maîtriser à partir de zéro des compétences Linux concrètes, des commandes de base jusqu'aux scripts shell.
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 → rendre exécutable → exécuter, et l'évolution de ls -l
Écrire avec vihello.sh créé-rw-r--r--Voir les droitsavec ls -lAjouter le droitd'exécution-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 fRendre un fichier exécutablechmod +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  # rendre le script exécutable
./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.

④ Rends exécutable le fichier 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 le droit d'exécution a été ajouté.

⑥ 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 rends le fichier exécutable 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 droit d'exécution
chmod +x greet.sh   # rendre le script exécutable
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 droit d'exécution

Quand tu veux l'exécuter sans ajouter le droit 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 : rendre le fichier exécutable, puis l'exécuter avec ./file.

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

Tu vas parcourir le flux qui consiste à créer un script, le rendre exécutable 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 droit d'exécution).

③ Rends exécutable le fichier 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 rends le fichier exécutable.

④ 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 le droit 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 ?