Alpinux Jouer & apprendre
← Parcours

Cours · 40 min

Le terminal : se repérer et se déplacer

Lire l'invite, comprendre une commande, savoir où l'on est et se déplacer dans les dossiers avec pwd, ls, cd et cat.

Niveau :
🖥️ Jouer ensuite →

Pourquoi apprendre le terminal ?

Avec la souris, vous choisissez parmi ce qu'on vous propose : des icônes, des menus, des boutons. C'est pratique, mais limité à ce que quelqu'un a prévu pour vous.

Le terminal, c'est l'inverse : vous écrivez ce que vous voulez que l'ordinateur fasse. C'est un peu comme la différence entre montrer du doigt un plat sur une photo et parler directement au cuisinier : plus précis, plus rapide, et on peut demander ce qui n'est pas sur la carte.

Et surtout, c'est comme ça que l'on travaille sur les serveurs : les ordinateurs qui font tourner les sites web, les jeux en ligne ou les réseaux sociaux. La grande majorité tourne sous Linux, sans écran ni souris, dans des salles pleines de machines. On les pilote à distance… en tapant des commandes.

Le terminal d'essai

En bas à droite de cette page, le bouton ⌨️ Terminal d'essai ouvre un terminal simulé. Chaque bouton ▶ Essayer du cours y prépare la commande : appuyez sur Entrée pour la lancer. C'est une simulation, rien ne peut casser.

L'invite : le terminal vous attend

Trois mots qu'on mélange souvent :

  • le terminal, c'est la fenêtre noire ;
  • le shell (ici bash), c'est le programme qui lit ce que vous tapez et le fait exécuter ;
  • l'invite (en anglais prompt), c'est le texte au début de la ligne qui signale « j'attends une commande ».

L'invite n'est pas décorative, elle vous renseigne :

Morceau Signification
alex votre nom d'utilisateur
@srv-web01 le nom de la machine sur laquelle vous êtes
~ le dossier où vous vous trouvez (~ = votre dossier personnel)
$ vous êtes un utilisateur normal (# signifierait l'administrateur, root)
whoami
hostname

Anatomie d'une commande

Une commande se lit comme une phrase : un verbe, parfois des réglages, et ce sur quoi on agit.

ls   -l   /etc
│    │    └── l'argument : sur quoi agir (ici, le dossier /etc)
│    └─────── l'option : comment le faire (ici, en format détaillé)
└──────────── la commande : quoi faire (ici, lister)
  • Les espaces séparent les morceaux : ls-l ne veut rien dire, ls -l oui.
  • Les majuscules comptent : ls fonctionne, LS n'existe pas.
  • Les options courtes se combinent : ls -l -a s'écrit aussi ls -la.
  • Les noms des commandes sont souvent des abréviations de mots anglais : ls = list, cd = change directory, pwd = print working directory.
ls
ls -l
ls -l /etc
LS

Le dernier essai répond « commande introuvable » : c'est normal, et ce n'est pas grave. Une erreur dans le terminal n'est pas une catastrophe, c'est une information. Lisez toujours le message : il dit presque toujours ce qui ne va pas.

Le manuel est intégré

man ls affiche le mode d'emploi de ls. Sur un vrai Linux, ls --help donne aussi un résumé des options. Personne ne connaît toutes les options par cœur : les pros vérifient tout le temps.

Où suis-je ? L'arborescence

Sous Linux, tous les fichiers sont rangés dans un seul grand arbre de dossiers. Son point de départ s'appelle la racine et s'écrit /. Pas de « C: » ni de « D: » comme sous Windows : même une clé USB apparaît quelque part dans cet arbre.

/                         ← la racine, tout part d'ici
├── etc/                  ← les réglages du système
├── home/                 ← les dossiers des utilisateurs
│   ├── alex/             ← votre dossier personnel, alias ~
│   │   ├── bienvenue.txt
│   │   └── projets/
│   │       ├── api/
│   │       └── site-web/
│   └── camille/
├── tmp/                  ← les fichiers temporaires
└── var/                  ← les données qui changent : journaux, sites web…

Une adresse dans cet arbre s'appelle un chemin. Elle se lit de gauche à droite, comme une adresse postale qu'on écrirait à l'envers : /home/alex/projets veut dire « à la racine, entrer dans home, puis dans alex, puis dans projets ».

À chaque instant, le terminal est « quelque part » dans l'arbre : c'est le dossier courant. Pour le connaître :

pwd

Chemins absolus et relatifs

Il y a deux façons d'indiquer un chemin, exactement comme pour indiquer un trajet.

  • Absolu : il commence par / et part de la racine. C'est l'adresse complète : elle marche où que vous soyez. Exemple : /home/alex/projets.
  • Relatif : il ne commence pas par / et part du dossier courant. C'est « la deuxième porte à gauche » : ça dépend d'où l'on part. Exemple : projets/site-web.

Quelques raccourcis à connaître par cœur :

Raccourci Signification
/ la racine
~ votre dossier personnel (/home/alex)
. le dossier courant (« ici »)
.. le dossier parent (« un cran au-dessus »)
- avec cd : le dossier où vous étiez juste avant

Regarder autour de soi : ls

ls liste le contenu d'un dossier : le dossier courant si on ne précise rien.

ls
ls projets
ls /

Dans un vrai terminal, les couleurs aident. Le plus souvent : dossiers en bleu, programmes en vert, fichiers ordinaires en blanc.

Les fichiers cachés

Un fichier dont le nom commence par un point (.bashrc, .ssh…) est caché : ls ne le montre pas, pour ne pas encombrer. Ce sont en général des fichiers de réglages. L'option -a (all) les affiche :

ls -a

Le format détaillé

L'option -l (long) affiche une ligne par fichier, avec beaucoup d'informations :

-rwxr-xr-x  1  root  root  154  oct. 22 08:00  deploy.sh
│           │  │     │     │    │              └── le nom
│           │  │     │     │    └── la date de dernière modification
│           │  │     │     └── la taille, en octets
│           │  │     └── le groupe propriétaire
│           │  └── l'utilisateur propriétaire
│           └── le nombre de liens (on peut l'ignorer pour l'instant)
└── le type (d = dossier, - = fichier) puis les droits : on y revient au cours sur les permissions
ls -l
ls -la

Se déplacer : cd

cd (change directory) change le dossier courant.

Commande Effet
cd projets entrer dans le dossier projets (chemin relatif)
cd projets/site-web descendre de deux niveaux d'un coup
cd .. remonter d'un niveau
cd ../.. remonter de deux niveaux
cd /etc aller directement à /etc (chemin absolu)
cd ou cd ~ revenir dans son dossier personnel
cd - revenir au dossier précédent
cd projets/site-web
pwd
cd ..
ls
cd /etc
pwd
cd
pwd

Pas de nouvelles, bonnes nouvelles

Quand cd réussit, il n'affiche rien. C'est une habitude des commandes Linux : celles qui agissent (cd, mkdir, cp…) se taisent quand tout s'est bien passé. Si un message apparaît, lisez-le : c'est sans doute une erreur. Pour vérifier que cd a marché, regardez l'invite : elle indique le nouveau dossier.

Lire un fichier : cat

cat affiche le contenu d'un fichier texte, en entier.

cat bienvenue.txt
cat /etc/hostname
cat /etc/os-release

/etc/os-release décrit le système : c'est le premier fichier à lire pour savoir quel Linux on a devant soi.

Pour un fichier très long, cat fait tout défiler d'un coup. Sur un vrai Linux, on utilise plutôt :

  • less fichier pour le parcourir page par page (flèches pour se déplacer, q pour quitter) ;
  • head fichier pour les 10 premières lignes ;
  • tail fichier pour les 10 dernières.

Les raccourcis qui font gagner du temps

Touche Effet
Tab complète le nom d'une commande ou d'un fichier (deux fois : montre les choix possibles)
↑ et ↓ rappellent les commandes déjà tapées
Ctrl + C annule la commande en cours, ou la ligne en train d'être tapée
Ctrl + L efface l'écran (comme la commande clear)
history affiche la liste des commandes tapées

Tab, Tab, Tab

Tapez cat bien puis Tab : le nom se complète tout seul. La complétion évite les fautes de frappe et prouve que le fichier existe bien. Les habitués du terminal tapent rarement un nom en entier.

history

Les pièges classiques

« Aucun fichier ou dossier de ce type »

Le message le plus fréquent. Dans neuf cas sur dix, on n'est pas dans le dossier que l'on croit, ou le nom est mal écrit (majuscule, accent, faute de frappe). Malgré la formulation, le message veut simplement dire « ce nom n'existe pas ici ». Réflexe : pwd pour savoir où l'on est, ls pour voir ce qu'il y a, et Tab pour compléter le nom.

Les espaces dans les noms

cat mon fichier.txt cherche deux fichiers : mon et fichier.txt. Il faut entourer le nom de guillemets : cat "mon fichier.txt". C'est pour ça qu'on évite les espaces et les accents dans les noms de fichiers sous Linux.

Copier-coller dans le terminal

Dans un vrai terminal, Ctrl + C ne copie pas : il interrompt la commande en cours. Pour copier et coller, on utilise Ctrl + Maj + C et Ctrl + Maj + V.

Pour aller plus loin

Une commande, c'est un programme

ls, cat ou grep ne sont pas magiques : ce sont des programmes, des fichiers rangés dans /usr/bin. Quand vous tapez cat, bash parcourt une liste de dossiers, la variable PATH, jusqu'à trouver un programme de ce nom.

Certaines commandes, au contraire, sont des primitives : elles font partie de bash lui-même. C'est le cas de cd, et pour une bonne raison : un programme séparé ne pourrait pas changer le dossier courant du shell qui l'a lancé. La commande type indique à quelle catégorie appartient une commande.

echo $PATH
type cat
type cd
type pwd

Lien avec le programme de NSI

Les commandes de base, l'arborescence et les chemins font partie du thème « Architectures matérielles et systèmes d'exploitation » du programme de NSI de première. En terminale, le thème sur les processus prolonge ce qu'on voit ici : chaque commande lancée devient un processus.

Sur les ordinateurs de la salle

Ouvrez un terminal sur votre poste : Ctrl + Alt + T, ou cherchez « Terminal » dans le menu. Tout ce que vous venez de voir fonctionne pareil. Trois défis :

  1. Quelle distribution Linux est installée sur votre poste ? (indice : /etc/os-release)
  2. Combien y a-t-il de fichiers cachés dans votre dossier personnel, sans compter . et .. ?
  3. Quel est le chemin absolu de votre dossier personnel ? Est-ce le même que celui de votre voisin ?

Aide-mémoire

Commande Ce qu'elle fait
pwd affiche le dossier courant
ls liste le contenu du dossier
ls -a … y compris les fichiers cachés
ls -l … en format détaillé (droits, propriétaire, taille, date)
cd dossier entre dans un dossier
cd .. remonte d'un niveau
cd revient dans le dossier personnel
cat fichier affiche un fichier
man commande affiche le mode d'emploi
Tab complète les noms
↑ rappelle la commande précédente
Ctrl + C annule

/ la racine · ~ dossier personnel · . ici · .. le parent

Testez-vous

1. Vous êtes dans /home/alex/projets. Où mène cd .. ?

Dans /home/alex : .. remonte d'un niveau.

2. projets/api est-il un chemin absolu ou relatif ?

Relatif : il ne commence pas par /. Il ne fonctionne que depuis le dossier qui contient projets.

3. Pourquoi .bashrc n'apparaît-il pas avec ls ?

Son nom commence par un point : c'est un fichier caché. ls -a le montre.

4. Que signifie le ~ dans l'invite alex@srv-web01:~$ ?

Que l'on se trouve dans son dossier personnel, ici /home/alex.

5. Dans ls -l /etc, quel morceau est l'option, lequel est l'argument ?

-l est l'option (le format détaillé), /etc est l'argument (le dossier à lister).

🖥️
À vous de jouer : Premier jour sur le serveur

Connecté à srv-web01, vous découvrez le terminal : où suis-je, que contient ce dossier, comment m'y déplacer ?

Jouer →