Introduction au Shell
Le shell, c'est ce fameux langage qui permet d'interagir avec une machine sans interface graphique. Un peu repoussant au premier abord, mais tellement pratique et efficace une fois que l'on sait s'en servir. Les commandes du shell se saisissent dans un terminal qu'on appelle aussi console, ou invite de commande.
Objectifs
- Découvrir les commandes de base du shell UNIX
- Créer un programme en bash
Shell ça veut bien dire coquillage ?
En effet, shell est le mot anglais pour coquillage ou coquille. Et c'est le rôle qu'il joue dans l'architecture UNIX : Il protège et sublime le système.

Dans ce schéma, tu peux voir que le shell se situe entre le kernel (le noyau) de l'ordinateur et l'utilisateur. Ce type d'architecture en couches est très présent dans les systèmes informatiques, car il permet de les décomplexifier et laisse les experts se spécialiser sur une couche.
On représente souvent les architectures par couches de cette façon :

Ainsi on appelle les couches d'en bas les couches de bas niveau, et les couches du haut les couches de haut niveau. C'est fou, non ? Ainsi, quand tu entends parler d'un langage de bas niveau, ça ne veut pas dire qu'il est pour les nuls mais qu'il se rapproche du langage machine.
Tu remarqueras que, dans le second schéma, j'ai rajouté une couche pour les applications. En général les utilisateurs n'utilisent pas directement le shell, mais des applications que les développeurs ont créées pour eux et qui elles-mêmes utilisent le shell. Les applications avec interface graphique sont plus intuitives, conviviales et rassurantes pour l'utilisateur, mais le brident dans son utilisation de la machine.
Tu l'auras compris, apprendre à utiliser le shell, c'est prendre le contrôle de l'ordinateur.
Découvre les différents shells avec la première partie de ce tuto "qu'est-ce qu'un shell"
Les commandes
Un langage met à disposition de celui qui l'utilise un ensemble de commandes. Le shell n'échappe pas à la règle. Nous allons découvrir ensemble comment s'en servir.
La première chose que tu dois trouver, c'est un interpréteur qui comprend le shell. Sous Linux, tu peux ouvrir un terminal en pressant Ctrl+Alt+t, sous Mac tu trouveras un terminal dans les applications (Mac est basé sur un noyau UNIX).
Quelle est la différence entre Unix, Linux et Ubuntu ?
Ubuntu est une distribution du système d'exploitation Linux. Linux est construit sur un noyau Unix. Tu te souviens du schéma de l'étape précédente ? Eh bien les systèmes d'exploitation sont souvent livrés avec un ensemble d'applications qui caractérisent une distribution.
Une fois que tu es dans ton terminal, essaie les commandes suivantes une par une.
pwd
ls
cd ~
mkdir files
cd files
cat > hello.txt
Bonjour Madame
Ctrl+c
ls
cat hello.txt
Maintenant commentons. La commande pwd affiche le dossier courant, c'est le dossier dans lequel on se trouve.
ls permet d'afficher les dossiers et fichiers du dossier courant
cd veut dire change directory. Cette commande permet de changer le dossier courant
mkdir veut dire make directory. Elle parle d'elle-même, elle permet de créer un dossier dans le dossier courant.
La commande cat > hello.txt permet d'écrire dans le fichier hello.txt jusqu'à ce que tu pousses Ctrl-c
Si tu tapes cat hello.txt, ça affiche le contenu du fichier hello.txt
Pour finir le tour des commandes incontournables, je t'invite à jeter un oeil au 4e lien.
Voici une compilation des commandes utilisées au quotidien
Tu trouveras dans ce wiki un diagramme des systèmes Unix
Utiliser un terminal en ligne est un bon moyen de s'entrainer en attendant d'avoir une machine sous Linux
Ubuntu est une distribution Linux grand public. Avec une interface graphique intuitive et une installation archi simple, il permet à tous de passer au logiciel libre sans effort.
Les scripts
Un script est un ensemble de commandes regroupées dans un fichier. En fait, je suis en train de te dire que tu peux créer tes propres commandes à partir des commandes fournies par le shell. Par exemple, dans ton terminal, tape les lignes suivantes :
cat > wcs.sh
#!/bin/bash
echo "| .--------------. || .--------------. || .--------------. |"
echo "| | _____ _____ | || | ______ | || | _______ | |"
echo "| ||_ _||_ _|| || | .' ___ | | || | / ___ | | |"
echo "| | | | / | | | || | / .' _| | || | | (__ _| | |"
echo "| | | |/ | | | || | | | | || | '. ___`-. | |"
echo "| | | / | | || | `.___.' | || | |`____)| | |"
echo "| | |__/ __| | || | `._____.' | || | |_______.' | |"
echo "| | | || | | || | | |"
echo "| '--------------' || '--------------' || '--------------' |"
Ctrl+c
Tu viens de créer ton premier script qui affiche WCS en ASCII art. Pour le tester, lance la commande
./wcs.sh
Si tu as un problème de permission, donne les droits en exécution au fichier avec la commande suivante
chmod +x wcs.sh
Challenge
Un script poli
Je te propose pour ce challenge de créer un script qui salue l'utilisateur. Le script bonjour.sh prend en paramètre le nom de la personne à saluer. On devra avoir le retour suivant :
$ ./bonjour.sh Romain
bonjour Romain
Crée un gist avec le fichier bonjour.sh et poste en solution un lien vers ce gist.
Bonus : Si aucun paramètre n'est saisi, le script saluera l'utilisateur connecté.
Critères de validation
- Le script est dans un fichier nommé bonjour.sh
- La première ligne du script indique le shell à utiliser
- Le script accepte un paramètre
- Le script affiche "bonjour $paramètre"
Ressources partagées sur cette quête
- Permet de comprendre ce qu'est un paramètre dans un scripthttps://www.commentcamarche.net/faq/5444-bash-les-arguments-parametres
- Le même genre, version cheat sheethttps://devhints.io/bash