Si vous explorez Linux ou Unix, vous entendrez peut-être les termes terminal, ligne de commande, shell et console, et vous pourriez à juste titre ne pas savoir lequel est lequel et s'il s'agit de la même chose. Ils sont certainement tous liés, mais il y a des nuances à chacun qui ont des implications importantes. Cet article vous guide à travers la terminologie des interfaces textuelles Linux.
Comment fonctionnent les ordinateurs
Lorsqu'un ordinateur démarre, un noyau reconnaît son propre matériel physique et permet à chaque composant de communiquer entre eux. Il existe de nombreux noyaux différents :il y a longtemps, il y avait un noyau Unix, un noyau Sun, un noyau BSD, et plus tard, il y a eu le noyau Linux, le noyau Hurd, un noyau Mach et un noyau NT.
Et ce n'est pas tout. Il existe des noyaux spécialisés pour toutes sortes de dispositifs de calcul. Certains sont très simples et d'autres très complexes, selon les besoins de l'appareil qu'il exécute.
L'ensemble d'instructions le plus élémentaire pour un ordinateur le maintient sous tension. Les pilotes matériels, orchestrés par le noyau, maintiennent les ventilateurs actifs pour éviter la surchauffe, l'espace disque est surveillé, les états de la RAM sont gérés, de nouveaux périphériques sont détectés, etc. Les tout premiers ordinateurs faisaient encore moins que cela dans leur état d'inactivité, et chaque programme qu'un premier ordinateur exécutait était essentiellement son seul but d'exister, du moins pendant que ce programme (sous la forme de cartes perforées) était en cours d'exécution. Le concept d'exécuter une tâche en arrière-plan, ou deux applications à la fois, était inimaginable. Si vous vouliez traiter deux travaux à la fois, vous avez un deuxième ordinateur.
Coque interactive
Cependant, une fois les ordinateurs avancés, certains scientifiques ont reconnu que programmer un ordinateur dans un seul but à chaque démarrage était inefficace et, avec les progrès de la technologie, sous-alimenté. Ils ont donc développé quelque chose qu'ils ont appelé un shell.
Il existe différents récits sur la raison pour laquelle le terme "coquille" a été choisi, mais une explication crédible et satisfaisante est que l'interface de la coque entoure le noyau tout comme une coquille de noix entoure une noix. Le shell est la partie avec laquelle un utilisateur interagit, tandis que les demandes de puissance de calcul sont gérées par le noyau.
La chose importante à comprendre à propos d'un shell est qu'il a marqué une nouvelle ère pour l'informatique. Le shell a transformé les ordinateurs d'un appareil en un outil électrique qui pouvait changer de fonction à la demande. Les ordinateurs étaient devenus interactifs. Même dans l'informatique moderne, un shell est le niveau d'interaction le plus bas que vous puissiez avoir avec votre ordinateur. Cela en fait le moyen le plus direct d'indiquer à un ordinateur ce que vous voulez qu'il fasse ensuite, donc apprendre le shell est une tactique inestimable pour les utilisateurs expérimentés.
La coquille est un concept abstrait pour beaucoup de gens. Lorsque vous pensez à une coque, il est utile de penser à une coque spécifique, et il y a beaucoup de choix. Le plus populaire est (GNU) Bash, mais Zsh et Fish sont des alternatives populaires à Bash. Tcsh et Ksh sont d'anciens favoris fiables du début d'UNIX, avec une stricte conformité POSIX. Ash et Dash visent à être légers et rapides, ce qui les rend idéaux pour les systèmes embarqués et les environnements minimaux. Microsoft Powershell est un shell open source basé sur .NET.
Ligne de commande
Lorsque vous accédez à un shell, vous obtenez une invite. Certaines personnes appellent l'invite du shell une ligne de commande, qui est en effet descriptive :une invite indique une ligne dans laquelle vous pouvez taper une commande.
Une invite est un symbole pour vous faire savoir que le shell attend vos instructions. Un symbole commun est un signe dollar ($
), mais il peut aussi s'agir d'un signe de pourcentage (%
), une équerre (>
), un octothorpe (#
), ou tout autre chose. Cela signifie que lorsque vous utilisez un shell, votre vue par défaut ressemble à ceci :
$
La différence notable entre les shells est la syntaxe. Par exemple, dans Bash et Zsh et Ash et Ksh, vous définissez des variables avec une déclaration "égal" :
$ foo=bar
$ echo $foo
bar
Dans Tcsh, cependant, vous utilisez le mot-clé set
pour les variables :
$ set foo=bar
$ echo $foo
bar
Aide
En surface, l'interface du shell n'est pas vraiment conviviale. Au contraire, il semble que l'on s'attende à ce que vous sachiez quoi faire avec un shell. Ce n'est pas ce à quoi la plupart des informaticiens modernes sont habitués, car les applications graphiques fournissent au moins aux utilisateurs des boutons et des menus à explorer, même s'ils ne savent pas exactement ce que fait l'application.
Même si un utilisateur comprend que le shell attend une entrée, des mots courants, anglais ou autres, génèrent des erreurs ou une sortie inutile.
Par exemple, si vous saisissez help
à une invite Bash, vous obtenez une liste de commandes intégrées, dont peu produisent elles-mêmes des résultats utiles ou permettent une interaction supplémentaire.
En ce sens, le shell n'est pas votre application typique. Il s'agit principalement d'une ligne de commande :une ligne dans laquelle vous pouvez taper des commandes. C'est à l'utilisateur de savoir quelles commandes sont disponibles, et on suppose qu'un utilisateur ouvrant un shell a été familiarisé avec au moins les commandes les plus rudimentaires afin qu'il puisse en savoir plus sur le système.
Comme ce n'est pas toujours le cas, il est utile sur les systèmes publics d'aliaser globalement la commande généralement inutile help
à quelque chose d'informatif, comme shellp.
Console
Vous pouvez accéder à un shell sous Linux ou BSD en n'exécutant pas du tout d'interface graphique (il ne reste donc qu'un shell), ou bien en appuyant sur Alt + Maj et une touche de fonction 2 à 6. Chaque touche de fonction vous amène à un écran fourni par getty (ou agetty, ou quelque chose de similaire, selon ce que votre distribution utilise). L'écran fournit une invite de connexion à un shell, et cet écran est souvent appelé console. Plus précisément, il s'agit d'une session getty ou d'un périphérique tty émulé.
Sur Mac, il n'y a aucun moyen de désactiver l'exécution d'une interface graphique sur un système en cours d'exécution, bien qu'au moment du démarrage, vous puissiez utiliser des touches d'accrochage pour démarrer en mode mono-utilisateur. Le mode mono-utilisateur sur Mac OS désactive de nombreuses fonctionnalités, y compris la gestion des utilisateurs, il n'est donc généralement pas conseillé.
Le moyen le plus courant d'accéder à un shell sur les ordinateurs modernes consiste à ouvrir un émulateur de terminal, qui exécute un shell à l'intérieur.
Borne
Un terminal était historiquement un appareil physique, avant même que le concept d'ordinateur personnel (PC) n'existe. Un terminal était un objet semblable à un ordinateur, mais ce n'était en fait qu'un écran (ou parfois juste une imprimante !) avec un clavier attaché. Une fenêtre de terminal sur un ordinateur moderne est une émulation de cet objet historique, et vous pouvez généralement exécuter n'importe quel shell à l'intérieur d'un émulateur de terminal.
Par exemple, sur votre bureau Linux, vous pouvez exécuter une instance d'un terminal GNOME pour servir de fenêtre dans un shell Bash, et une autre instance de terminal GNOME pour servir de fenêtre dans un shell Tcsh.
Le terminal lui-même n'est là que pour abriter un shell en cours d'exécution. Un émulateur de terminal ne traite pas les données ni n'exécute de commandes, bien qu'il puisse ajouter des fonctionnalités d'interface utilisateur, telles que des raccourcis clavier spéciaux, la possibilité de glisser-déposer des fichiers dans un shell, des thèmes de couleur, etc.
Il existe de nombreux émulateurs de terminaux disponibles sur toutes les plateformes. Les ordinateurs de bureau Linux et BSD sont livrés avec xterm
comme alternative, et incluent généralement un émulateur moderne pour une utilisation quotidienne (tel que GNOME Terminal, Konsole, etc.). Mac OS est livré avec un émulateur de terminal propriétaire, mais iTerm2 est un remplacement de loin supérieur (et sa licence est GPLv2).
Pour Windows, PowerShell est la valeur par défaut, mais il existe de nombreuses autres options open source telles que ConEmu et Cmder.
En savoir plus
Vous pouvez en savoir plus sur les terminaux et les shells qu'ils exécutent en lisant comment naviguer dans le shell, comment gérer les fichiers dans le shell et comment personnaliser votre shell. Si vous apprenez mieux en faisant , puis envisagez de suivre des cours d'introduction de la formation Red Hat.
[ Besoin d'aide pour savoir quoi taper au terminal ? Téléchargez la feuille de triche des commandes Linux. ]