Pour les articles homonymes, voir ILC et CLI.
Une interface en ligne de commande ou ILC (en anglais : command line interface, couramment abrégé CLI) est une interface homme-machine dans laquelle la communication entre l'utilisateur et l'ordinateur s'effectue en mode texte :
Une interface en ligne de commande peut servir aussi bien pour lancer l'exécution de divers logiciels au moyen d'un interpréteur de commandes, que pour les dialogues avec l'utilisateur de ces logiciels. C'est l'interaction fondamentale entre un homme et un ordinateur (ou tout autre équipement informatique).
Lorsqu'une interface est prête à recevoir une commande, elle l'indique par une invite de commande. Celle-ci, parfois désignée par l'anglicisme prompt, consiste en quelques caractères, en début de ligne (généralement, le nom de compte de l'utilisateur, et/ou l'unité logique par défaut, et/ou le chemin par défaut, et/ou date…), se terminant par un caractère bien connu (souvent « ] », « # », « $ » ou « > »), invitant l'utilisateur à taper une commande.
L'interface en ligne de commande est la plus ancienne des interfaces conversationnelles développées sur des ordinateurs. Avant cela, les ordinateurs fonctionnaient en traitement par lots : on soumettait à l'ordinateur des données enregistrées sur une série de cartes perforées ou une bande perforée. Ces données indiquaient à l'ordinateur quels programmes lancer et de quelles informations ces programmes disposaient pour s'exécuter. Le résultat du traitement (réussi ou erroné) était imprimé sans qu'aucun dialogue avec l'utilisateur ne soit intervenu.
L'apparition des télétypes dans les années 1960, puis, plus tard des consoles à partir des années 1970, qui sont des périphériques qui reçoivent et envoient des caractères à l'ordinateur, a permis le travail sur ordinateur sous la forme de sessions. Le dialogue entre l'utilisateur et l'ordinateur s'effectuait alors en ligne de commandes.
À partir des années 1980, l'apparition de terminaux en mode graphique et des souris a permis le développement des interfaces graphiques, plus appréciées du grand public, peut être parce qu'elles ne nécessitent pas d'apprendre les noms de différentes commandes avant d'utiliser un ordinateur. Ce changement de paradigme de l'interface en ligne de commande vers des interfaces graphiques (GUI) est lié notamment à la mise sur le marché par Apple du Lisa en janvier 1983, puis surtout du Macintosh en janvier 1984 : ces deux modèles d'ordinateurs sont les premiers ordinateurs grand public à utiliser des interfaces de type Windows, Icons, Menus and Pointing device (WIMP), manipulables à la souris et reprenant à l'écran la métaphore du bureau[1]. Néanmoins, tout particulièrement sur les systèmes d'exploitation dérivés d'Unix, les interfaces en ligne de commandes restent encore de nos jours appréciées de certains informaticiens, étant donné la richesse de leurs possibilités.
L'une des particularités du système d'exploitation Unix, dont Linux est dérivé, est que, dès son origine, il a disposé de plus d'une centaine de logiciels, effectuant souvent des traitements très simples, tous utilisables en ligne de commandes.
Les commandes élémentaires sous Unix sont de la forme :
$> commande options fichiers_ou_données
La commande apparaissant en début de ligne est presque toujours le nom d'un programme. Ce programme peut être une commande du système d'exploitation, un logiciel écrit par un utilisateur (souvent en langage C) ou un shell. Quelques rares commandes comme la commande cd (changement de dossier / répertoire) ne peuvent pas être traitées correctement par un logiciel spécifique. Elles sont dans ce cas directement exécutées par l'interpréteur de commandes.
Certaines de ces commandes peuvent s'exécuter en tapant au clavier seulement leur nom. Mais la plupart des commandes acceptent des options (un tiret suivi d'une ou plusieurs lettres) qui permettent d'utiliser la commande autrement que dans son mode de fonctionnement par défaut. Enfin, bon nombre de commandes sont suivies d'un ou plusieurs noms de fichier, répertoire ou autre, avec lesquels elles vont travailler. Toutes les informations séparées par des espaces à droite du nom de la commande sont appelées arguments de la ligne de commandes.
Exemple :
$> cat -e fichier1
La commande cat permet d'afficher le contenu de fichier1 sur la sortie standard. L'option -e va également permettre d'afficher les caractères non imprimables et en particulier un signe $ à chaque saut de ligne.
cat
fichier1
-e
$
Le langage C a été conçu pour permettre de récupérer facilement les arguments de la ligne de commandes depuis le logiciel qui les utilise[2],[3].
Enfin, afin de savoir comment employer un logiciel, une documentation (Man pages) est à la disposition de l'utilisateur. Elle s'emploie en faisant précéder la commande par man.
man
Une option en ligne de commande ou plus une option (que l’on appelle aussi parfois un « flag ») modifie le fonctionnement d'une commande. L’effet de l’option dépend de la commande. Généralement, les options suivent immédiatement le nom de la commande sur la ligne de commande et sont séparées entre elles par des espaces.
Le format des options est très variable. Le plus souvent, la syntaxe utilisée repose sur une convention plutôt que sur une exigence du système d’exploitation. Le plus souvent, sous Unix, les options sont introduites par - et sont sensibles à la casse. Les monogrammes sont fréquents, mais les programmes récents ont tendance à proposer des options dont les noms sont longs et plus clairs.
Il est impossible de savoir a priori quelles options un programme reconnaît, à moins de consulter sa documentation. Cependant, il est d’usage courant (mais pas systématique) qu’un programme affiche un résumé de ses options lorsqu’il est lancé en ligne de commande avec l’une des options suivantes : ?; -?; -h; /?; /h; -help; ou --help.
Par défaut, les commandes conversationnelles récupèrent les données tapées par l'utilisateur au clavier. Le résultat de leur exécution s'affiche à l'écran. En cas d'erreur à l'exécution, les messages d'erreur apparaissent aussi à l'écran.
Il est possible d'indiquer à l'interpréteur de commandes que des données en entrée ou en sortie doivent être récupérées/stockées dans des fichiers plutôt qu'au clavier et à l'écran. Pour cela, différents types de redirection des entrées/sorties sont disponibles[4] :
< entree
> sortie
>> sortie
2> erreur
2>> erreur
2>&1
1>&2
Exemples :
sort monfichier
affiche à l'écran les lignes du fichier monfichier classées par ordre alphabétique. Si le fichier monfichier n'existe pas, un message d'erreur apparaît à l'écran.
monfichier
sort monfichier > resultat 2> problemes
mémorise dans le fichier resultat les lignes du fichier monfichier classées par ordre alphabétique. Si le fichier monfichier n'existe pas, un message d'erreur apparaît dans le fichier problemes.
resultat
problemes
Les systèmes d'exploitation de type Unix permettent d'enchaîner l'exécution de plusieurs commandes. Les données en sortie d'une commande sont utilisées en entrée de la commande suivante sans qu'il soit nécessaire de recourir à des fichiers intermédiaires.
La syntaxe générale est :
commande1 options arguments | commande2 options | commande3...
find / -size +1000k -mtime -7 | sort | tee trace | less
find
sort
tee
trace
less
En une seule ligne de commandes, la commande ci-dessus recherche dans tous les répertoires de l'ordinateur les fichiers de plus de 1000 kilooctets modifiés durant les 7 derniers jours, en affiche page par page avec possibilité de se déplacer dans la liste les chemins d'accès triés par ordre alphabétique, et mémorise également ces chemins d'accès dans le fichier trace.
Des métacaractères peuvent être utilisés dans les lignes de commandes pour exprimer des noms de fichiers qui possèdent une partie commune :
?
*
[c1-c2]
c1
c2
\
.
/usr/bin/vi*
/usr/bin
/dev/hd[abcd][0-9]
/dev
?a?
Les ` entourant une commande permettent d'utiliser le résultat de cette commande comme argument(s) dans la ligne de commande.
`
$> echo "Nous sommes le" `date +%d/%m/%y` "et il est" `date +%H:%M:%S`
affiche une phrase contenant la date et l'heure courante. Pour cela, la commande date est exécutée deux fois avec un format de sortie différent.
date
$> echo "2 + 2 =" `expr 2 + 2`
affiche « 2 + 2 = 4 » après avoir fait le calcul.
;
&&
||
echo test1 || echo test2
&
MS-DOS a été créé au tout début des années 1980. Il fonctionne en ligne de commandes avec le même genre de syntaxe que les commandes Unix. Mais la liste des commandes disponibles sous MS-DOS est beaucoup plus réduite.
Certaines commandes comme sort jouent le même rôle sous Unix et sous MS-DOS.
D'autres commandes ont un nom différent dans les deux systèmes d'exploitation. Ainsi, la commande find :
fgrep
grep -f
Les lignes de commandes MS-DOS ont globalement la même syntaxe que les commandes Unix, mais les possibilités sont plus réduites.
MS-DOS permet :
|
cmd.exe est l'interface en ligne de commande des systèmes d'exploitation de la famille Windows NT (incluant Microsoft Windows 2000, Microsoft Windows XP, Microsoft Windows Vista…). C'est une évolution de l'interface de MS-DOS.
Avec Windows Vista, apparaît un nouvel environnement en ligne de commande Windows PowerShell, fonctionnant également sous Windows XP SP2.