GNU/Linux >> Tutoriels Linux >  >> Linux

La différence exacte entre un « terminal », un « shell », un « tty » et une « console » ?

Je pense que ces termes font presque référence à la même chose, lorsqu'ils sont utilisés de manière vague :

  • borne
  • coque
  • tty
  • console

À quoi chacun de ces termes fait-il exactement référence ?

Réponse acceptée :

Une borne est au bout d'un fil électrique, une carapace est la maison d'une tortue, tty est une abréviation étrange et une console est une sorte d'armoire.

Eh bien, étymologiquement parlant, en tout cas.

Dans la terminologie unix, la réponse courte est que

  • terminal =tty =environnement d'entrée/sortie de texte
  • console =terminal physique
  • shell =interpréteur de ligne de commande

Console, terminal et tty sont étroitement liés. À l'origine, ils désignaient un équipement à travers lequel vous pouviez interagir avec un ordinateur :au début d'Unix, cela signifiait un appareil de type téléimprimeur ressemblant à une machine à écrire, parfois appelé téléimprimeur, ou "tty" en abrégé. Le nom "terminal" vient du point de vue électronique, et le nom "console" du point de vue mobilier. Très tôt dans l'histoire d'Unix, les claviers et écrans électroniques sont devenus la norme pour les terminaux.

Dans la terminologie unix, un tty est un type particulier de fichier de périphérique qui implémente un certain nombre de commandes supplémentaires (ioctls) au-delà de la lecture et de l'écriture. Dans son sens le plus courant, terminal est synonyme de tty. Certains ttys sont fournis par le noyau pour le compte d'un périphérique matériel, par exemple avec l'entrée provenant du clavier et la sortie allant vers un écran en mode texte, ou avec l'entrée et la sortie transmises sur une ligne série. Autres ttys, parfois appelés pseudo-ttys , sont fournis (via une fine couche de noyau) par des programmes appelés émulateurs de terminaux , tels que Xterm (s'exécutant dans le système X Window), Screen (qui fournit une couche d'isolation entre un programme et un autre terminal), Ssh (qui connecte un terminal sur une machine avec des programmes sur une autre machine), Expect (pour les scripts de terminal interactions), etc.

Le mot terminal peut également avoir une signification plus traditionnelle d'un appareil à travers lequel on interagit avec un ordinateur, généralement avec un clavier et un écran. Par exemple, un terminal X est une sorte de client léger, un ordinateur spécialisé dont le seul but est de piloter un clavier, un écran, une souris et parfois d'autres périphériques d'interaction humaine, les applications réelles s'exécutant sur un autre ordinateur plus puissant.

Une console est généralement un terminal au sens physique qui est, selon une certaine définition, le terminal principal directement connecté à une machine. La console apparaît au système d'exploitation comme un tty (implémenté par le noyau). Sur certains systèmes, tels que Linux et FreeBSD, la console apparaît sous la forme de plusieurs ttys (des combinaisons de touches spéciales basculent entre ces ttys) ; juste pour confondre les choses, le nom donné à chaque tty particulier peut être "console", "console virtuelle", "terminal virtuel", et d'autres variantes.

Une coque est la principale interface que les utilisateurs voient lorsqu'ils se connectent, dont le but principal est de démarrer d'autres programmes. (Je ne sais pas si la métaphore d'origine est que le shell est l'environnement d'accueil de l'utilisateur ou que le shell est ce dans quoi les autres programmes s'exécutent.)

En relation :Centos – Comment installer les environnements de bureau sur CentOS 7 ?

Dans les cercles unix, shell s'est spécialisé pour signifier un shell de ligne de commande, centré sur la saisie du nom de l'application que l'on veut démarrer, suivi des noms de fichiers ou d'autres objets sur lesquels l'application doit agir, et en appuyant sur la touche Entrée. D'autres types d'environnements n'utilisent pas le mot "shell" ; par exemple, les systèmes de fenêtres impliquent des "gestionnaires de fenêtres" et des "environnements de bureau", pas un "shell".

Il existe de nombreux shells Unix différents.
Les shells populaires pour une utilisation interactive incluent Bash (le défaut sur la plupart des installations Linux), zsh (qui met l'accent sur la puissance et la personnalisation) et fish (qui met l'accent sur la simplicité).

Les shells de ligne de commande incluent des constructions de contrôle de flux pour combiner des commandes. En plus de saisir des commandes à une invite interactive, les utilisateurs peuvent écrire des scripts. Les shells les plus courants ont une syntaxe commune basée sur le Bourne_shell. Lors de la discussion sur la "programmation shell ”, le shell est presque toujours supposé être un shell de style Bourne. Certains shells souvent utilisés pour les scripts mais dépourvus de fonctionnalités interactives avancées incluent le shell Korn (ksh) et de nombreuses variantes ash. Presque tous les systèmes de type Unix ont un shell de style Bourne installé en tant que /bin/sh , généralement frêne, ksh ou bash.

Dans l'administration système Unix, le shell d'un utilisateur est le programme qui est appelé lorsqu'ils se connectent. Les comptes d'utilisateurs normaux ont un shell de ligne de commande, mais les utilisateurs avec un accès restreint peuvent avoir un shell restreint ou une autre commande spécifique (par exemple, pour les comptes de transfert de fichiers uniquement).

La division du travail entre le terminal et la coque n'est pas tout à fait évidente. Voici leurs principales tâches.

  • Entrée :le terminal convertit les touches en séquences de contrôle (par exemple, Gauchee[D ). Le shell convertit les séquences de contrôle en commandes (par exemple, e[Dbackward-char ).
  • L'édition de ligne, l'historique des entrées et l'achèvement sont fournis par le shell.
    • Le terminal peut fournir sa propre édition de ligne, son historique et sa complétion à la place, et n'envoyer une ligne au shell que lorsqu'il est prêt à être exécuté. Le seul terminal commun qui fonctionne de cette manière est M-x shell dans Emacs.
  • Sortie :le shell émet des instructions telles que "display foo », « changer la couleur de premier plan en vert », « déplacer le curseur à la ligne suivante », etc. Le terminal agit sur ces instructions.
  • L'invite est purement un concept shell.
  • Le shell ne voit jamais la sortie des commandes qu'il exécute (à moins d'être redirigé). L'historique de sortie (scrollback) est purement un concept de terminal.
  • Le copier-coller inter-applications est fourni par le terminal (généralement avec la souris ou des séquences de touches telles que Ctrl +Maj +V ou Maj +Insérer ). Le shell peut également avoir son propre mécanisme interne de copier-coller (par exemple, Meta +O et Ctrl +O ).
  • Le contrôle des tâches (lancer des programmes en arrière-plan et les gérer) est principalement effectué par le shell. Cependant, c'est le terminal qui gère les combinaisons de touches comme Ctrl +C pour tuer le travail de premier plan et Ctrl +Z pour le suspendre.

Linux
  1. La différence entre une commande intégrée et une qui ne l'est pas ?

  2. La différence entre les guillemets "...", "...", $'...' et $"..." dans le shell ?

  3. La Différence Entre [[ $a ==Z* ]] Et [ $a ==Z* ] ?

  4. Différence entre '{}' et {} dans la commande find ?

  5. Quelle est la différence entre ls et l ?

Quelle est la différence entre InnoDB et MyISAM ?

Quelle est la différence entre Linux et Unix ?

Quelle est la différence entre la connexion et le shell sans connexion

Quelle est la différence entre une console, un terminal et un shell ?

Quelle est la différence entre nohup et esperluette

Quelle est la différence entre &> et >&en bash ?