Linux : les fondamentaux de la ligne de commande
Quitter

Leçon 1 sur 18 · Utilisateur

Le terminal, le shell et l'invite

20 min Rocky Linux 9

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 : ls marche, LS n'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, Mes et documents.
  • Majuscules et minuscules comptent : Rapport.txt et rapport.txt sont 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 .bashrc de root contient déjà des alias de sécurité comme alias 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épond command not found.
  • Oublier l'espace entre la commande et l'option : ls-l n'existe pas, c'est ls -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 :

  1. demander à la machine qui vous êtes et garder la réponse dans un fichier ;
  2. faire de même avec la date ;
  3. demander au shell si cd est un programme ou une commande intégrée ;
  4. créer un alias permanent lt dans 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

  1. Quelle est la différence entre le terminal et le shell ?
  2. Que signifie le # à la fin de l'invite root@web01:/var/log# ? Dans quel dossier êtes-vous ?
  3. La commande LS -L fonctionne-t-elle ? Pourquoi ?
  4. Comment rendre un alias permanent ?
  5. Quelle touche complète automatiquement un nom de fichier ?
Réponses
  1. Le terminal est la fenêtre qui affiche et reçoit le texte ; le shell (bash) est le programme qui interprète les commandes.
  2. Vous êtes root (administrateur) ; le dossier courant est /var/log.
  3. Non : Linux distingue majuscules et minuscules. Il faut taper ls -l.
  4. En l'écrivant dans ~/.bashrc (puis source ~/.bashrc ou un nouveau shell).
  5. 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.

Exercices pratiques

À réaliser sur Rocky Linux 9

Le terminal en ligne ouvre bientôt. En attendant, réalisez ces tâches sur votre machine Linux, une machine virtuelle ou WSL.

  1. Enregistrez le nom de l'utilisateur connecté dans /root/moi.txt (commande whoami).
    Afficher un indiceLe signe > envoie le résultat d'une commande dans un fichier : whoami > /root/moi.txt
    Voir la solution
    whoami > /root/moi.txt

    Vérification : grep -qx root /root/moi.txt

  2. Enregistrez la date et l'heure actuelles dans /root/date.txt (commande date).
    Afficher un indiceMême principe : date, puis le signe >, puis le nom du fichier.
    Voir la solution
    date > /root/date.txt

    Vérification : test -s /root/date.txt

  3. Demandez au shell ce qu'est la commande cd (commande type) et enregistrez la réponse dans /root/type-cd.txt.
    Afficher un indicetype cd > /root/type-cd.txt — la réponse dit si c'est un programme ou une commande intégrée au shell.
    Voir la solution
    type cd > /root/type-cd.txt

    Vérification : grep -qi -e builtin -e intégrée /root/type-cd.txt

  4. Créez un raccourci permanent : ajoutez la ligne alias lt='ls -lt' à la fin du fichier /root/.bashrc.
    Afficher un indiceUtilisez >> (deux chevrons) pour AJOUTER à la fin : echo "alias lt='ls -lt'" >> /root/.bashrc
    Voir la solution
    echo "alias lt='ls -lt'" >> /root/.bashrc

    Vérification : grep -q "^alias lt='ls -lt'" /root/.bashrc

Références officielles consultées : Debian Reference — chapitre 1, tutoriels GNU/Linux ; Ubuntu Server Guide — prise en main de la ligne de commande. Texte original MasterLinux.