Leçon 1 sur 18 · Utilisateur
Le terminal, le shell et l'invite
Objectif
Savoir ce qui se passe quand vous tapez une commande : qui la lit, qui l'exécute, et comment lire la ligne qui vous attend à l'écran. C'est la porte d'entrée de tout le reste du cours.
L'essentiel
- Le terminal est la fenêtre ; le shell est le programme qui lit vos commandes (sur Linux, presque toujours bash).
- L'invite (le prompt) vous dit qui vous êtes, sur quelle machine et dans quel dossier. Elle finit par
$(utilisateur normal) ou#(root, l'administrateur). - Une commande s'écrit :
commande options arguments, séparés par des espaces. - Linux distingue majuscules et minuscules :
lsmarche,LSn'existe pas. - La touche Tab complète les noms, la flèche haut rappelle les commandes précédentes, Ctrl+C arrête une commande.
1. Terminal, console, shell : trois mots, trois choses
Imaginez une caisse de supermarché :
- l'écran et le clavier de la caisse, c'est le terminal : il affiche et il reçoit ce que vous tapez ;
- la caissière qui comprend « deux pains et un litre de lait », c'est le shell : elle interprète votre demande ;
- l'entrepôt qui fournit les produits, c'est le noyau Linux : c'est lui qui fait le vrai travail (lire le disque, lancer les programmes).
Sur un serveur, il n'y a souvent aucune interface graphique. Vous vous y connectez à distance (avec ssh, que nous verrons plus tard) et vous arrivez directement dans un shell. C'est pour ça que la ligne de commande est la compétence de base de l'administrateur.
Il existe plusieurs shells : sh (le shell historique, normalisé par POSIX), bash (le plus courant sur Linux), zsh (par défaut sur macOS), dash (un sh très léger utilisé par Debian et Ubuntu pour les scripts système). Dans ce cours, nous utilisons bash : il est présent sur Red Hat, Debian et Ubuntu.
echo $SHELL # le shell de connexion de votre compte, par exemple /bin/bash
echo $0 # le shell qui tourne en ce moment, par exemple -bash ou bash
cat /etc/shells # la liste des shells installés sur la machine
2. Lire l'invite
Quand le shell attend une commande, il affiche une invite. Sur la plupart des distributions, elle ressemble à ceci :
[karim@srv-boutique ~]$ ← Rocky / RHEL
karim@srv-boutique:~$ ← Debian / Ubuntu
root@srv-boutique:/etc# ← root, dans le dossier /etc
Décomposons :
| Morceau | Signification |
|---|---|
karim |
l'utilisateur connecté |
srv-boutique |
le nom de la machine (hostname) |
~ |
le dossier courant ; ~ veut dire « mon dossier personnel » |
$ |
vous êtes un utilisateur normal |
# |
vous êtes root : tout est permis, prudence ! |
Dans la documentation (et dans ce cours), une ligne qui commence par
$se tape en utilisateur normal, une ligne qui commence par#se tape en root. Ne recopiez pas le$ou le#lui-même.
Le format de l'invite est réglé par la variable PS1. Vous pouvez la regarder sans la modifier :
echo "$PS1" # par exemple : [\u@\h \W]\$ (\u = utilisateur, \h = machine, \W = dossier)
3. Vos premières commandes
Ces commandes ne modifient rien : vous pouvez les taper sans crainte.
whoami # qui suis-je ? → karim
hostname # sur quelle machine ? → srv-boutique
date # date et heure
uptime # depuis quand la machine tourne, et sa charge
uname -r # la version du noyau Linux
cal # un petit calendrier (pas toujours installé)
clear # efface l'écran (ou Ctrl+L)
4. La forme d'une commande
Une commande se compose de trois parties séparées par des espaces :
ls -l /etc
#│ │ └── argument : sur QUOI agir (ici le dossier /etc)
#│ └─────── option : COMMENT agir (ici « format long »)
#└──────────── la commande elle-même
Quelques règles à connaître dès le premier jour :
- Les options courtes commencent par un tiret :
-l,-a. On peut les grouper :ls -la=ls -l -a. - Les options longues commencent par deux tirets :
--all,--help. Elles sont plus lisibles dans un script. - Un nom qui contient une espace doit être entre guillemets :
ls "Mes documents". Sans guillemets, le shell voit deux arguments,Mesetdocuments. - Majuscules et minuscules comptent :
Rapport.txtetrapport.txtsont deux fichiers différents.
5. Commandes intégrées et programmes
Certaines commandes sont des programmes rangés sur le disque (/usr/bin/ls). D'autres sont intégrées au shell (builtin), comme cd, echo ou type. La commande type vous dit ce qu'est un nom :
type ls # ls is aliased to `ls --color=auto' (un alias, voir plus bas)
type cd # cd is a shell builtin (intégrée au shell)
type date # date is /usr/bin/date (un programme)
Pour savoir où se trouve un programme, command -v date ou which date (ce dernier n'est pas toujours installé).
6. Gagner du temps au clavier
Un administrateur tape beaucoup. Ces raccourcis de bash sont valables sur toutes les distributions :
| Touche | Effet |
|---|---|
| Tab | complète un nom de commande ou de fichier ; deux fois Tab = liste des possibilités |
| ↑ / ↓ | remonte / redescend dans les commandes déjà tapées |
| Ctrl+R | recherche dans l'historique (tapez un bout de commande) |
| Ctrl+C | interrompt la commande en cours |
| Ctrl+L | efface l'écran |
| Ctrl+A / Ctrl+E | début / fin de la ligne |
| Ctrl+D | sur une ligne vide : ferme le shell (comme exit) |
history # la liste numérotée de vos dernières commandes
!42 # relance la commande numéro 42 de l'historique
!! # relance la dernière commande
L'historique est enregistré dans le fichier ~/.bash_history quand vous quittez le shell.
7. Les alias : vos propres raccourcis
Un alias remplace un mot par une commande plus longue. Exemple : le gérant d'une boutique consulte souvent les fichiers les plus récents du dossier des ventes.
alias lt='ls -lt' # lt affichera les fichiers du plus récent au plus ancien
lt # on l'utilise comme une commande
alias # liste tous les alias définis
unalias lt # supprime l'alias
Un alias tapé ainsi disparaît quand vous fermez le shell. Pour le garder, on l'écrit dans le fichier ~/.bashrc, que bash lit à chaque ouverture :
echo "alias lt='ls -lt'" >> ~/.bashrc # >> ajoute à la fin du fichier
source ~/.bashrc # recharge le fichier tout de suite
Sur Rocky / RHEL, le
.bashrcde root contient déjà des alias de sécurité commealias rm='rm -i'(demande de confirmation avant suppression). Ce n'est pas le cas sur Debian et Ubuntu : la même commande y supprime sans demander.
8. Root, l'utilisateur tout-puissant
Le compte root peut tout faire, y compris détruire le système en une commande. Sur un vrai serveur, on travaille en utilisateur normal et on ne devient root que pour les tâches d'administration (avec sudo, que vous verrez dans les parcours par distribution). Dans les labs de MasterLinux, vous êtes root pour simplifier : c'est un bac à sable qui sera effacé, vous ne risquez rien.
Pièges fréquents
- Recopier le
$ou le#des exemples : le shell répondcommand not found. - Oublier l'espace entre la commande et l'option :
ls-ln'existe pas, c'estls -l. - Taper en majuscules (
Ls,CD) : Linux ne reconnaît pas la commande. - Coller une commande trouvée sur Internet sans la comprendre, surtout en root. Lisez-la d'abord, vérifiez chaque mot.
Lab
Votre terminal Rocky Linux vous attend, en root (invite terminée par #). Vous allez :
- demander à la machine qui vous êtes et garder la réponse dans un fichier ;
- faire de même avec la date ;
- demander au shell si
cdest un programme ou une commande intégrée ; - créer un alias permanent
ltdans votre.bashrc.
Le signe > envoie le résultat d'une commande dans un fichier (il le remplace), >> l'ajoute à la fin. Vous les étudierez en détail dans la leçon 1.8. Cliquez sur Vérifier après chaque tâche.
Quiz
- Quelle est la différence entre le terminal et le shell ?
- Que signifie le
#à la fin de l'inviteroot@web01:/var/log#? Dans quel dossier êtes-vous ? - La commande
LS -Lfonctionne-t-elle ? Pourquoi ? - Comment rendre un alias permanent ?
- Quelle touche complète automatiquement un nom de fichier ?
Réponses
- Le terminal est la fenêtre qui affiche et reçoit le texte ; le shell (bash) est le programme qui interprète les commandes.
- Vous êtes root (administrateur) ; le dossier courant est
/var/log. - Non : Linux distingue majuscules et minuscules. Il faut taper
ls -l. - En l'écrivant dans
~/.bashrc(puissource ~/.bashrcou un nouveau shell). - La touche Tab.
Sources de référence : Debian Reference (licence libre), Ubuntu Server Guide (CC BY-SA 3.0), documentation Red Hat Enterprise Linux (CC BY-SA 3.0). Texte original MasterLinux.