L’interface en ligne de commande, bien qu’ayant presque cinq décennies, reste d’une étonnante pertinence. Les terminaux textuels sont toujours l’outil idéal pour une multitude d’opérations, même avec l’essor des environnements graphiques et des dispositifs tactiles.
En réalité, l’interface en ligne de commande est plus appréciée que jamais, comme en témoigne la création par Microsoft d’une nouvelle application, Windows Terminal, très performante. Bien que l’environnement PowerShell de Windows 10 soit déjà extrêmement puissant, Microsoft a fait un effort considérable pour intégrer la prise en charge de l’environnement complet de ligne de commande Linux à Windows 10.
L’interface en ligne de commande: la seule option d’antan
Autrefois, l’interaction avec un ordinateur se faisait uniquement par saisie. Il n’y avait pas d’alternative. Cela peut sembler rudimentaire, mais comparativement à l’utilisation de cartes perforées, la frappe représentait une avancée radicale. De même, le passage des téléscripteurs à rouleaux de papier aux terminaux avec écrans cathodiques a marqué un tournant majeur dans l’interaction homme-machine.
Cette évolution a donné tout son sens à l’interpréteur de commandes interactif. L’utilisateur pouvait désormais envoyer des instructions à l’ordinateur et visualiser instantanément les résultats sur l’écran, mettant fin à l’attente des impressions papier.
Certes, les temps ont changé. L’informatique a évolué. Outre les situations où son utilisation est évidente, comme l’emploi d’un ordinateur sans environnement graphique, le contrôle d’un ordinateur distant via SSH avec une connexion à faible débit, ou la gestion d’un système sans écran ou embarqué, pourquoi choisir l’interface en ligne de commande sur un poste de travail graphique?
Démystification du jargon
Les termes ligne de commande, fenêtre de terminal et shell sont parfois utilisés de manière interchangeable, ce qui est inexact. Bien que liés, ils sont distincts.
Une fenêtre de terminal est une fenêtre dans un environnement de bureau graphique qui émule un terminal de téléscripteur.
Le shell est le programme qui fonctionne dans la fenêtre du terminal. Il reçoit les commandes saisies, les interprète et les exécute directement, les délègue à d’autres outils du système d’exploitation, ou recherche un script ou un programme correspondant.
La ligne de commande est l’endroit où l’utilisateur saisit ses instructions. C’est l’invite affichée par le shell en attente de commandes. Le terme « ligne de commande » désigne également le contenu de la saisie. Par exemple, si un utilisateur rencontre un problème lors de l’exécution d’un programme, une autre personne pourrait lui demander: « Quelle ligne de commande as-tu utilisée? », non pas le shell utilisé, mais bien la commande saisie.
Ensemble, ces éléments forment l’interface en ligne de commande (CLI).
Pourquoi privilégier l’interface en ligne de commande en 2023 ?
La CLI peut sembler déroutante pour les novices. Une méthode d’utilisation aussi désuète a-t-elle sa place dans les systèmes d’exploitation actuels ? N’avons-nous pas abandonné cette approche avec l’arrivée des fenêtres, icônes, souris et interfaces utilisateur graphiques (GUI) ?
L’interface graphique existe depuis des décennies. La première version de Microsoft Windows a été lancée en 1985, et la sortie de Windows 3.0 en 1990 a marqué la norme des environnements de bureau PC.
Le système X Window, utilisé sous Unix et Linux, a été introduit en 1984, apportant des environnements de bureau graphiques à Unix et ses nombreuses variantes.
Cependant, Unix est antérieur de plus d’une décennie à ces événements. Faute d’alternative, tout devait être accessible via la ligne de commande. Chaque interaction, configuration et usage de l’ordinateur devait être possible à travers le clavier.
Par conséquent, la CLI est capable de tout faire. L’interface graphique ne peut toujours pas égaler toutes les possibilités de la CLI. Et même pour les fonctions partagées, la CLI est souvent plus rapide, plus flexible, scriptable et évolutive.
De plus, elle est régie par des normes.
La standardisation grâce à POSIX
POSIX est une norme pour les systèmes d’exploitation de type Unix – en gros, tout ce qui n’est pas Windows. Même Windows possède le sous-système Windows pour Linux (WSL). Dans un système compatible POSIX, l’ouverture d’une fenêtre de terminal vous plonge directement dans un shell. Bien que chaque shell puisse présenter des extensions et des améliorations propres, tant qu’il offre les fonctionnalités de base POSIX, vous pouvez l’utiliser immédiatement. Et vos scripts seront fonctionnels.
La ligne de commande est le plus petit dénominateur commun. Maîtrisez-la, et vous serez en mesure de réaliser vos tâches indépendamment de la distribution Linux ou de l’environnement de bureau graphique. Les interfaces de bureau diffèrent dans leur approche, et les distributions Linux regroupent divers outils. Cependant, la fenêtre de terminal est un lieu familier pour l’utilisateur.
Des commandes conçues pour coopérer
Chaque commande Linux a une fonction précise. La philosophie sous-jacente est d’accroître les fonctionnalités en ajoutant des outils qui peuvent être combinés aux commandes existantes. Cette modularité est si bénéfique que Microsoft s’est efforcé d’intégrer la prise en charge complète de la ligne de commande Linux à Windows 10!
Par exemple, la commande de tri est utilisée par d’autres commandes pour organiser le texte par ordre alphabétique, évitant ainsi d’intégrer cette fonctionnalité à chaque outil. En général, les applications GUI ne permettent pas une telle interfonctionnalité collaborative.
Prenons l’exemple suivant : la commande ‘ls’ liste les fichiers du répertoire actuel. Les résultats sont ensuite transmis à la commande ‘sort’, qui effectue un tri basé sur la cinquième colonne (la taille du fichier). Enfin, la liste triée est transmise à la commande ‘head’, qui affiche par défaut les dix premières lignes.
ls -l | sort -nk5,5 | head
Cette commande affiche ainsi les dix plus petits fichiers du répertoire courant.
En changeant une seule commande, en utilisant ‘tail’ au lieu de ‘head’, on obtient les dix plus grands fichiers du répertoire actuel.
ls -l | sort -nk5,5 | tail
Le résultat correspond bien à notre liste des dix plus grands fichiers.
La sortie des commandes peut être redirigée vers des fichiers, et les flux de sortie standard (stdout) et les messages d’erreur (stderr) peuvent être capturés séparément.
Les commandes peuvent utiliser des variables d’environnement. La commande ci-dessous listera le contenu de votre répertoire personnel:
ls $HOME
Cette commande fonctionnera quel que soit votre emplacement dans l’arborescence des répertoires.
Si la saisie vous semble encore fastidieuse, des outils comme la complétion par tabulation réduisent le travail de frappe.
L’automatisation et la reproductibilité grâce aux scripts
Les erreurs humaines sont inévitables.
Les scripts standardisent l’exécution d’une série d’instructions. Cela assure une cohérence lors de la maintenance du système. Des contrôles de sécurité peuvent être intégrés dans les scripts afin de vérifier la pertinence de leur exécution, évitant à l’utilisateur la nécessité de posséder les connaissances suffisantes pour prendre une décision éclairée.
L’automatisation de tâches via ‘cron’ sous Linux permet de simplifier les tâches complexes et répétitives, ou du moins, de les définir une seule fois puis de les automatiser. Les scripts PowerShell offrent des capacités similaires sous Windows, avec la possibilité de les exécuter via le planificateur de tâches. Pourquoi cliquer sur une multitude d’options lors de la configuration d’un ordinateur, alors qu’une simple commande peut tout faire automatiquement?
Le meilleur des deux univers
Pour tirer pleinement parti de Linux – ou de tout système d’exploitation – il est essentiel de maîtriser à la fois l’interface en ligne de commande et l’interface graphique.
L’interface graphique est incomparable pour l’utilisation d’applications. Même les défenseurs de l’interface en ligne de commande doivent parfois sortir du terminal pour utiliser des suites bureautiques, des environnements de développement ou des logiciels de manipulation d’images.
Les aficionados de l’interface en ligne de commande ne détestent pas l’interface graphique, ils privilégient simplement les avantages de la CLI pour les tâches appropriées. En matière d’administration, la CLI est largement supérieure. Elle permet d’apporter des modifications ciblées à un fichier, un répertoire, une sélection de fichiers et de répertoires, ou des changements globaux, avec le même effort. Utiliser l’interface graphique pour effectuer ces mêmes tâches nécessite souvent des actions répétitives du clavier et de la souris, d’autant plus que le nombre d’objets à modifier augmente.
La ligne de commande offre une précision inégalée. Chaque option de chaque commande est à portée de main. De nombreuses commandes Linux possèdent de multiples options. Prenons par exemple la commande ‘lsof’. Examinez sa page de manuel et imaginez la manière de la traduire en interface graphique.
Il y a trop d’options pour les présenter à l’utilisateur de manière efficace. Ce serait déroutant, peu esthétique et difficile à utiliser. Le contraire de ce que recherche une interface graphique.
Il faut utiliser le bon outil pour la bonne tâche. N’ayez pas peur de la ligne de commande. C’est souvent l’outil le plus rapide et le plus agile. Apprenez à la maîtriser, et vous ne le regretterez jamais.