Interpréteur de commandes
Un interpréteur de commandes (CLI pour command-line interpreter en anglais) est un programme faisant partie des composants de base d'un système d'exploitation. Sa fonction est d'interpréter les commandes qu'un utilisateur tape au clavier dans l'interface en ligne de commande.
Perspective historique
Les premiers systèmes capables d'interpréter des lignes de commandes sont apparus au début des années 1960, en même temps que le clavier informatique. Auparavant, les ordinateurs étaient uniquement utilisés en traitement par lots.
Sous DOS
Sous DOS, quelle que soit la mouture (MS-DOS, FreeDOS, DR-DOS, PC-DOS…), il existe un interpréteur nommé COMMAND.COM. Il existe aussi 4DOS (ou la version Norton NDOS) un interpréteur plus évolué mais consommant beaucoup plus de mémoire.
Sous Microsoft Windows
Sous Windows, jusqu'en 2009, le seul interpréteur de commande de Microsoft a été DOS.
L'interpréteur DOS se lance par l'utilitaire COMMAND.COM ou cmd.exe. Jusqu'à Windows 3.x, Windows n'était qu'une interface graphique du DOS, mais a commencé à proposer plus de fonctionnalités que lui à partir de Windows 95. La famille de Windows NT, jusqu'à Windows XP qui en est la version 5.1, se passe presque intégralement de la ligne de commande, et l'invite de commandes qu'elle propose n'est qu'un émulateur, largement bridé, de MS-DOS.
Depuis le 24 mars 2009, il y a un deuxième interpréteur de commande fourni par Microsoft : PowerShell 1.0 est distribué comme une mise à jour logicielle facultative par le service Windows Update de Microsoft pour Windows XP et Vista, et est intégré nativement dans Windows 7 en version 2.0.
Sous les systèmes UNIX
Sous UNIX, la ligne de commande a toujours été le moyen privilégié de communication avec l'ordinateur. Le Bourne shell (sh) est l'interpréteur originel de l'environnement UNIX. À son époque, sa grande originalité était l'utilisation de tubes (caractère « | »), qui permettent de connecter la sortie d'une commande à l'entrée d'une autre. On peut ainsi écrire des commandes complexes à partir de commandes simples.
GNU/Linux, la famille BSD et autres dérivés d'UNIX ont hérité de cette particularité, même s'ils disposent également d'interfaces graphiques complètes (notamment X Window et Xorg).
Parmi ces dérivés, Mac OS X se présente comme un environnement essentiellement graphique, mais dispose d'un interpréteur de commandes (tcsh ou bash) qui s'active à partir du programme Terminal.
D'autres langages de scripts tels que Perl, Python ou Ruby,remplacent progressivement les interpréteurs qui sont encore prédominants dans les environnements de démarrage de systèmes UNIX[réf. nécessaire].
La dépendance des interpréteurs vis-à-vis de commandes externes rend les scripts peu portables, même si les interpréteurs eux-mêmes ont été portés sur des environnements autres que leur environnement originel UNIX.
Dans les équipements réseau
Si aujourd'hui, de plus en plus d'équipements réseau proposent une interface graphique d'administration par pages web, les premières interfaces utilisateurs de ce type d'équipement ont été des interfaces en ligne de commande.
On citera le cas des équipements Cisco, et du CLI intégré dans le système d'exploitation IOS qui reste une référence de CLI (Cisco Like Interface pour ceux qui s'en inspirent).
Interpréteurs et environnements graphiques
L'invite est l'interface la plus simple à réaliser et conserve de nombreux avantages par rapport aux environnements graphiques :
- Précision et simplicité d'automatisation des tâches (mode batch) ;
- Contrôle à distance ;
- Uniformité ;
- Stabilité ;
- Faible consommation des ressources.
Beaucoup de serveurs ne s'administrent qu'en ligne de commande car il y a peu de raisons d'avoir besoin d'une interface graphique sur un serveur, interface qui pourrait être source de dysfonctionnements et dont la prise en main distante est plus ardue. Exception de Windows, où l'interface graphique est imposée, même si le serveur n'a pas d'écran, ainsi que de nombreux utilitaires comme Media Player. On notera tout de même l'apparition de version Core Serveur de MS 2008 Serveur, version dans laquelle l'interface graphique n'est pas installée, le pilotage se faisant en mode ligne de commande dans le langage propriétaire de Microsoft PowerShell, ou au travers de consoles de gestion Microsoft.
Dans l'utilisation bureautique quotidienne, les gestionnaires de fichiers graphiques, et autres menus de lancement d'applications tendent à remplacer l'interpréteur, en fournissant une alternative plus conviviale. Néanmoins, l'interpréteur reste l'outil le plus polyvalent, encore irremplaçable pour certaines tâches. Ainsi interpréteur et logiciels utilitaires en mode graphique sont complémentaires dans toute utilisation poussée de l'outil informatique.
En programmation Windows, on appelle aussi fonctions shell (ou shell API) les fonctions exportées par l'Explorer. Par exemple la fonction SHFileOperation()
s'occupe des manipulations de fichiers (copie, déplacement, effacement…)
La boucle d'interprétation
Le travail de tout interprète de commande peut se résumer à l'algorithme très simple suivant :
TANT QUE l'utilisateur ne ferme pas la session FAIRE # Émettre un signe d'invite (prompt) # Lire la ligne courante # Exécuter la commande indiquée sur cette ligne FIN
Quelques interpréteurs populaires
Interpréteur sous Windows
- Le programme COMMAND.COM sous MS-DOS, qui peut paraître désuet, mais qui occupe un minimum de place sur disque et en mémoire.
- Le programme cmd.exe sous Windows NT et ses dérivés.
- Windows PowerShell est le nouvel interpréteur de Microsoft, avec l'approche objet de .NET 2.0.
- L'Explorateur Windows (Explorer.exe) est l'interpréteur utilisé par l'interface graphique actuelle de Windows. Il est paramétré dans le registre par l'entrée HKey_Current_User\Software\Microsoft\Windows NT\CurrentVersion\Winlogon>Shell. L'interpréteur par défaut peut être remplacé par un interpréteur non Microsoft, comme LiteStep.
- Progman.exe était l'interpréteur graphique de Windows 3.x. Il est utilisé par le composant WoW (« Windows on Windows ») de Windows XP pour émuler les applications 16 bits. Une technique permet d'utiliser Progman comme interpréteur à la place d'Explorer sous Windows 9x.
En fait, dans la base de registre de Windows, de très nombreux programmes sont considérés comme des interpréteurs.
Interpréteurs Unix
Exemple
Une session avec l'interpréteur tcsh :
[ske:~] ske% cd /usr/
[ske:/usr] ske% ls
bin lib local share
include libexec sbin standalone
[ske:/usr] ske% top
[ske:/usr] ske% cd /tmp
[ske:/tmp] ske% ls -l
total 152
-rw-r--r-- 1 ske admin 68328 15 Apr 10:54 93633C68062E855100FCE70A
-rw-r--r-- 1 ske admin 0 19 Apr 09:28 cs_cache_lock_501
-rw-r--r-- 1 root admin 644 23 Apr 09:05 mcx_compositor
drwxr-xr-x 3 ske admin 102 19 Apr 11:39 pb-man
-rw-r--r-- 1 ske admin 74 15 Apr 10:54 reload-stub.s
srwxrw-rw- 1 root admin 0 23 Apr 09:04 slp_ipc
[ske:/tmp] ske% echo Hello World >test.tmp
[ske:/tmp] ske% cat test.tmp
Hello World
[ske:/tmp] ske% rm test.tmp
[ske:/tmp] ske%
Voir aussi
- Interprète (informatique)
- Interface en ligne de commande
- Console Win32
- Commandes UNIX
- Commandes MS-DOS
- Shell graphique
Liens externes
- (en) SS64.com, référence des interfaces en lignes de commande usuelles (bases de données, systèmes d'exploitation...)
- (en) Projets open source pour la création d'interfaces en ligne de commande: CLI, CLI Parser, Natural CLI