Quelle est la différence entre Terminal, Console, Shell et Ligne de commande?
Quelle est la différence entre Terminal, Console, Shell et Ligne de commande?
Réponses:
Réponse courte:
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.
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:
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 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? .
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.
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.
\e[D
). Le shell convertit les séquences de contrôle en commandes (par exemple \e[D
→ backward-char
).M-x shell
Emacs.foo
», «change la couleur de premier plan en vert», «déplace le curseur sur la ligne suivante», etc. Le terminal agit sur ces instructions.Recyclé sous Unix et Linux
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/Kconfig
dans la source du noyau.
Une représentation visuelle.
Vous pouvez vous asseoir et travailler comme un chef.
Certains matériels qui font un tas de choses.
Un autre exemple de console serait une console de jeu vidéo telle qu'un Super Nintendo [où vous pouvez jouer à Actraiser]
Fondamentalement une application pour exécuter des commandes.
Fondamentalement, tout ce que vous entrez des commandes dans.
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.
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.
Pour résumer ma réponse:
Shell est un programme qui processes
commande et returns
affiche, 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 console
ce 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.
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 cat
et 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/sh
fonctionnalité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/N
terminal après que xterm aura écrit votre entrée sur son côté du pseudo-terminal. Si vous exécutez cat
puis frappez ^c
, le code de noyau du noyau agira sur ^c
et enverra un SIGINT
processus 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,115200n8
la 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/tty1
en 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.)
/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).
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.
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 shell
programme 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 tap
converser 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.
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:
Un terminal a plusieurs significations:
Une console a plusieurs significations:
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.
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 assembler
et 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.