Je pense que ces termes se réfèrent presque à la même chose, lorsqu'ils sont utilisés librement:
À quoi se réfère exactement chacun de ces termes?
Un terminal est au bout d'un fil électrique, un Shell est la maison d'une tortue, tty est une abréviation étrange et une console est une sorte d'armoire.
Eh bien, étymologiquement parlant, de toute façon.
Dans la terminologie Unix, la réponse courte est que
La console, le terminal et le terminal sont étroitement liés. À l'origine, ils signifiaient un équipement permettant d'interagir avec un ordinateur: dans les premiers jours d'Unix, cela signifiait un appareil de style téléimprimeur - ressemblant à une machine à écrire, parfois appelé téléscripteur, ou "tty ”En sténographie. Le nom "terminal" est venu du point de vue électronique, et le nom "console" du point de vue du meuble. 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 au nom 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. D'autres ttys, parfois appelés pseudo-ttys , sont fournis (via une couche de noyau mince) par des programmes appelés ( émulateurs de terminaux , tels que Xterm (fonctionnant dans le système X Window ), Screen = (qui fournit une couche d'isolement 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 interactions terminales), etc.
Le terminal Word peut également avoir une signification plus traditionnelle d'un appareil par 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 , un ordinateur plus puissant.
Une console est généralement un terminal au sens physique qui est, par 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 terminal particulier peut être "console", "console virtuelle", "terminal virtuel" et d'autres variantes.
Voir aussi Pourquoi un terminal virtuel est-il "virtuel", et quel/pourquoi/où est le "vrai" terminal? .
Un Shell est l'interface principale 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 originale est que le Shell est l'environnement domestique de l'utilisateur, ou que le Shell est dans lequel d'autres programmes s'exécutent.)
Dans les cercles Unix, Shell s'est spécialisé pour signifier un Shell en ligne de commande , centré autour de la saisie du nom de l'application que l'on veut pour démarrer, suivi du nom des fichiers ou des 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 " gestionnaires de fenêtres " et " environnements de burea ", pas un "Shell".
Il existe de nombreux shells Unix différents. Les shells populaires pour une utilisation interactive incluent Bash (la valeur par 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 simplicité).
Les shells de ligne de commande incluent des constructions de contrôle de flux pour combiner des commandes. En plus de taper des commandes à une invite interactive, les utilisateurs peuvent écrire des scripts. Les shells les plus courants ont une syntaxe commune basée sur Bourne_Shell . Lors de la discussion sur " Programmation du Shell ", le Shell est presque toujours implicite comme étant un Shell de style Bourne. Certains shells qui sont souvent utilisés pour les scripts mais manquent de fonctionnalités interactives avancées incluent le Korn Shell (ksh) et de nombreuses variantes ash . Presque tous les systèmes de type Unix ont un shell de style Bourne installé comme /bin/sh
, généralement ash, ksh ou bash.
Dans l'administration système Unix, le shell d'un utilisateur est le programme qui est appelé lorsqu'il se connecte. Les comptes d'utilisateurs normaux ont un shell en ligne de commande, mais les utilisateurs disposant de l'accès restreint peut 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 le Shell n'est pas complètement évidente. Voici leurs principales tâches.
\e[D
). Le shell convertit les séquences de contrôle en commandes (par exemple \e[D
→ backward-char
).M-x Shell
dans Emacs.foo
", "changer la couleur de premier plan en vert", "déplacer le curseur sur la ligne suivante", etc. Le terminal agit sur ces instructions.Un terminal ou un console est un élément matériel, à l'aide duquel un utilisateur peut interagir avec un hôte. Fondamentalement, un clavier couplé à un écran de texte.
De nos jours, presque tous les terminaux et consoles représentent des terminaux "virtuels".
Le fichier qui représente un terminal est traditionnellement appelé fichier tty. Si vous regardez dans le répertoire "/ dev" d'un système UNIX, vous trouverez beaucoup de fichiers tty connectés à des consoles virtuelles (par exemple tty1 sur linux), des terminaux virtuels (par exemple pts/0) ou matériel physiquement connecté (par exemple, ttyS0 est le terminal série physique, le cas échéant, connecté sur le premier port série de l'hôte).
Un console doit être un élément matériel physiquement connecté à (ou une partie de) l'hôte. Il a un rôle spécial dans le système: c'est le point principal pour accéder à un système pour la maintenance et certaines opérations spéciales ne peuvent être effectuées qu'à partir d'une console (par exemple, voir single user mode
). Un terminal peut être, et est généralement, un matériel distant.
Dernier point, mais non le moindre, un Shell est un programme spécial qui interagit avec un utilisateur via un contrôle tty et offre à l'utilisateur la manière de lancer d'autres programmes ( par exemple bash, csh, tcsh).
Un émulateur de terminal est un programme qui émule un terminal physique (par exemple xterm, gnome-terminal, minicom).
Ainsi, lorsque vous regardez une "fenêtre de texte" sur votre système Linux (sous X11), vous cherchez à: un émulateur de terminal , connecté à un terminal virtuel , identifié par un fichier tty , à l'intérieur duquel s'exécute un Shell .
EN BREF explication:
La console est un terminal. Un système a une console et potentiellement plusieurs terminaux. La console est généralement l'interface principale pour gérer un ordinateur, par exemple pendant le démarrage.
Un terminal est une session qui peut recevoir et envoyer des entrées et des sorties pour des programmes en ligne de commande. La console en est un cas particulier.
Un ATS est essentiellement un pseudo périphérique, appelez-le une ressource de noyau, qui est utilisée par les processus pour accéder à un terminal spécifique. Les ATS peuvent être liés à du matériel tel qu'un port série, ou peuvent être virtuels, par exemple créés lorsqu'un utilisateur se connecte via un réseau
Le Shell est un programme utilisé pour contrôler et exécuter des programmes. Il est souvent utilisé de manière interactive, via un terminal. Il existe plusieurs programmes Shell, Bash étant sans doute le Shell le plus couramment utilisé aujourd'hui. D'autres coquilles, sans ordre particulier, incluent Bourne Shell, C-Shell, Dash, Tsch, Ksh et le zsh de plus en plus populaire. Il y en a bien d'autres.
Lorsque vous avez une interface graphique, vous pouvez utiliser un programme de terminal pour dessiner une belle bordure redimensionnable, ajouter des barres de défilement et formater le texte, etc., pour une session de terminal. On les appelle souvent des émulateurs de terminaux, et parfois ils peuvent gérer plusieurs sessions via un concept TAB. Un émulateur de terminal démarre souvent un shell pour vous permettre de travailler de manière interactive sur une ligne de commande.
A [~ # ~] tty [~ # ~] (c.-à-d. [~ # ~] t [~ # ~] ele [~ # ~] ty [~ # ~] pewriter) est un appareil spécial qui permet aux gens les sourds, malentendants ou malentendants utilisent le téléphone pour communiquer en leur permettant de taper des messages texte. Un ATS est requis aux deux extrémités de la conversation pour communiquer.
OU
[~ # ~] tty [~ # ~] est le terminal qui est utilisé pour taper un message texte.
Coquille : partie protectrice extérieure d'une graine, c'est-à-dire noyau.
OU
charpente ou structure extérieure à la partie centrale ou essentielle d'un système.
Console signifie que le clavier et le moniteur sont physiquement connectés à un ordinateur.
Il existe déjà deux bonnes réponses, mais j'aimerais ajouter des informations sur l'expression "terminal virtuel" . Généralement, cela signifie quelque chose qui fournit l'apparence/la fonctionnalité d'un terminal, i. e. a émulateur de terminal au sens large. Mais au début de Linux (1994-1995), il était utilisé comme synonyme de "console virtuelle" (plusieurs interfaces utilisateur indépendantes) , par certains développeurs. Cette utilisation persiste dans la documentation; deux termes différents étaient (et sont) utilisés pour désigner les trucs tty1, tty2…. De nos jours (depuis ≈1996), "terminal virtuel" peut également faire référence à des émulateurs de terminaux basés sur pty .
vt
(le pilote de la console système en mode texte) de Linux a été le premier élément de son noyau. Il était initialement utilisé pour la connexion aux mainframes et en ce sens, il s’agit d’un "terminal virtuel", d’où son nom. Le code contrôlant les consoles virtuelles réside dans vt.c
également. Les ingénieurs du noyau Linux utilisent systématiquement les "consoles" Word pour désigner tty1, tty2… et ont utilisé le préfixe "vc_" pour eux. Par exemple, il existe un vc_allocate
une fonction. D'un autre côté, les développeurs d'outils de l'espace utilisateur tels que kbd
et console-tools
utilisaient "console virtuelle" (VC) et "terminal virtuel" (VT) de façon interchangeable. Ī̲ a contacté AndriesE. Brouwer et lui a demandé de clarifier la terminologie utilisée par les premiers développeurs (1994-1995). Andries a aimablement fourni des réponses. Il déclare que VT et VC sont des abréviations synonymes et "indivisibles". -> En général, une console virtuelle est un terminal virtuel, mais l'inverse n'est pas vrai. Ces "terminaux virtuels" qui ne sont pas des consoles virtuelles sont en effet pseudoterminaux (comme le dit Andries, ces ne sont pas VT). Contrairement aux consoles virtuelles, où le noyau fournit des fonctionnalités de terminal pour une application console, les pseudoterminaux tilisez des "périphériques" PTY pour organiser la communication entre les applications console et le programme de création de terminaux qui s'exécute dans l'espace utilisateur . Les exemples sont les émulateurs de terminaux basés sur X et sshd
, qui alloue un pseudonyme pour chaque session de connexion. Un pseudonyme ne peut pas être appelé "console" - c'est une erreur.
Terminal = Une interface qui fournit un affichage pour la sortie et un clavier pour l'entrée dans une session Shell.
Shell = interprète qui exécute des commandes tapées sous forme de chaîne
Console: en fait, deux types de console que nous utilisons
Console physique = L'affichage matériel et le clavier utilisés pour interagir avec un système
Console virtuelle = L'une des multiples consoles logiques pouvant chacune prendre en charge une session de connexion indépendante.
tty (teletype ie terminal). = Un terminal est essentiellement un périphérique d'interface utilisateur qui utilise du texte pour input et output.message.
Vous devez plonger dans l'histoire.
Il y avait des appareils de type machine à écrire avec du papier et un clavier. Ils étaient appelés télétypes (ce qui signifie "taper à distance", car "télé" signifie "à distance") ou ttys pour faire court. Dans les années 70, ils étaient obsolètes par les appareils équipés d'un moniteur CRT appelé glass ttys .
Tout ordinateur a besoin d'un moyen pour signaler son état et ses erreurs (et, probablement, accepter les commandes). Cela se fait via la console qui est presque toujours connectée directement à l'ordinateur. Donc, il y a 2 significations pour console : quelque chose qui est utilisé pour signaler l'état et quelque chose qui est connecté directement.
UNIX est un système interactif: plusieurs utilisateurs peuvent s'y connecter et démarrer des applications. Les premiers ordinateurs utilisaient des télétypes ( tty ) pour cela: chaque utilisateur avait un télétype connecté à la machine avec une connexion de ligne série. Ce type de télétype est appelé terminal . UNIX a également obtenu un sous-système spécial pour gérer les "utilisateurs assis derrière les terminaux", également appelé tty car les premiers terminaux étaient des télétypes. Chaque processus pourrait être connecté à tty sous Unix. Cela signifie qu'il y a un utilisateur quelque part assis près du terminal. Voir http://www.linusakesson.net/programming/tty/ pour plus d'informations.
Les utilisateurs ont besoin d'un moyen de dire au noyau d'exécuter l'application. Shell (sh, bash, csh, ksh, etc.) est utilisé pour cela. Shell fonctionne sur tty , accepte les commandes de l'utilisateur et demande au noyau de s'exécuter une application.
Mais les terminaux ne sont pas toujours physiquement connectés à la machine. Il peut y avoir une application qui "émule" un terminal acceptant les touches de l'utilisateur et les envoyant quelque part (xterm et ssh sont de bons exemples). Il y a une API dans le noyau appelée pseudo-terminal pour cela. Ainsi, votre tty peut vraiment être connecté à une application au lieu d'un vrai terminal. Xterm utilise X11 pour afficher du texte et ssh utilise une connexion réseau pour cela.
IBM PC a un clavier et une carte vidéo (ils sont aussi parfois appelés console ). Linux peut faire différentes choses avec:
Il peut également arrêter d'émuler le terminal sur la console et le donner à une application. L'application peut changer de mode vidéo et l'utiliser exclusivement (X11 ou svgalib peuvent le faire).
Voici donc des significations modernes:
/dev/console
) ou clavier physique et écran vidéo connectés à l'ordinateur.Voici la réponse courte -
Noyau - la partie la plus interne de tout système d'exploitation moderne qui parle directement au matériel réel.
Shell - enveloppe le noyau réel. Chaque fois que nous exécutons la commande, nous parlons en fait à Shell qui à son tour appelle les instructions appropriées du noyau. En dehors de cela, le shell est capable d'effectuer d'autres tâches comme la recherche de programmes appropriés tout en ayant des commandes, des raccourcis de nom de fichier, des commandes de tuyauterie, etc.
Terminal - à l'ère de l'informatique antérieure, les ordinateurs (connus sous le nom de Mainframe) étaient géants. Ainsi, il était facile d'avoir une seule unité de traitement et de la connecter depuis de nombreux endroits. Le terminal est le matériel réel avec le clavier et les périphériques de sortie connectés au mainframe.
Console - Type spécial de terminal qui est directement connecté à l'ordinateur central à des fins d'administration du système d'exploitation.
tty - TeleTypewriter utilisé pour envoyer et recevoir des données vers et depuis l'ordinateur central. Utilisé avant la disponibilité des terminaux vidéo. Mais conventionnellement, il a toujours été nommé tty. Même le co-commandant stty
La longue réponse détaillée est ici - Terminal, Console, Shell, Kernel, Commandes - Différentes parties d'un ordinateur
Mis à part la réponse acceptée et Le TTY démystifié article, j'ai vraiment adoré lire ces deux articles:
This one est basé sur NetBSD.
À l'époque de la pierre Unix, les systèmes informatiques se composaient d'un ordinateur central, d'une grande boîte de lumières clignotantes qui avait de la mémoire, un stockage de masse et des unités de calcul, et qui exécutaient des processus lancés par des utilisateurs ou des opérateurs. Comme le matériel était très cher, les systèmes étaient utilisés comme de vrais systèmes multi-utilisateurs, avec de nombreuses personnes interagissant avec le système en même temps. Ce qu'il n'avait généralement pas - contrairement aux stations de travail Unix d'aujourd'hui - était un moniteur et un clavier fixes. Au lieu de cela, l'émission de commandes vers la machine et la récupération de la sortie ont été effectuées sur des lignes série, en utilisant d'abord des télétypes et des terminaux CRT (tube cathodique) plus tard. Les téléscripteurs - c'est de là que viennent les "ttys" sous Unix - sont des machines à écrire électroniques qui envoient des touches enfoncées sur la ligne série à l'hôte, et les réponses ont été renvoyées au teletyper caractère par caractère sur la ligne série, avec l'imprimante intégrée mettre la réponse sur papier, un peu comme une machine à écrire.
This one est basé sur Linux.
Les terminaux sont des périphériques qui offrent des capacités d'entrée/sortie améliorées au-delà de ce qui pourrait être obtenu avec uniquement des fichiers, des canaux et des sockets ordinaires. Ces fonctionnalités sont conçues pour faciliter l'interaction des humains avec les ordinateurs et sont inutiles pour les programmes essayant de se parler.
Permettez-moi de prendre une fissure à ce sujet ... Je vais utiliser Unix et Linux plus ou moins synonyme dans ce domaine. Si je fais référence à quelque chose d'historique qui est antérieur à l'existence de Linux, j'écrirai généralement "Unix", et si je parle de quelque chose de plus récent, ou de quelque chose de spécifique à la saveur Linux d'Unix, j'écrirai généralement "Linux ".
La seule chose dans votre liste qui est un concept discret qui n'a aucun chevauchement avec les autres est le "Shell". Le Shell est un programme dont le but est de communiquer avec un utilisateur et d'effectuer des opérations de système d'exploitation en son nom.
Les shells les plus courants utilisent une technique appelée "ligne de commande" qui consiste à envoyer à l'utilisateur une sorte d'invite, à attendre que l'utilisateur tape une commande de texte, puis à exécuter cette commande. Mais il existe des shells basés sur des menus, et même des shells graphiques (comme l'Explorateur de fichiers Windows) bien qu'aucune personne Unix qui se respecte n'appellerait jamais une telle chose un `` Shell ''.
Sous Unix, si quelqu'un appelle quelque chose un "Shell", cela signifie presque certainement une forme d'interface de ligne de commande comme je viens de le décrire. Et il est très étrange dans le monde Unix de se référer à quoi que ce soit comme un "Shell" s'il ne communique pas à un utilisateur en utilisant le modèle tty que je décris plus loin.
Ceci est déroutant car il peut faire référence à différents types de choses.
Sous Linux, il existe une sorte de périphérique appelé "tty". Il s'agit d'un appareil abstrait qui devrait être utilisé pour la communication bidirectionnelle avec quelque chose qui est soit un utilisateur, soit qui prend les informations d'un utilisateur d'une manière ou d'une autre. Parfois, ce périphérique abstrait peut correspondre directement à un périphérique physique. Parfois, il peut s'agir d'un programme qui présente à quelqu'un une fenêtre dans laquelle la communication apparaît et dans laquelle l'utilisateur peut taper.
Mais, la raison pour laquelle cet appareil abstrait existe et la raison pour laquelle il est appelé un `` tty '' est que `` tty '' est l'abréviation de `` télétype '', qui était un appareil physique réel qui avait une imprimante qui imprimait sur du papier combinée avec un clavier. Le modèle que l'appareil abstrait "tty" présente aux programmes qui l'utilisent est essentiellement qu'il existe un télétype à l'autre extrémité. Vous lui envoyez des caractères et ces caractères apparaissent sur le téléscripteur. Lorsque vous y lisez des caractères, ces caractères représentent des touches qui ont été tapées sur un clavier.
Les anciens ttys basés sur des imprimantes à papier ont rapidement été supplantés par des ttys vidéo. Sur ceux-ci, bien sûr, il n'y a pas de rouleau de papier. Et, en fait, il est possible d'écraser n'importe quel caractère à l'écran. Mais, plutôt que de présenter une sorte d'interface "d'écran" abstraite aux programmes, les programmes devraient plutôt envoyer des flux spéciaux de caractères appelés séquences d'échappement qui accomplissent une variété de tâches. Habituellement, il y a une chose abstraite appelée "curseur" qui peut être déplacée sur l'écran, et tout caractère envoyé remplacera tout ce qui est au curseur et le curseur déplacera un caractère plus loin. Souvent, vous pouvez également changer la couleur d'un caractère sur le point d'être imprimé avec des séquences d'échappement.
Il existe des "verres en verre" qui ne suivent pas ce modèle et sont par conséquent mal gérés dans le monde Unix. La famille de terminaux vidéo IBM 3270 appartient à cette catégorie.
Ce que les gens Linux/Unix appellent généralement une "fenêtre Shell" est une émulation d'un verre tty à l'aide d'une interface utilisateur graphique. En interne, les programmes s'exécutant à l'intérieur d'une fenêtre Shell parlent à un périphérique tty virtuel qui est parfois appelé pseudo-tty ou pseudo-terminal (alias un pty).
Un terminal est juste un endroit où l'ordinateur et l'humain sont censés s'interfacer. Les terminaux peuvent être complètement graphiques et ne suivre en aucune façon le modèle tty, même si un programme peut utiliser leurs capacités pour émuler cela. Tous les tys physiques réels (verre ou autre) sont des terminaux.
Une console est un type spécial de terminal qui est généralement censé être connecté de manière sécurisée directe au matériel sur lequel le système d'exploitation s'exécute.
Sous Linux, la console est virtualisée d'une petite manière qui vous permet d'utiliser une touche spéciale pour basculer entre les consoles virtuelles. Mais cette virtualisation se fait avec un vrai morceau de matériel par logiciel dans le noyau.
Il existe des moyens d'utiliser Linux via ce que l'on appelle une `` console série '', qui est une console connectée à l'ordinateur via un port série comme un port USB (ou, sur certains ordinateurs très petits et/ou très anciens, un port RS-232 d'une certaine sorte) et suit l'ancien modèle de téléscripteur d'une manière assez stricte.
Encore une fois, l'idée est que cette console est connectée de manière physique directe à l'ordinateur au lieu de passer par une sorte de réseau qui pourrait permettre à quiconque de se connecter.