Ligne de commande

Arthur Perret (Université Jean Moulin Lyon 3)

🚧 Page en construction — Dernière mise à jour : 19/05/2023

Cette page propose une introduction à la ligne de commande, un mode d’interaction avec les ordinateurs qui repose sur des instructions textuelles. Je donne ici quelques repères terminologiques et indications pratiques pour aborder cet outil extrêmement utile mais mal connu.

1 Notions

1.1 Ligne de commande

La ligne de commande est une interface conversationnelle entre humain et ordinateur : l’humain saisit des instructions et l’ordinateur affiche des informations en retour. Ce dialogue passe essentiellement par du texte : les instructions humaines sont écrites, de même que les messages renvoyés par l’ordinateur.

La ligne de commande est apparue dans les années 1960 et 1970 avec l’invention des télétypes puis des consoles. Ces périphériques, constitués au minimum d’un écran et d’un clavier, permettaient pour la première fois un dialogue entre humain et ordinateur.

Un exemple d’équipement informatique des années 1970. À l’arrière-plan, des unités centrales (mainframe). À l’avant-plan, des consoles.

1.2 Terminal

On désigne couramment comme « terminal » un programme qui émule le fonctionnement d’un terminal informatique (comme une console). Il s’agit d’une application qui affiche des fenêtres, dans lesquelles on peut interagir en ligne de commande avec le système d’exploitation, par l’intermédiaire d’un shell (voir section suivante pour la définition de ce dernier terme).

Un exemple de terminal, sur macOS. La barre au sommet de la fenêtre (fond clair) affiche le nom du dossier courant et du shell (ici, Zsh). L’intérieur de la fenêtre (fond noir) affiche les interactions successives entre humain et machine.

Un terminal inclut généralement des fonctionnalités qui facilitent le travail en ligne de commande. Ceci inclut par exemple l’usage de couleurs pour distinguer différents types d’informations, et l’autocomplétion des noms de répertoires et de fichiers pour accélérer la saisie.

1.3 Shell

Un shell est un programme qui permet d’interagir avec le système d’exploitation. Le nom est dérivé du fait qu’il s’agit de la couche la plus extérieure du système d’exploitation, sa « coque » (en anglais shell) par opposition à son « noyau » (kernel).

Un shell donne accès à des fonctionnalités du système d’exploitation, comme gérer des fichiers et exécuter des applications. Un shell est toujours associé à un langage de script, dans lequel on rédige les instructions données au shell.

J’y reviens plus en détail dans la section Utiliser un shell.

1.4 Invite de commande

L’invite de commande (en anglais prompt) est un indicateur destiné à l’utilisateur, qui lui montre que le shell est prêt à recevoir des instructions. Concrètement, il s’agit d’une succession de caractères textuels, dont la forme dépend du système d’exploitation et du shell.

L’invite inclut généralement des informations comme le chemin du répertoire courant (le répertoire dans lequel se situe l’utilisateur à un instant t). Elle se termine par un caractère tel que $, %, #, :, > ou -, qui dans certains cas indique le statut de l’utilisateur (administrateur ou nom). L’invite peut occuper une ou plusieurs lignes.

Reprenons l’exemple de terminal montré plus haut. Ici l’invite comporte deux lignes. La première ligne indique le répertoire courant ~/Documents (où le tilde ~ symbolise le répertoire utilisateur /Users/arthurperret). La seconde ligne affiche le signe pour cent % qui indique que l’utilisateur a le statut d’administrateur, et un curseur qui marque l’emplacement où se fera l’insertion des caractères lorsque l’utilisateur écrira une commande.

2 Utiliser un terminal

2.1 Ouvrir un terminal

Sur macOS, ouvrir l’application « Terminal » située dans « Applications/Utilitaires ».

Sur Windows, ouvrir soit « Invite de commande » soit « Powershell ». Ce dernier est un terminal plus moderne, qui requiert moins de paramétrage manuel. (Par exemple, si vous utilisez « Invite de commande », il peut être utile de saisir la commande chcp 65001 avant toute chose pour régler l’encodage sur UTF-8. Pas besoin de faire cela dans PowerShell.)

Sur Linux, chercher une application nommée « Terminal » (ou qui inclut ce mot dans son nom) parmi les applications installées.

Vous devriez maintenant voir une fenêtre avec une invite de commande :

user@computer:~$  

L’exemple ci-dessus correspond au shell Bash sur Linux.

Pour le reste de ce guide, nous utiliserons un exemple de terminal simplifié basé sur le terminal de macOS, avec juste cette invite :

% 

2.2 Commandes

2.3 Où suis-je ?

3 Utiliser un shell

3.1 L’art de la tuyauterie

Dans un shell, on appelle « entrée » (input) les données qui sont transmises à un programme, et « sortie » (output) les données générées par un programme au terme de son exécution.

L’exemple le plus simple d’entrée et de sortie est le cas où un utilisateur saisit une commande et où le terminal affiche un message en retour : l’entrée, c’est la commande de l’utilisateur ; la sortie, c’est le message affiché par l’ordinateur dans le terminal. (Visuellement, on peut distinguer facilement entrée et sortie : seule l’entrée est précédée par l’invite de commande.)

Mais au-delà de cet exemple de dialogue basique, le shell inclut différents mécanismes qui permettent de manipuler entrée et sortie. Le plus emblématique est le tuyau (pipe), symbolisé par la barre droite | : il permet de transformer la sortie d’un processus en l’entrée du processus suivant. C’est un opérateur de redirection : il redirige un flux de sortie vers un flux d’entrée.

Exemple : history | grep Documents

Explication : La commande history génère une liste des commandes exécutées jusqu’ici dans le terminal. Lorsque history est exécutée seule, cette sortie s’affiche dans le terminal. Mais ici, on redirige cette sortie vers une autre commande, grep. Cette dernière sert à chercher du texte. Ici, on lui demande de chercher le mot « Documents ». Lorsque grep est utilisée seule, elle requiert qu’on lui indique le nom d’un fichier dans lequel la recherche doit être effectuée. Mais lorsqu’on lui fournit un flux d’entrée via |, c’est dans ce dernier qu’elle effectue la recherche. Cet enchaînement revient donc à chercher le mot « Documents » dans l’historique des commandes.

Le tuyau | symbolise la philosophie Unix : chaque programme fait une seule chose mais le fait très bien, et passe le résultat au programme suivant. Cette philosophie prend tout son sens dans le contexte des systèmes dérivés d’Unix (Linux et macOS), dans lesquels sont pré-installés des programmes de ce type, mais elle est applicable aussi à Windows, moyennant quelques installations.

3.2 Exemples de shells

3.3 Langage de script shell