Quelle est la différence entre Terminal, Console, Shell et Ligne de commande?

211

Quelle est la différence entre Terminal, Console, Shell et Ligne de commande?

Akiva
la source
1
(1/2) Agent Cool est généralement correct, mais la définition de la console qu'il fournit est obsolète, compte tenu de ce sujet. Son lien contient les informations correctes, si vous le suivez bien. Lire toute la définition sur son lien. Console est utilisé vaguement pour signifier beaucoup de choses similaires, mais le plus important est qu'il fait généralement référence aux périphériques d'entrée et de sortie humains ATTACHED LOCAUX, par exemple un clavier, un écran et peut-être une souris.
0xSheepdog
1
(2/2) Cela peut sembler pédant, mais en tant qu'administrateur système expérimenté, je vous dirai que ce n'est pas le cas . Lorsqu'un système rencontre un problème et semble complètement écrasé / en panne / hors ligne, vous devez vérifier la console physique du système pour voir s'il fonctionne toujours, mais simplement avoir perdu la connectivité réseau. Ce petit détail pourrait vous faire économiser ou coûter des données, un traitement de l’information, etc. Pédant, oui. Mais important.
0xSheepdog
6
@ 0xSheepdog Vous pouvez développer ces commentaires en une réponse complète (y compris les définitions ou les explications relatives aux autres termes), en tant que telle. Ce n'est pas mal pour une question d'avoir plusieurs réponses (sauf peut-être lorsqu'elles transmettent exactement la même information et de la même manière). Je ne sais pas pourquoi la pratique importante consistant à vérifier une machine localement repose sur le fait de connaître / appeler son interface physique une console, mais il est peut-être argumenté qu'il est important pour une communication efficace avec des collègues ou l'utilisation de la documentation. (Vous pourriez clarifier cela dans votre réponse.)
Eliah Kagan Le
4
En raison de leur relation étroite (voir toutes les bonnes réponses), ces termes sont parfois utilisés comme synonymes, ce qui vous a probablement amené à vous poser cette question.
Mark

Réponses:

143

Réponse courte:

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

Longue réponse:

La console et le terminal 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.

Terminal

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. Certains terminaux 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 terminaux, parfois appelés pseudo-terminaux ou pseudo-terminaux, sont fournis (par le biais d'une couche de noyau mince) par des programmes appelés émulateurs de terminaux . Certains types d'émulateurs de terminal incluent:

  • Applications graphiques fonctionnant sous le système X Window : Xterm , Terminal Gnome, Konsole, Terminator, etc.
  • Screen et tmux , qui fournissent 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
  • Attendez - vous , pour les interactions de script de terminal

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.

Console

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 terminaux (ttys) (des combinaisons de touches spéciales permettent de basculer entre ces terminaux); pour embrouiller 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 qu'est-ce que / pourquoi / où est le «vrai» terminal? .

Ligne de commande [interface]

Une ligne de commande est une interface dans laquelle l'utilisateur tape une commande (exprimée sous forme d'une séquence de caractères - généralement un nom de commande suivi de certains paramètres) et appuie sur la Returntouche pour exécuter cette commande.

coquille

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’entend notamment d’un shell en ligne de commande , centré sur la saisie du nom de l’application à démarrer, suivi du nom des fichiers ou des autres objets sur lesquels l’application doit agir, et sur la touche Entrée. Les autres types d’environnements (à l’exception récente de Gnome Shell, par exemple) n’utilisent généralement 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. Le shell par défaut d'Ubuntu est Bash (comme la plupart des autres distributions Linux). Les alternatives populaires incluent zsh (qui met l'accent sur le pouvoir et la personnalisabilité) 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. Sur Ubuntu, Dash/bin/sh est une variante de la cendre (choisie parce qu’elle est plus rapide et utilise moins de mémoire que 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 en 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 son achèvement, 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 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.

Recyclé sous Unix et Linux

Gilles
la source
1
Je ne suis pas d’accord avec vous pour que terminal soit un terme approprié pour désigner un fichier de périphérique terminal et / ou le code de traitement du terminal dans le noyau (tty ioctls, raw / cuit, édition de ligne élémentaire). terminal = tout ce qui gère les codes d’échappement, transforme les touches du clavier en caractères et dessine sur un écran (ou imprime sur du papier / du ruban adhésif). Voir ma réponse pour plus de détails.
Peter Cordes
2
@PeterCordes À ce niveau de détail, il n'y a pas de distinction. POSIX définit terminal comme synonyme de terminal , au sens d'un fichier de périphérique. C'est le sens d'Unix. Il s’agit effectivement de choses qui gèrent les codes d’échappement, transforment les touches en caractères et dessine sur un écran (ou les transmettent via le réseau, ou les journaux dans un fichier, etc.).
Gilles
2
hrm, yeah terminal est utilisé dans ce sens aussi. En supposant qu’il existe un émulateur de terminal ou un port série auquel est connecté un dispositif de terminal, à l’une des extrémités du périphérique que le noyau gère. La gestion des tty dans le noyau (en mode cuit) ne gère que quelques codes de contrôle (signaux sur ^ c, modification de ligne sur ^ u / ^? (Delete). J'essaie de tracer une ligne entre le code tty et la partie de Linux qui implémente un terminal de type VT100 sur une carte graphique et un clavier USB / ps2 / AT. Vous pouvez compiler Linux sans cela, mais pas sans tty.
Peter Cordes
3
@PeterCordes Dans la configuration du noyau, la prise en charge des terminaux peut être laissée de côté (utile pour certains systèmes embarqués rares où la mémoire est extrêmement restreinte); c'est contrôlé par CONFIG_TTY. La prise en charge des émulateurs de terminal (plus précisément appelés pseudo-terminaux - «émulateur de terminal» n'inclut pas toujours telnetd, screen, expect,…) est contrôlée par CONFIG_UNIX98_PTYS. La prise en charge de l’affichage en mode texte du PC et du clavier ou autre est contrôlée par CONFIG_VT. Voir drivers/tty/Kconfigdans la source du noyau.
Gilles
2
Oups, je n'avais pas de source de noyau récente. CONFIG_TTY n'a été ajouté qu'en 2012. Quoi qu'il en soit, j'espère que cela aidera tous ceux qui tentent de comprendre ce que sont les différentes pièces du puzzle et comment elles s'emboîtent.
Peter Cordes
60

Une représentation visuelle.

Terminal

Vous pouvez vous asseoir et travailler comme un chef.

Terminal

Console

Certains matériels qui font un tas de choses.

Console

Un autre exemple de console serait une console de jeu vidéo telle qu'un Super Nintendo [où vous pouvez jouer à Actraiser]

coquille

Fondamentalement une application pour exécuter des commandes.

coquillecoquille

Ligne de commande [Interface]

Fondamentalement, tout ce que vous entrez des commandes dans.

CLICLI

Akiva
la source
8
Vous avez volé mon idée - j'allais donner essentiellement la même réponse. Donc, vous pouvez avoir un vote positif. Le fait est que, bien que ces termes soient pour l’essentiel synonymes de nos jours, des termes tels que "terminal" et "console" ont pour origine des concepts informatiques plus anciens.
thomasrutter
2
Bon effort. Simple et facile
Un Umar Mukthar
19

Du projet d'information Linux :

Terminal : Techniquement, une fenêtre de terminal, également appelée émulateur de terminal, est une fenêtre de texte uniquement dans une interface utilisateur graphique (GUI) qui émule une console.

En mots Une application graphique, à partir de laquelle nous pouvons accéder à la console d’un utilisateur.

Console : un tableau de bord contenant les commandes d'un ordinateur

Shell : un shell est un programme fournissant l'interface utilisateur traditionnelle en texte seul pour Linux et d'autres systèmes d'exploitation de type Unix.

Ligne de commande: une ligne de commande est l'espace situé à droite de l'invite de commande en mode d'affichage de texte intégral sur un écran d'ordinateur (généralement un écran CRT ou LCD) dans lequel un utilisateur entre des commandes et des données.

rɑːdʒɑ
la source
5
"Terminal" représente un écran physique composé uniquement de texte. Ce que vous dites est en réalité un "émulateur de terminal".
Utilisateur enregistré
2
@RegisteredUser Un émulateur de terminal est une sorte de terminal. Le mot terminal n'est pas limité aux terminaux physiques (le mot habituel pour cela est console ).
Gilles
2
Cette définition de la ligne de commande est fausse. Une ligne de commande n'est pas limitée à un mode d'affichage tout texte.
Gilles
1
@ Gilles je l'ai attrapé à partir d'un lien Web. Vous avez dit bonne réponse bien.
vendredi
5
@AgentCool Je ne doute pas de votre capacité à copier-coller. Je remets en question votre choix de source. Ce que vous publiez relève de votre responsabilité, que vous l'ayez écrite ou non.
Gilles
15

Les réponses ici semblent très bonnes. Cependant, ils sont trop secs et techniques à mon goût, je vais donc les prendre.

Terminal est la fin de quelque chose - où il se termine. Par exemple, si vous prenez le métro dans une ville, la gare où vous descendez est votre terminal. Ou dans un aéroport, le lieu où les gens sortent lorsqu'ils atteignent leur pays de destination est considéré comme le terminal. La raison pour laquelle le terminal de l'aéroport est à la fois l'endroit où vous amenez les gens à bord et l'endroit où vous les sortez de l'avion est pour des raisons économiques évidentes.

Le but d'un ordinateur est d'obtenir des données, de faire quelque chose avec elles et de cracher le résultat. Ainsi, le terminal est n’importe quel appareil d’où vous pouvez obtenir le résultat du calcul (un écran par exemple). Il se trouve que, sur les premiers ordinateurs, l'entrée (clavier) et la sortie (écran) étaient généralement associées à un seul périphérique. De ce fait, les terminaux sont aujourd'hui considérés comme des périphériques d’entrée / sortie. Une souris, un clavier, un écran, une caméra, ce sont tous des terminaux.

Shell est une chose OS. Sur un ordinateur, vous avez le noyau qui sous Ubuntu est par exemple la partie Linux. Maintenant que le noyau est vraiment de bas niveau, un shell est fourni - un programme qui permet à l’utilisateur d’interagir facilement avec le noyau. C'est ce que BASH est par exemple.

La console est (à partir d'un dictionnaire)

une surface plane contenant les commandes d'une machine, d'un équipement électrique, etc.

C’est pourquoi, dans l’industrie de la musique, les tableaux avec tous les boutons ou, dans une navette spatiale, la table de commande sont considérés comme des consoles. Super Nintendo et PS2 sont également appelées consoles par le passé, car les premiers appareils de divertissement ressemblaient à des boîtes remplies de boutons.

La ligne de commande est juste une interface - l'opposé de l'interface graphique. À savoir, il existe deux types d'interfaces sur un ordinateur. CLI (interface de ligne de commande) et GUI (interface utilisateur graphique). La principale différence est que le premier reçoit les entrées du clavier tandis que le second reçoit les entrées de la souris.

Pithikos
la source
1
Que voulez-vous dire "le contraire de GUI"?
Koray Tugay
2
Par opposition, je veux dire que vous avez soit une interface de ligne de commande, soit une interface graphique. J'ai clarifié maintenant un peu plus dans la réponse.
Pithikos
12

Pour résumer ma réponse:

Shell est un programme qui processescommande et returnsaffiche, comme bash sous Linux.

Terminal est un programme qui interprétaitrun un shell , c’était auparavant un périphérique physique (avant, les terminaux étaient des moniteurs avec clavier, c’était des télétypes ), puis son concept était transféré dans un logiciel , comme Gnome-Terminal .

J'ai donc ouvert Gnome-Terminal , une fenêtre noire apparaît qui exécute Shell pour que je puisse exécuter mes commandes.

La console est un type spécial de terminal , c’était aussi un périphérique physique. par exemple sous Linux , nous avons virtual consolece que je peux y accéder en combinaison Ctrl+ Alt+ F1 to F7.

Console signifie parfois le clavier et le moniteur physiquement connectés à cet ordinateur.

nux
la source
11

Ces termes vont souvent ensemble, alors les gens utilisent l'un des termes pour faire référence à la collection. (c’est-à-dire qu’il est généralement évident dans le contexte qu’il s’agit d’une fenêtre de terminal fournissant une interface à un shell en ligne de commande)

Pour éviter que cela ne finisse trop longtemps, je vais simplement dire que xterm remplace XTerm / Gnome Terminal / Konsole / mrxvt / etc / etc. Idem pour bash.

Console a plusieurs autres significations spécifiques, laissez donc cela pour le moment.

Terminal : quelque chose qui fournit une interaction humaine avec les programmes via un flux bidirectionnel de caractères ASCII / UTF8 / autres, généralement avec le traitement de code d'échappement VT100 ou similaire. (Par exemple, le retour arrière, la suppression, les touches fléchées, etc. génèrent des codes d'échappement. Les programmes peuvent imprimer des codes d'échappement pour déplacer le curseur sur l'écran du terminal, passer en gras, en couleur et / ou en couleur, effacer ou faire défiler l'écran, etc.) Autrefois, il s’agissait souvent d’une appliance dédiée avec écran, clavier et port série. Maintenant, c’est généralement un programme comme xterm.

Il existe des fichiers de périphériques permettant aux programmes de lire / écrire à partir de / vers des terminaux, et les terminaux virtuels ont également l’autre face accessible en tant que fichier de périphérique. C'est là que xterm écrit votre entrée afin que bash puisse la lire.

Chaque terminal, y compris les terminaux virtuels, fournit une édition de base des lignes lorsqu'il est en mode préparé (par opposition au mode brut). Ceci est géré par le code du noyau. C'est bash qui fournit l'édition des lignes que vous pouvez faire avec les touches fléchées. (Essayez de lancer catet de taper si vous voulez voir comment se présente l’édition de ligne fournie par le noyau. Le Backspace fonctionne, et quelques autres choses selon vos paramètres stty.)

Même s'il y a beaucoup de code de noyau derrière les périphériques, il est appelé code de gestion de terminal et non de terminal lui-même.

Edit: Gilles m'a convaincue que l'utilisation d'un terminal comme terminal est un bon usage. Les émulateurs de terminal, ainsi que les programmes interactifs exécutés sur un terminal, dépendent tous de la sémantique du terminal implémentée par le noyau. (La plupart de ce comportement est normalisé par POSIX et est identique sous Linux / * BSD / un autre Unix.) Un éditeur de texte en plein écran dépend du comportement des éléments Unix tty ainsi que de la gestion du code d'échappement du mouvement du curseur, et de nombreuses autres fonctionnalités de l'émulateur de terminal.

Cependant, un VT100 physique doté d'un écran, d'un clavier et d'un port série est une instance d'un terminal. Il n’est pas nécessaire qu’un noyau Unix à l’autre extrémité de son port série soit complet. Quelque chose de complètement différent pourrait être d'envoyer des codes d'échappement et du texte ASCII, et de recevoir les mêmes. Ce serait juste un VT100, cependant, pas un terminal Unix. Un émulateur de terminal et la sémantique Unix tty constituent le package complet d’un terminal Unix sur lequel un programme tel que bash est normalement exécuté.

La ligne de commande est un style d'interface utilisateur dans lequel vous tapez quelque chose, puis appuyez sur Entrée pour que quelque chose se passe. Il est également utilisé comme raccourci pour un shell en ligne de commande, comme bash ou MS-DOS, mais vous pouvez également dire «c'est un outil en ligne de commande» à propos de quelque chose comme fdisk. Considérant uniquement les programmes qui utilisent un terminal pour leur interface utilisateur, les deux familles principales sont la ligne de commande et le texte en plein écran (par exemple, un éditeur tel que vi ou emacs -nw).

Les programmes de ligne de commande qui fonctionnent normalement sur des terminaux fonctionnent presque toujours avec leur entrée et leur sortie redirigées vers des fichiers, mais les programmes plein écran basés sur un terminal, tels que les éditeurs ou les clients de messagerie, sont uniquement interactifs et ne fonctionnent pas.

Un shell est un programme pour démarrer d'autres programmes. Dans un contexte Unix, il est courant de parler d'un shell en ligne de commande (shell Bourne ou équivalent C). Les shells Unix peuvent également lire leurs entrées à partir de fichiers, c'est-à-dire de scripts shell. Ce sont des langages de programmation complets, avec des variables, des boucles et des conditions, et de nombreux programmes sont écrits en bash (ou avec uniquement les /bin/shfonctionnalités du shell POSIX, pour plus de portabilité). Il est également possible d’écrire rapidement for i in *.something; do some_program "$i";done dans un shell interactif.

En résumé, un shell tel que bash (ou le programme que vous avez démarré en exécutant une commande shell) recevra des caractères du /dev/pts/Nterminal après que xterm aura écrit votre entrée sur son côté du pseudo-terminal. Si vous exécutez catpuis frappez ^c, le code de noyau du noyau agira sur ^cet enverra un SIGINTprocessus au premier plan sur ce terminal. (Notez l'utilisation du terminalCela signifie que le shell met le terminal en mode "cuit" avant de lancer tout programme, ce qui signifie que le noyau agit sur certains contrôles. des séquences. (Le code tty n’a toujours rien à voir avec la gestion des codes d’échappement VT100, mais quelques codes de contrôle ASCII bas.) Si au lieu d’un xterm, vous utilisez le terminal texte de la console Linux, le noyau effectue alors l’émulation VT100, et gérer tout ça. Linux peut être compilé sans le support du terminal texte de la console virtuelle, mais pas sans le support tty.

La console est parfois utilisée comme synonyme de terminal (KDE possède même un émulateur de terminal appelé Konsole).

Comme 0xSheepdog le souligne, cela a aussi une autre signification: le matériel d'interaction humaine connecté localement.

Dans un contexte de noyau, console a une autre signification spécifique: c'est le terminal où les messages de démarrage sont écrits. Cela peut être un port série. Normalement, bien sûr, il s’agit de la console texte mise en oeuvre par le noyau en plus des pilotes pour le matériel graphique et les claviers USB / ps2 / AT. Si vous démarrez Linux avec console=tty0 console=ttyS0,115200n8la ligne de commande, vous obtiendrez des messages du noyau sur votre écran ET sur le port série.

Linux implémente les consoles virtuelles ( /dev/tty1en N ). Vous pouvez échanger celui que votre écran / clavier physique contrôle avec Ctrl+ Alt+ . Les distributions Linux typiques en créent 6 et les lancent toutes. Ainsi, même si vous ne pouvez ou ne voulez pas démarrer X11, vous pouvez vous connecter 6 fois et basculer entre une commande, une page de manuel et tout le reste, sans lancer un programme comme screen. Linux (le noyau) comprend un émulateur de terminal de style VT100 qui fournit une interface de terminal via votre écran et votre clavier sur les consoles virtuelles.FNgetty

Les 6 terminaux virtuels standard avec invites de connexion expliquent pourquoi Ctrl+ Alt+ F7vous ramène à votre session X11: le serveur X saisit la prochaine console virtuelle disponible. (Le serveur X s'ouvre /dev/input/...directement, au lieu de recevoir les touches du clavier /dev/tty7, cependant.)

Donc, "basculer sur une console texte" signifie appuyer sur Ctrl+ Alt+ F1et utiliser ce terminal. À l'époque où les ordinateurs étaient lents et ne disposaient pas de beaucoup de RAM, certaines personnes passaient beaucoup de temps sur les consoles de texte. Comme elles étaient rapides, vous pouvez définir une belle police et même modifier la taille du terminal pour que les caractères soient plus petits. plus à l'écran à la fois. Alt+ Leftet Alt+ Rightbasculent vers la console précédente / suivante. (X11 désactive ceci pour sa console, bien sûr, ne laissant que le combo Ctrl+ Alt+ .)FN

Donc, console est le seul de ces termes à n'avoir aucune signification technique bien définie. Il y en a deux ou trois. (Selon ce que vous pensez du terminal et de son utilisation, vous pouvez dire que ce terminal a également plusieurs significations.)

Peter Cordes
la source
2
Console signifiant que le terminal physique «principal» ne se trouve pas uniquement dans un contexte de noyau. C'est le même sens dans /dev/console. La console n'est pas particulièrement ambiguë - bien qu'elle soit parfois utilisée dans le sens plus général du terme terminal , c'est assez rare (plus rare que le terme terminal désigne spécifiquement une console).
Gilles
1
oui, echo foo | sudo tee / dev / console> / dev / null sera imprimé à l'écran, si votre VT actuel est en mode texte (y compris la console du tampon de mémoire, et pas seulement en mode texte VGA). Si vous avez démarré avec la console sur un port série, je pense que cela irait là-bas. Vous pouvez dire que / dev / console est le fichier de périphérique correspondant à tout ce que le noyau considère comme une console système. Rien d'autre dans le système n'a besoin d'avoir la moindre idée de la présence d'un terminal (à l'exception des opérations de récupération au démarrage qui démarrent un shell sur le TTY de la console si le système ne parvient pas à démarrer en mode multi-utilisateurs. Généralement, à partir d'initrd)
Peter Cordes
1
Le serveur X xorg (chaînes / usr / bin / Xorg) n'utilise pas / dev / console pour obtenir un accès matériel. Il utilise / dev / tty0 et / dev / tty% d et / dev / vc /% d pour se configurer lui-même sur son VT. Je suis sûr que Xorg fonctionnerait toujours bien sur un PC qui a démarré avec la console du noyau sur un port série. Et que les terminaux virtuels en mode texte fonctionneraient toujours. Plus je considère cela, plus je penche vers l'affichage de la console dans un contexte de noyau comme un terminal spécial, sélectionné au démarrage. (Linux peut réellement sortir ses messages de console sur plusieurs terminaux à la fois, si vous le lui demandez.)
Peter Cordes
6

Je pense qu'au début des ordinateurs à temps partagé, chaque utilisateur avait un terminal (quand il pouvait en avoir un!), Mais seuls les opérateurs système avaient une console. La console peut être utilisée pour des tâches telles que le redémarrage de la machine ou l'obtention de diagnostics système impossibles à partir des terminaux utilisateur. La console se trouvait dans la salle des machines, une partie intrinsèque de l'ordinateur, alors que les terminaux pouvaient être distants. La console comprendrait également des voyants et des commutateurs matériels, et pas seulement l’entrée et la sortie de texte.

Je dirais que la ligne de commande est une zone dans laquelle un utilisateur peut taper une commande, alors que le shell est le programme qui interprète / obéit à cette commande. Le terme "shell" est très particulier aux dérivés Unix; "ligne de commande" est plus dans la tradition Windows / DOS. L'équivalent sur les ordinateurs centraux est généralement appelé "langage de contrôle de travail".

Clairement, ces distinctions originales sont devenues floues avec le temps, à mesure que la technologie évoluait.

Michael Kay
la source
3

Essayer une réponse courte centrée sur l'utilisateur:

ligne de commande - la ligne où vous entrez des commandes. Habituellement, il indiquait que vous devez exécuter quelque chose dans une fenêtre en mode texte (interface de ligne de commande) fournie par votre système d'exploitation.

shell - le programme réel exécuté par le système d'exploitation pour traiter les éléments que vous entrez command line. D'où le nom - shell convivial pour les systèmes d'exploitation non conviviaux. Il fournit une invite de commande, telle que $ou >, exécute ses propres commandes et applications. Vous travaillez toujours dans le shellprogramme et ne travaillez jamais directement avec la console ou le terminal.

console - est une fenêtre où vos programmes en mode texte sont en cours d'exécution. Cette fenêtre traite les appuis sur les touches, sait que c'est la largeur et la hauteur. Peut être en plein écran.

terminal - est un appareil avec affichage pour les humains qui accepte le flux d'entrée de caractères et les affiche. Il n'y a pas de retour d'information à l'utilisateur concernant la hauteur ou la largeur (seulement les hacks) ni les touches du clavier - seuls les caractères y voyagent. Le terminal traite des séquences spéciales dans ce flux pour colorer les choses, nettoyer l’écran et faire d’autres choses désagréables. Les terminaux sont floconneux, car il est facile de tout gâcher si le fichier que vous voulez transférer contient ces séquences spéciales. Ils sont populaires dans les interfaces réseau et de débogage de périphérique, car vous avez besoin d'un seul flux pour envoyer la sortie et contrôler le périphérique de sortie. Vous pouvez simplement tapconverser sans avoir à initialiser ou à créer une fenêtre.

console série - est une console qui traite le flux d'entrée comme un terminal.

Anatoly Techtonik
la source
3

C'est un sujet vague, car les termes sont très ambigus. Je recommande fortement de lire les liens que j'ai fournis tout au long de cette réponse, qui sont également mes sources pour cette réponse.

Un shell est la couche au dessus du noyau:

  • Il interprète les commandes entrées par l'utilisateur et les traite. Le shell a accès au noyau, contrairement aux utilisateurs. Les utilisateurs ne peuvent accéder au noyau qu'en saisissant des commandes à l'aide d'un shell et en utilisant des processus (c'est-à-dire des programmes en cours d'exécution). Les programmes utilisent des appels système pour accéder aux fonctionnalités du noyau. Tous les appels système ensemble forment l'API système.
  • Des exemples de coques sont donnés dans la définition du deuxième terminal.

Un terminal a plusieurs significations:

  • (1) Un terminal texte . C'est la combinaison d'un moniteur et d'un clavier. Un câble connecte le terminal à l'ordinateur (souvent indirectement). Il s’appelait un terminal car il se trouvait à l’extrémité du câble. Ces terminaux étaient généralement physiquement séparés de l'ordinateur, car à l'époque, de nombreux terminaux étaient connectés à un seul ordinateur central, de sorte que plusieurs utilisateurs pouvaient avoir accès à l'ordinateur en même temps.
  • (2) Une fenêtre de terminal aka émulateur de terminal . Sous Linux, une fenêtre de terminal est l’émulation d’une console contenue dans une fenêtre graphique. C'est la CLI dans laquelle vous tapez votre texte et cette entrée est lue par le shell que vous utilisez. Il existe de nombreux types de shell (par exemple, bash, dash, ksh88) et de terminaux (par exemple, konsole, gnome).
  • (3) Pour une explication sur les pseudo - terminaux , voir ce . C'est une paire de deux «fichiers de périphérique» utilisés pour la communication entre un processus et un émulateur de terminal.

Une console a plusieurs significations:

  • (1) un tableau de bord contenant les commandes d'un ordinateur.
  • (2) Une console système, également appelée console d’ordinateur . Il s’agit de la combinaison d’un moniteur et d’un clavier connecté à un ordinateur. Ceci est synonyme de ce que nous appelons un «terminal texte». Parfois, d'autres périphériques d'entrée utilisateur tels qu'une souris font également partie d'une console.
  • (3) Une interface de ligne de commande qui couvre tout l'écran. Ceci est en contraste avec une fenêtre de terminal, qui est une interface utilisateur graphique avec un X dans le coin supérieur droit pour la fermer. Ce sont les deux modes d'affichage pour CLI (interfaces de ligne de commande) dans les systèmes de type Unix. De manière similaire à une fenêtre de terminal, la console peut également exécuter de nombreux shells.

Les systèmes d'exploitation vous permettent souvent d'exécuter plusieurs consoles sur une console physique (définition de console 2). Elles sont appelées consoles virtuelles aka terminaux virtuels , et sont accessibles par le biais ctrl+ alt+ Fxcombinaisons. Par exemple, si vous voulez ouvrir la 3ème console virtuelle, vous utilisez la combinaison ctrl+ alt+ F3.

Les consoles (définition 3) peuvent vous apparaître comme un anachronisme, mais les experts doivent être à l'aise pour les utiliser, car de nombreux systèmes d'exploitation ne prennent pas en charge les interfaces graphiques. De plus, si une interface graphique cesse de répondre, la console peut toujours fonctionner.

utilisateur1534664
la source
2

De nos jours, la plupart des terminaux sont à proprement parler des émulateurs de terminaux . C'est un type de rôle dans le fonctionnement d'un système de type UNIX et en même temps l'interface de base offerte par les systèmes. En fait, tout, y compris l'interface graphique, se construit dessus.
Communément, "terminal" peut également désigner des points d'extrémité dans un réseau informatique avec une topographie en étoile.

Console fait référence aux interfaces (matérielles) des terminaux. C'est-à-dire qu'il existe des consoles série et, pour la plupart, virtuelles .
La fenêtre couramment appelée "console" -window est un shell, connecté à un terminal du système, via une console virtuelle.

À l'époque où les ordinateurs coûtaient cher, une installation pouvait avoir un seul ordinateur et plusieurs terminaux connectés via des câbles série ("console série"). Le système d'exploitation, les opérations, etc. ont été effectués sur l'ordinateur physique, les entrées et les sorties se sont déroulées sur la ou les consoles.
Vous pouvez basculer entre les terminaux virtuels en appuyant sur CTRL+ ALT+ F1(jusqu'à F6): un reliquat de ces heures.
Aujourd'hui, le concept de "clients légers" va dans le sens de la centralisation de quantités énormes de ressources et de la fourniture de suffisamment de matériel pour fournir une interface de pointe sur le lieu de travail actuel.

shell est le "moteur" que vous voyez dans le terminal. Il fournit Interop avec le système lui - même et ajoute des fonctionnalités intéressantes comme auto-complet, les variables etc ..
Il se traduit dans les deux sens entre le système d' exploitation / noyau réel qui utilise les appels système et vous. Les appels système sans shell sont un peu comme le codage assembleret un shell vous en donne au moins C.

La ligne de commande fait référence à la méthode d'échange d'entrées et de sorties via une fenêtre de texte. Strictement parlant, la ligne dans laquelle vous tapez est la ligne de commande (actuelle). La méthode en général est plus correctement appelée interface de ligne de commande ou CLI.

  1. noyau
  2. offre terminal
  3. le terminal est connecté via une console
  4. console exécute shell
  5. les commandes et les sorties sont échangées via la ligne de commande (interface)
marque
la source
1
Les instructions en ligne de commande ne sont pas comprises par le noyau, mais par un shell. Le «cadre principal d'instructions que le noyau comprend» serait constitué d'appels système. L'interface de ligne de commande UNIX de base est un shell, il n'y a pas de séparation entre cela et les "fonctionnalités intéressantes". Une "fenêtre d'émulateur de terminal" n'est pas une console.
Gilles
1
@Gilles ajusté. Évidemment, j'ai confondu certaines choses là-bas.
Mark