Je vais mettre ici les infos de base pour la création de scripts bash sous Ubuntu voire base Debian, voire pour Linux d'une façon plus générale.
Ceci sera la version allégée voire incomplète mais devrait suffire pour faire les premiers pas et comprendre la suite.
Cela va couvrir la console, le terminal, les premières lignes, "hello world", transformation en script de une à plusieurs lignes, le shebang, les variables, variables systèmes, variables créées, variables locales, les quottes, les fonctions,...
~/bin, /opt, ... nautilus scripts et les autres répertoires pour les scripts
D'où part-on ?
Pour faire simple, quand on connais le bureau et ses icônes, une ligne de commande est une autre façon de lancer un programme.
La console, le terminal
Pour lancer une ligne de commande, on peut passer par une console ou un terminale. Le terminal est un programme qui donne un accès indirect à la console. La console est la représentation de la vie avant l'interface graphique. Pour faire simple, je n'utiliserai que le terme terminal (ou plutôt je n'utiliserai pas la console !).
Raccourcis clavier pour lancer le terminal : Ctrl + Alt + t (Control + Alt + la lettre T).
La première ligne
Si vous utilisez VLC, il peut être lancé en cliquant sur son icône (qui est un lien vers un fichier exécutable) ou ouvrir un terminal et taper la commande:
vlc
Vous allez me dire, "donc pas besoin de ligne de commande" et je répond "donc pas besoin d'icônes"...
Les options
Si on lance vlc
, on aura les valeurs d'options par défaut, mais quelques fois, on peut vouloir des valeurs différentes : vlc machanson.mp3
lancera vlc et le fichier machanson.mp3 qui se trouve dans le répertoire courant.
Une option est intéressante et redondante : -h (pour aide) comme la touche F1 de l'interface graphique vous donnera de l'aide sur la fonction en cours :
vlc -h
pour avoir de l'aide sur VLC
NB : man (pour afficher les entrée de manuel dans le code) peut donner d'autres types d'informations car il fonctionne différemment :
man vlc
pour avoir le man de vlc
"Bonjour Monde",
Nous avons donc un programme et des options. vlc est un programme, echo est un autre programme qui inscrit un texte dans la console ou le terminal :
echo Bonjour Monde
renverra Bonjour Monde
.
bon, ça c'est fait !
Transformation en script... de une à plusieurs lignes,
un script est un fichier texte qui a la particularité d'être reconnu par le système comme exécutable.
Pour créer un script, il suffit de créer un fichier texte, aller dans ses propriétés et cocher "Autoriser l'exécution...". C'est maintenant que l'on voit l'aspect pratique de la ligne de commande. Pour une explication d'un processus en mode graphique, le texte est compliqué car il faut détailler la vue et les actions.
Pour "créer un fichier texte, aller dans ses propriétés et cocher "Autoriser l'exécution...".", on fera :
echo 'echo Bonjour Monde' > unfichier.sh
puis
chmod +x unfichier.sh ;
pour rendre le fichier exécutable
et enfin
./unfichier.sh
pour l'exécuter.
Tout cela en une ligne :
echo 'echo Bonjour Monde' > unfichier.sh ; chmod +x unfichier.sh ; ./unfichier.sh
Éditeur de texte
Sur la ligne précédente, on a une suite echo xxxx > fichier
qui inscrit du texte dans un fichier... mais un vrai éditeur de texte est plus pratique. Un éditeur de texte est pour la programmation et n'ajoutera pas d'informations de mise en page autre que le saut de ligne contrairement à un traitement de texte.
Les plus connus dans Ubuntu ; nano, vi, vim voire gedit... j'en utilise 2 principalement : nano et gedit... actuellement, j'utilise geany pour compléter ou remplacer gedit.
Avec nano notre exemple précédent se passera ainsi :
nano unfichier.sh
on inscrit le texte du script :
echo Bonjour Monde
puis, pour fermer et enregistrer notre fichier ; faire ctrl + x puis o (pour oui) puis la touche "Entrée".
On rend le fichier exécutable avec :
chmod +x unfichier.sh
puis on le lance :
./unfichier.sh
le retour sera :
Bonjour Monde
Le shebang et autre conventions
Maintenant que l'on sait créer et lancer un script, intéressons nous à l'intérieur du script :
Un ensemble de conventions, facilitent la lecture et l'exécution de nos script dont le shebang qui commencera nos scripts et indiquera au système dans quel langage doit être interprété notre script.
Pour le moment, on commencera avec #!/bin/bash
pour indiquer que nous utilisons le bash mais il existe aussi le sh, le perl, le python...
A savoir, l'extension de notre fichier devient facultative, notre exemple pouvant donc être unScript.sh
ou unScript
(tout court !).
Un exit
finira "proprement" le script. On peut aussi ajouter un nombre entier ( exit 0
) pour se repérer si plusieurs points de sortie existent.
Les quottes
Toujours dans l'idée d'une bonne lisibilité et interprétation, le texte devrait être toujours quotté. Dans notre exemple, Bonjour Monde est une chaîne de caractères . Pour que le programme se déroule au mieux, il est préférable de délimiter cette chaîne du reste du code.
Pour se faire, on utilisera les quottes : ' ou " ; qui entoureront nos chaînes de caractère :
"ceci est une chaîne de caractères"
La différence entre les simples et les doubles quottes (' ou ") tiens dans l'interprétation et à l'utilisation conjointe (pour distinguer les quottes quand elles sont l'une dans l'autre). Les simples quottes ' gardent leur contenu en état sans être interprétés.
Les Commentaires
Pour retrouver des informations lors du codage, on peut laisser des commentaires. Les lignes de commentaires commencent par un dièse : #.
Ces lignes seront ignorées lors de l'exécution.
# ceci est un commentaire
Un commentaire peut être mis en fin de ligne (attention de ne pas couper une ligne de commande en morceau).
echo "Bonjour Monde" # cette ligne écrit Bonjour Monde
Où en est-on ?
Nous avons donc un processus de création d'un script :
nano unScript
Notre script deviendra donc :
#!/bin/bash
echo "Bonjour Monde" # cette ligne écrit Bonjour Monde
exit 0
ctrl + x puis o puis entrée
puis on le rend exécutable
chmod +x unScript
puis on l'exécute
./unScript
pour obtenir :
Bonjour Monde
Vous en savez maintenant suffisamment pour récupérer ou créer un script simple et l'exécuter.