Appearance
Le Shell
Table des matières
Origines
Le terme shell signifie « coquille » en anglais. Ce nom reflète son rôle : il sert de couche externe (d'interface) autour du noyau du système d’exploitation. L’utilisateur interagit avec le système principalement via le shell.
- 1971 : Le premier shell, le Thompson Shell (sh), est créé par Ken Thompson pour Unix.
- 1979 : Le Bourne Shell (sh) de Stephen Bourne le remplace et devient la norme.
- 1989 : Bash (Bourne Again Shell) est créé par Brian Fox pour le projet GNU.
Bash est rapidement devenu le shell par défaut sur la plupart des distributions Linux.
Principe
Le shell est un interpréteur de commandes. Il s’agit d’une interface en ligne de commande qui permet d’interagir directement avec le système d’exploitation pour exécuter des commandes, manipuler des fichiers, et automatiser des tâches à travers des scripts.
Exemples de shells
- sh (Bourne Shell) : Le shell Unix original, simple et présent partout.
- Bash (Bourne Again SHell) : Le plus célèbre, par défaut sur la majorité des systèmes Linux et sur macOS. Il est riche en fonctionnalités et compatible avec
sh. - Zsh (Z Shell) : Un shell très populaire offrant des fonctionnalités avancées comme l’autocomplétion améliorée, la correction automatique et une personnalisation poussée.
- Fish (Friendly Interactive SHell) : Conçu pour être facile à utiliser, avec une syntaxe claire et des fonctionnalités prêtes à l'emploi.
Pourquoi utiliser un shell ?
Le shell offre une interface rapide, légère et puissante pour :
- exécuter des commandes ;
- automatiser des tâches répétitives via des scripts ;
- gérer des fichiers, des processus et des utilisateurs ;
- personnaliser son environnement de travail.
Le Terminal
Le terminal (ou plus précisément, l'émulateur de terminal) est l'application graphique qui nous donne accès au shell.
Il ne faut pas les confondre :
Terminal ➜ Interface d'affichage
- Rôle : Gère l'affichage et la saisie de texte.
- Exemples : GNOME Terminal, Konsole, Alacritty, Kitty.
Shell ➜ Interpréteur de commandes
- Rôle : Interprète et exécute les commandes que vous tapez dans le terminal.
- Exemples : Bash, Zsh, Fish.
Exemples de terminaux
- Gnome Terminal : Le terminal par défaut de l'environnement GNOME.
- Kitty : Un terminal moderne et très performant, utilisant le GPU pour l'affichage. Il est écrit en C et Go.
- Konsole : Le terminal par défaut de l'environnement KDE.
- Alacritty : Un terminal multiplateforme, écrit en Rust, qui se concentre sur la vitesse et la simplicité.
- Terminator : Permet de diviser l'écran en plusieurs panneaux pour gérer plusieurs sessions.


L'invite de commande (prompt)
C'est la ligne où l'on tape les commandes. Elle affiche des informations utiles.
bash
zil@myDebian:~$zil: Nom de l'utilisateur.@: Séparateur.myDebian: Nom de la machine (hostname).~: Répertoire courant (ici, le répertoire personnel,/home/zil).$: Type d'utilisateur.$pour un utilisateur standard,#pour le super-utilisateurroot.
INFO
Dans ce cours, l'invite de commande sera simplement représentée par $. Il ne faut pas le saisir lors de la frappe des commandes.
Raccourcis clavier utiles
| Raccourci | Description |
|---|---|
Ctrl + C | Interrompt (tue) la commande en cours. |
Ctrl + D | Ferme le shell (équivaut à la commande exit). |
Flèches haut/bas | Navigue dans l'historique des commandes. |
Ctrl + A / Ctrl + E | Déplace le curseur en début / fin de ligne. |
Ctrl + L | Efface l'écran du terminal (équivaut à la commande clear). |
Tab | Autocomplète une commande, un nom de fichier ou de répertoire. |
Ctrl + R | Recherche une commande dans l'historique. |
!! | Répète la dernière commande (fonctionnalité du shell). |
Structure d'une commande
Une commande respecte généralement cette structure :
commande [options] [arguments]
- La commande : Le nom du programme à exécuter (ex:
ls). - Les options : Modifient le comportement de la commande. Elles commencent souvent par
-(forme courte, ex:-l) ou--(forme longue, ex:--list). - Les arguments : Les données sur lesquelles la commande opère (ex: un chemin de fichier
/home/zil).
Commandes fondamentales
echo
Affiche le texte ou la valeur d'une variable.
bash
$ echo "Bonjour le monde"
$ echo $SHELL # Affiche le shell par défaut de l'utilisateur
whoami
Affiche le nom de l'utilisateur actuellement connecté.
bash
$ whoamipwd (print working directory)
Affiche le chemin complet du répertoire de travail actuel.
bash
$ pwd
ls (list)
Liste les fichiers et répertoires.
bash
$ ls # Liste le contenu du répertoire courant
bash
$ ls -l # Affiche une liste détaillée
bash
$ ls -l / # Liste le contenu de la racine
clear
Efface l'écran du terminal.
bash
$ clearObtenir de l'aide
--help: La plupart des commandes affichent une aide rapide avec cette option.bash$ pwd --help
man(manual) : Affiche le manuel complet d'une commande.bash$ man pwd
barre d'espacepour descendre d'une pageflèche baspour descendre d'une ligneflèche hautpour remonter d'une ligneqpour quitter
explainshell.com
Le site explainshell.com est un excellent outil pour décomposer et comprendre des commandes complexes. Il suffit de saisir une commande pour obtenir une explication détaillée de chaque partie.
Informations système
lsb_release
Affiche des informations sur la distribution Linux.
bash
$ lsb_release -a
Commande non trouvée ?
lsb_release n'est pas toujours installé. Une méthode plus universelle est d'afficher le contenu du fichier /etc/os-release avec la commande cat /etc/os-release
uname (Unix name)
Affiche des informations sur le noyau du système.
bash
$ uname -a # Affiche toutes les informations
hostname
Affiche le nom de la machine.
bash
$ hostnamenproc (number of processors)
Affiche le nombre de cœurs de processeur disponibles.
bash
$ nprochistory
Affiche l'historique des commandes que vous avez tapées.
bash
$ history
bash
$ history -c # Efface l'historiqueexit
Ferme la session du shell.
bash
$ exitlsblk (list block devices)
La commande lsblk permet de lister les périphériques de bloc (disques, partitions, etc.) connectés au système. Elle affiche une vue hiérarchique des disques et de leurs partitions.
$ lsblk
Le système est sur `/`, qui est la partition principale (sda2) du disque dur et qui a une taille de 7Go.
Le répertoire `/home` est sur une autre partition (sda6) de 8,6Go.
Pratique 💃
Pratiquez ces commandes dans votre terminal pour vous familiariser avec elles. N'hésitez pas à utiliser --help ou man pour explorer davantage chaque commande.
Quiz 🎉
👋🏾 Cliquez sur la bonne réponse.
1 / 13 👉🏾 Quel est le rôle principal du shell dans un système d’exploitation ?
A. Gérer le matériel informatique
B. Servir de couche d’interface entre l’utilisateur et le système
C. Installer des logiciels
D. Exécuter des programmes graphiques