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

1235

Je pense que ces termes se rapportent presque à la même chose, lorsqu'ils sont utilisés de manière lâche:

  • Terminal
  • coquille
  • tty
  • console

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

Lazer
la source
28
J'aimerais ajouter «ligne de commande» à cela :-)
teeks99
1
La ligne de commande est simplement le langage utilisé pour envoyer des commandes à l'interpréteur de ligne de commande s'exécutant dans un shell à partir de l'émulateur de terminal / terminal.
Marty Fried
1
Le téléscripteur (TTY) a été mis en service pour la première fois et exposé au Mechanics Institute de New York en 1844. en.wikipedia.org/wiki/Teleprinter
Serge Stroobandt Le
Deux autres liens utiles - feyrer.de/NetBSD/ttys.html et quora.com/…
Nishant

Réponses:

1198

Un terminal est au bout d'un fil électrique, une coquille est la maison d'une tortue, tty est une abréviation étrange et une console est une sorte de cabinet.

Etymologiquement, en tout cas.

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

  • terminal = tty = environnement de saisie / sortie de texte
  • console = terminal physique
  • shell = interpréteur de ligne de commande

Console, terminal et tty sont étroitement liés. A l'origine, il s'agissait d'un équipement permettant d'interagir avec un ordinateur: au début d'Unix, il s'agissait d'un périphérique de type téléimprimeur ressemblant à une machine à écrire, parfois appelé téléscripteur, ou "tty" en abrégé. Le nom «terminal» vient du point de vue électronique, et le nom «console» du point de vue de l'ameublement. Très tôt dans l'histoire d'Unix, les claviers électroniques et les écrans sont devenus la norme pour les terminaux.

Dans la terminologie unix, un terminal 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 types 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. D'autres ttys, parfois appelés pseudo-ttys , sont fournis (via une couche mince du 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 à des programmes sur une autre machine), Expect (pour les interactions de terminal de script), etc.

Le mot terminal peut également avoir une signification plus traditionnelle d'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écial dont le seul but est de piloter un clavier, un écran, une souris et parfois d’autres périphériques à interaction humaine, les applications fonctionnant sur un autre 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 terminal (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); pour confondre les choses, le nom donné à chaque terminal en particulier peut être «console», «console virtuelle», «terminal virtuel» et autres variantes.

Voir aussi Pourquoi un terminal virtuel est-il «virtuel», et qu'est-ce que / pourquoi / où est le «vrai» terminal? .


Un shell est l'interface principale visible par les utilisateurs lorsqu'ils se connectent. Son objectif principal est de démarrer d'autres programmes. (Je ne sais pas si la métaphore originale est que le shell est l'environnement d'accueil de l'utilisateur ou que le shell est utilisé par d'autres programmes.)

Dans les cercles unix, shell s’est spécialisé pour désigner un shell en ligne de commande , centré autour de la saisie du nom de l’application à démarrer, suivi du nom des fichiers ou des autres objets sur lesquels l’application doit agir, puis en appuyant sur la touche Entrée. Les 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 », et non un «shell».

Il existe de nombreux shell Unix différents. Les shells populaires à usage interactif incluent Bash (la configuration par défaut sur la plupart des installations Linux), zsh (qui met l'accent sur le pouvoir et la personnalisation) et le poisson (qui met l'accent sur la simplicité).

Les shells de ligne de commande incluent des constructions de contrôle de flux permettant de combiner des commandes. En plus de la saisie de commandes à une invite interactive, les utilisateurs peuvent écrire des scripts. Les shells les plus courants ont une syntaxe commune basée sur Bourne_shell . Lorsque vous parlez de « programmation shell », le shell est presque toujours considéré comme un shell de type Bourne. Certains shell souvent utilisés pour les scripts, mais qui manquent de fonctionnalités interactives avancées, incluent le shell Korn (ksh) et de nombreuses variantes de cendres . Pratiquement tous les systèmes de type Unix ont un shell de type Bourne installé /bin/sh, généralement ash, ksh ou bash.

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


La division du travail entre le terminal et la coque n’est pas complètement évidente. Voici leurs tâches principales.

  • Entrée: le terminal convertit les clés en séquences de contrôle (par exemple Left\e[D). Le shell convertit les séquences de contrôle en commandes (par exemple \e[Dbackward-char).
  • L’édition des lignes, l’historique des saisies et l’achèvement sont fournis par le shell.
    • À la place, le terminal peut fournir ses propres modifications, historique et historique de ligne, et n’envoyer une ligne au shell que lorsque celui-ci est prêt à être exécuté. Le seul terminal commun qui fonctionne de cette manière est M-x shellEmacs.
  • Sortie: le shell émet des instructions telles que «display foo», «change la couleur de premier plan en vert», «déplace le curseur sur la ligne suivante», etc. Le terminal agit sur ces instructions.
  • L'invite est purement un concept de shell.
  • Le shell ne voit jamais la sortie des commandes qu'il exécute (sauf si redirigé). L’historique des sorties (scrollback) est purement un concept de terminal.
  • Un copier-coller inter-applications est fourni par le terminal (généralement avec la souris ou des séquences de touches telles que Ctrl+ Shift+ Vou Shift+ Insert). Le shell peut également avoir son propre mécanisme de copier-coller interne (par exemple Meta+ Wet Ctrl+ Y).
  • Le contrôle des tâches (lancement et gestion des programmes en arrière-plan) est principalement effectué par le shell. Cependant, c'est le terminal qui gère les combinaisons de touches telles que Ctrl+ Cpour supprimer le travail de premier plan et Ctrl+ Zpour le suspendre.
Gilles
la source
50
Seul bémol: je dirais que les deux types de ttys sont "fournis par" le noyau. La différence que je voudrais souligner est que les terminaux matériels (par exemple, les lignes série et la console intégrée en mode texte) ont une extrémité connectée au matériel et une autre connectée à un logiciel (par exemple, des programmes de connexion et / ou des shells) alors que les pseudo-terminaux ont les deux extrémités sont connectées à un logiciel (par exemple un émulateur de terminal à une extrémité et un shell à l’autre).
Chris Johnsen
12
@phunehehe: C'est un sens différent de «shell», couramment utilisé dans la conception du système d'exploitation: le shell est la partie externe du noyau. Ce n'est pas une terminologie unix: les noyaux Unix n'ont pas tendance à avoir un composant que l'on pourrait appeler un shell.
Gilles
24
Ceci est l'image dans mon esprit pour la métaphore du shell.
ændrük
12
Il y a aussi une autre signification de "console" sous Linux. La console (il n'y en a qu'une) est l'endroit où la printkpriorité est suffisante (par exemple, panique du noyau). Pour le définir, passez console=DEVICE,...sur la ligne de commande du noyau (par exemple, console=ttyS0,115200pour le premier port série, à 115 200 bits / s). Normalement, le terminal virtuel est utilisé par défaut, mais cela peut être changé lors de la compilation du noyau.
derobert
19
“… Le terminal… gère des combinaisons de touches telles que Ctrl + C pour supprimer le travail de premier plan et Ctrl + Z pour le suspendre” Pas tout à fait: le terminal n'envoie toujours que des caractères de contrôle, c'est le périphérique tty qui décide comment les gérer, et il est configurable . Par défaut, le périphérique tty convertit les caractères de contrôle en signaux envoyés au shell (et à d'autres processus).
Chris Page
194

Un terminal ou une console est un élément matériel permettant à un utilisateur d’interagir avec un hôte. Fondamentalement, un clavier couplé à un écran de texte.
De nos jours, presque tous les terminaux et consoles sont virtuels.

Le fichier qui représente un terminal est généralement 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 sous Linux), des terminaux virtuels (par exemple pts / 0) ou du 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).

Une console doit être un élément physique connecté physiquement à (ou une partie de) l'hôte. Il a un rôle spécial dans le système: il est essentiel d’accéder à un système pour l’entretien et certaines opérations spéciales ne peuvent être effectuées qu’à partir d’une console (voir par exemple single user mode). Un terminal peut être, et est généralement, un élément matériel distant.

Dernier point, mais non le moindre, un shell est un programme spécial qui interagit avec un utilisateur via un terminal de contrôle et offre à l'utilisateur le moyen 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 recherchez: un émulateur de terminal , connecté à un terminal virtuel , identifié par un fichier tty , à l'intérieur duquel un shell est exécuté .

Andcoz
la source
2
N'importe quel ordinateur de bureau a une console système (peu importe, en 2015 ou en affiche, en 2010). Comme il a été correctement indiqué, il s’agit d’un élément matériel. Mais affirmer «De nos jours, presque toutes les… les consoles sont des« virtuelles »» est presque contradictoire et n'est évidemment pas bon.
Incnis Mrsi
1
"Un terminal ou une console est une pièce matérielle à l'aide de laquelle un utilisateur peut interagir avec un hôte. Fondamentalement, un clavier est associé à un écran de texte." explication géniale par son aspect concret
Webwoman
@andcoz - Qu'entendez-vous par "fenêtre de texte"? Un émulateur de terminal n'est-il pas un terminal virtuel? Si je lance la commande ttydans un émulateur de terminal tel que Konsole de KDE, la sortie est / dev / pts / 0.
Motivé le
1
@IncnisMrsi - Un ordinateur de bureau n'est-il pas la console ? Si non, qu'entendez-vous par ce qu'il a une console système?
Motivé le
2
@Motivated /dev/pts/0est un fichier tty, un gestionnaire d'une interface de programmation exposée par le noyau. Grâce à ce gestionnaire, un programme (par exemple le shell) peut interagir avec un terminal (réel ou virtuel). Un émulateur de terminal est un logiciel qui émule un terminal. L'émulateur demande au noyau de créer un gestionnaire permettant aux programmes d'interagir avec lui-même (voir man openpty). Ainsi, les informations circulent du terminal (émulateur) au gestionnaire de noyau du tty, au programme (et inversement). Les programmes et les terminaux ne se parlent pas directement mais uniquement via le fichier tty (le gestionnaire).
andcoz le
48

COURTE explication:

La console est un terminal. Un système possède une console et potentiellement plusieurs terminaux. La console est généralement l’interface principale de gestion d’un ordinateur, par exemple en cours de démarrage.

Un terminal est une session pouvant recevoir et envoyer des entrées et des sorties pour les programmes en ligne de commande. La console est un cas particulier de ceux-ci.

Un TTY est essentiellement un pseudo-périphérique, appelez-le une ressource du noyau, qui est utilisée par les processus pour accéder à un terminal spécifique. Les TTY 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 utilisé actuellement. Bourne Shell, C-shell, Dash, Tsch, Ksh et le zsh, de plus en plus populaire, figurent parmi les autres obus. Il y en a beaucoup plus.

Lorsque vous avez une interface graphique, vous pouvez utiliser un programme de terminal pour dessiner une jolie bordure redimensionnable, ajouter des barres de défilement et formater le texte, etc., pour une session de terminal. Souvent, ceux-ci s'appellent des émulateurs de terminal, 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.

Johan
la source
1
PTY est un pseudo TTY. TTY peut être, mais pas essentiellement virtuel (pseudo) terminal.
Luciano
35

Un ATS (c. -à- T ele TY pewriter) est un appareil spécial qui permet aux gens qui sont sourds, d'utilisation auditive, ou troubles de la parole du téléphone pour communiquer, en leur permettant de taper des messages texte. Un téléscripteur est requis aux deux extrémités de la conversation pour pouvoir communiquer.
OU
TTY est un terminal utilisé pour taper un message texte.


Coquille : la partie protectrice extérieure d'une graine, c'est-à-dire le noyau.
OU
structure ou structure extérieure à la partie centrale ou essentielle d'un système.
entrez la description de l'image ici


Console signifie que le clavier et le moniteur se connectent physiquement à un ordinateur.

Premraj
la source
28

Il y a déjà deux bonnes réponses, mais je voudrais ajouter des informations sur l'expression "terminal virtuel" . En général, cela signifie quelque chose qui donne l’apparence / les fonctionnalités d’un terminal, i. e. un au sens large. Mais dans les débuts de Linux (1994–95), il était utilisé comme synonyme de «console virtuelle» (plusieurs interfaces utilisateur non liées) , par certains développeurs. Cet usage persiste dans la documentation. deux termes différents étaient (et sont) utilisés pour désigner tty1, tty2… thingies. De nos jours (depuis 1996), "terminal virtuel" peut également désigner des émulateurs de terminaux basés sur .

Linux vt(le pilote de la console système en mode texte) était la première pièce de son noyau. Il était initialement utilisé pour la connexion à des ordinateurs centraux et, dans ce sens, c'est un «terminal virtuel», d'où son nom. Le code contrôlant les consoles virtuelles résidevt.c également. Les ingénieurs du noyau Linux utilisent systématiquement le mot «consoles» pour désigner tty1, tty2… et utilisent le préfixe «vc_» pour eux. Par exemple, il y a une vc_allocatefonction. D'autre part, les développeurs de ces outils dans l' espace utilisateur comme kbdet console-toolsutilisé « console virtuelle » (VC) et « terminaux virtuels » (VT) de manière interchangeable. Contacté Andries E. Brouweret lui a demandé de clarifier la terminologie utilisée par les premiers développeurs (1994–95). Andries a gentiment 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 converser n'est pas vrai. Les «terminaux virtuels» qui ne sont pas des consoles virtuelles sont bien des pseudoterminaux (comme le dit Andries, ce ne sont pas des terminaux virtuels ). Contrairement aux consoles virtuelles, où le noyau fournit la fonctionnalité de terminal pour une application console, les pseudo- terminaux utilisent des «périphériques» PTY pour organiser la communication entre les applications console et le programme de création de terminal exécuté dans l'espace utilisateur . Des exemples sont les émulateurs de terminal basés sur X etsshd, qui alloue un pseudonyme à chaque session de connexion. Un pseudo-pseudo ne peut pas s'appeler «console» - c'est une erreur.

Incnis Mrsi
la source
14
  • Terminal = Une interface qui fournit un affichage pour la sortie et un clavier pour la saisie dans une session shell.

  • Shell = interpréteur qui exécute les commandes saisies sous forme de chaîne

  • Console: En fait, nous utilisons deux types de console.

    • Console physique = L’affichage matériel et le clavier utilisés pour interagir avec un système

    • Console virtuelle = 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.

Rakib
la source
Qu'est-ce qu'un tty? - sinon, votre réponse est la seule que j'ai lue
loxaxs le
8

Vous devez plonger dans l'histoire.

Il y avait des appareils semblables à des machines à écrire avec du papier et un clavier. Ils ont été appelés télétypes (ce qui signifie "type à distance," puisque "tele" signifie "distant") ou ttys en abrégé. Dans les années 70, ils étaient obsolètes avec des appareils dotés d’un moniteur à tube cathodique appelé glass ttys .

Tout ordinateur a besoin d'un moyen de signaler son état et ses erreurs (et probablement d'accepter des commandes). Cela se fait via une console qui est presque toujours connectée directement à l'ordinateur. Donc, il y a 2 significations pour console : quelque chose qui sert à 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 télétype est appelé terminal . UNIX disposait également d’un sous-système spécial permettant de gérer les "utilisateurs assis derrière des 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 d'indiquer au noyau d'exécuter l'application. shell (sh, bash, csh, ksh, etc.) est utilisé pour cela. shell s'exécute sur tty , accepte les commandes de l'utilisateur et demande au noyau de lancer 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 frappes de touches de l'utilisateur et les envoyant quelque part (xterm et ssh sont de bons exemples). Il existe une API dans le noyau appelée pseudo-terminal pour cela. Donc, votre terminal peut vraiment être connecté à une application plutôt qu’à un vrai terminal. Xterm utilise X11 pour afficher du texte et ssh utilise une connexion réseau pour cela.

Les ordinateurs IBM ont un clavier et une carte vidéo ( parfois appelés console ). Linux peut faire différentes choses avec:

  • Utilisez-le comme "moteur pour signaler les erreurs et le statut": console Linux. Si vous transmettez console = / dev / ttyS0 au noyau, il utilisera une connexion à COM1 en tant que console et, dans le cas contraire, il utilisera la console PC.
  • Utilisez-le pour émuler un terminal, appelé terminal virtuel (vty).

Il peut également arrêter d'émuler le terminal sur la console et le donner à une application. App peut changer de mode vidéo et l'utiliser exclusivement (X11 ou svgalib peuvent le faire).

Donc, voici les significations modernes:

  • terminal: Quelque chose avec un utilisateur réel assis derrière. Peut-être un terminal physique (rare) ou un pseudo-terminal (xterm, ssh) ou virtuel (vty sous Linux)
  • shell: application (bash, tcsh, etc.) permettant à l’utilisateur d’interagir avec le système.
  • tty: soit un terminal, soit un sous-système du noyau pour prendre en charge les terminaux.
  • console: /dev/consoleaffichage de l' état et des erreurs ( ) ou affichage physique du clavier et de la vidéo sur l'ordinateur.
utilisateur996142
la source
7

Voici la réponse courte -

Noyau - la partie la plus interne de tout système d'exploitation moderne qui communique directement avec le matériel réel.

Shell - enveloppe autour du noyau actuel. Chaque fois que nous exécutons une commande, nous parlons en fait au shell, qui appelle à son tour les instructions appropriées du noyau. En dehors de cela, le shell est capable d'effectuer d'autres tâches telles que trouver le programme approprié tout en ayant des commandes, des noms de fichiers courts, des commandes de tuyauterie, etc.

Terminal - à l’ère de l’informatique antérieure, les ordinateurs (appelés Mainframe) étaient gigantesques. Il était donc facile d’avoir une seule unité de traitement et de la connecter depuis plusieurs endroits. Terminal est le matériel réel avec clavier et périphériques de sortie connectés à l'ordinateur central.

Console - Type spécial de terminal directement connecté à l’ordinateur central aux fins d’administration du système d’exploitation.

tty - TeleTypewewriter utilisé pour envoyer et recevoir des données depuis et vers l’ordinateur central. Utilisé avant la disponibilité des terminaux vidéo. Mais traditionnellement, il a toujours été nommé tty. Même la commandestty

La réponse longue et détaillée est ici - Terminal, Console, Shell, Kernel, Commandes - Différentes parties d’un ordinateur

Palash Kanti Kundu
la source
merci, mais fondamentalement, si le terminal existe, pourquoi existe-t-il encore dans le système Ubuntu pour ordinateurs personnels, accessible avec alt + f-1/6, je ne peux pas comprendre leur utilité au-dessus du fait qu’ils sont accessibles sans utiliser le système graphique si j'ai bien compris
Webwoman
1
@Webwoman - Mon système est configuré pour autoriser uniquement l'accès au rootcompte via sudoou via un identifiant de console. Les consoles ont souvent une place spéciale en termes de privilège, car une personne qui y a accès a nécessairement un accès physique à l'ordinateur avec lequel elle communique. Ils constituent également la méthode d'accès de dernier recours. Si le système d'exploitation est partiellement défectueux (le pilote Ethernet, par exemple, est défectueux), vous pouvez toujours accéder à la console. C’est le seul périphérique d’interface humaine qui devrait TOUJOURS être disponible, quel que soit l’état du système.
Omnifarious
@ Merci pour votre réponse "Les consoles ont souvent une place particulière en ce qui concerne les privilèges, car une personne qui y a accès a nécessairement un accès physique à l'ordinateur avec lequel elles communiquent" Vous vouliez dire que les téléscripteurs ont souvent une place spéciale en matière de privilèges?
Webwoman
@Webwoman - Nope, console. Souvent, un téléscripteur n'est pas directement connecté à un ordinateur. Et souvent, une console n’est pas un téléscripteur au sens traditionnel du terme. Lorsque je me suis rendu à l’Université du Minnesota à la fin des années 80, il existait un réseau spécialisé à l’échelle du campus, dont je n’exécutais pas le protocole Internet (IP) pour connecter des TTY aléatoires à des ordinateurs aléatoires. Les ordinateurs centraux IBM ont la même chose et c'est l'une des principales raisons pour lesquelles IBM a créé SNA. Et un PC normal, même lorsqu'il ne montre que du texte, est très différent d'un téléscripteur à bien des égards. Une console de PC n'est donc pas vraiment un téléscripteur.
Omnifarious
@Webwoman - La caractéristique principale d'une console est qu'elle dispose d'une connexion directe au matériel qui exécute le système d'exploitation. Cette idée est un peu floue avec les «machines virtuelles» modernes, mais c'est l'idée de base.
Omnifarious le
6

Outre la réponse acceptée et l' article démystifié de The TTY , j'ai vraiment adoré lire ces deux articles:

Celui- ci est basé sur NetBSD.

Dans l'ère de pierre d'Unix, les systèmes informatiques consistaient en un ordinateur central, une grande boîte de voyants clignotants dotés de mémoire, d'unités de stockage de masse et de calculateurs, et exécutaient des processus lancés par des utilisateurs ou des opérateurs. Le matériel étant très coûteux, les systèmes étaient utilisés comme de véritables systèmes multi-utilisateurs, de nombreuses personnes interagissant simultanément avec le système. Contrairement aux stations de travail Unix actuelles, ce qu’il n’avait habituellement pas, c’était un moniteur et un clavier fixes. Au lieu de cela, l'émission de commandes sur la machine et l'extraction de la sortie ont été effectuées sur des lignes série, en utilisant tout d'abord les téléscripteurs, puis les terminaux à tube cathodique. Les téléscripteurs - c’est d’où viennent les "ttys" d’Unix - sont des machines à écrire électroniques qui envoient des touches sur la ligne série à l’hôte,

Celui- ci est basé sur Linux.

Les terminaux sont des périphériques offrant des capacités d'entrée / sortie améliorées allant au-delà de ce que l'on pourrait obtenir avec uniquement des fichiers, des canaux et des sockets classiques. Ces fonctionnalités sont conçues pour faciliter l’interaction des utilisateurs avec les ordinateurs et sont inutiles pour les programmes qui essaient de se parler.

Nishant
la source
1

Permettez-moi de tenter ma chance. Je vais utiliser Unix et Linux plus ou moins comme synonyme. Si je fais référence à quelque chose d’historique 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 version Linux de Unix, j’écrirai habituellement "Linux ".

coquille

La seule chose dans votre liste qui est un concept discret qui ne se chevauche pas avec les autres est le "shell". Le shell est un programme dont le but est de communiquer avec un utilisateur et d’effectuer les opérations du 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 saisisse une commande de texte, puis à exécuter cette commande. Mais il y a des shells basés sur des menus, et même des shells graphiques (comme Windows File Explorer), bien qu'aucune personne Unix qui se respecte ne puisse jamais appeler une telle chose un "shell".

Sous Unix, si quelqu'un appelle quelque chose un «shell», cela signifie certainement une sorte d'interface de ligne de commande, comme je viens de le décrire. Et, dans le monde Unix, il est très étrange de qualifier quelque chose de "shell" s'il ne communique pas avec un utilisateur utilisant le modèle tty que je décris plus loin.

ATS

C’est une source de confusion car elle peut faire référence à différentes sortes de choses.

Sous Linux, il existe une sorte de périphérique appelé "tty". Il s’agit d’un dispositif abstrait censé être utilisé pour la communication bidirectionnelle avec quelque chose qui est soit un utilisateur, soit en train de prendre une entrée d’un utilisateur. Parfois, ce périphérique abstrait peut correspondre directement à un périphérique physique. Parfois, il peut s'agir d'un programme présentant à quelqu'un une fenêtre dans laquelle la communication apparaît et dans laquelle l'utilisateur peut taper.

Mais, la raison pour laquelle ce périphérique abstrait existe et qu'on l'appelle un "tty" est que "tty" est l'abréviation de "teletype", qui était un périphérique physique réel avec une imprimante imprimée sur papier associée à un clavier. Le modèle présenté par le périphérique 'tty' abstrait aux programmes qui l'utilisent repose essentiellement sur le fait qu'il existe un téléscripteur à l'autre extrémité. Vous lui envoyez des caractères et ces caractères apparaissent sur le télétype. Lorsque vous lisez des caractères, ceux-ci représentent des touches tapées au clavier.

Les vieux films basés sur une imprimante papier ont été rapidement remplacés par des films vidéo. 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 «écran» abstraite aux programmes, les programmes sont censés envoyer des flux spéciaux de caractères appelés séquences d’échappement qui accomplissent diverses tâches. Il existe généralement un élément abstrait appelé "curseur" qui peut être déplacé sur l'écran, et tout caractère envoyé remplace ce qui se trouve sur le curseur et ce dernier se déplace d'un caractère à un autre. Souvent, vous pouvez également modifier la couleur d'un caractère sur le point d'être imprimé avec des séquences d'échappement.

Il y a des 'tts de verre' qui ne suivent pas ce modèle et sont donc mal gérés dans le monde Unix. La famille de terminaux vidéo IBM 3270 entre dans cette catégorie.

Ce que les gens Linux / Unix appellent généralement une "fenêtre shell" est une émulation d'un verre en utilisant une interface utilisateur graphique. En interne, les programmes exécutés à l'intérieur d'une fenêtre shell parlent à un périphérique tty virtuel, parfois appelé pseudo-tty ou pseudo-terminal (ou pty).

Terminal

Un terminal est simplement un endroit où l’ordinateur et l’homme sont supposés s’interfacer. Les terminaux peuvent être complètement graphiques et ne pas suivre le modèle tty de quelque manière que ce soit, même si un programme peut utiliser leurs capacités pour imiter cela. Tous les terminaux physiques réels (en verre ou autre) sont des terminaux.

Console

Une console est un type particulier de terminal qui est généralement supposé ê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 de façon modeste, ce qui vous permet d’utiliser une frappe spéciale pour passer d’une console virtuelle à l’autre. Mais cette virtualisation se fait avec un vrai matériel par logiciel dans le noyau.

Il existe des moyens d'utiliser Linux via 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 quelque sorte) et suit l’ancien modèle de télétype 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 permettant à quiconque de se connecter.

Très varié
la source