%20in%20Linux%3F.png)
Als Neuling haben mich diese drei Konzepte in letzter Zeit oft verwirrt: Shell, Terminal, Konsole und Befehlszeile. Insbesondere Konsole und Terminal?
Antwort1
Eine Shell ist ein Programm, das Sie zur Schnittstelle mit dem Computer verwenden. Es kann sich um eine Befehlszeilenschnittstelle oder eine Point-and-Click-Schnittstelle handeln. Bash ist eine Shell, ebenso wie Gnome2 usw.
Terminal ist ein belasteter Begriff in der modernen Computertechnik. Er stammt aus der Zeit der alten Großrechner, als man auf einem Hardwaregerät tippte, das direkt mit dem Großrechner verbunden war (ein Thin Client, mit nur einer Tastatur und einem Monitor). Das Hardwareterminal interagierte mit einer Software-Shell, die auf dem Großrechner lief. Als PCs und andere kleine Thick-Client-Systeme auf den Markt kamen, begannen wir, Terminalemulator-Software zu verwenden, die vorgab, unser Thick Client sei nur ein Thin-Client-Terminal, das mit dem Großrechner verbunden war, und uns ermöglichte, eine Remote-Verbindung herzustellen. Hier fanden Dinge wie CICS-Anwendungen ihre Nische.
Im modernen Sinne gnome-terminal
ist ein Linux-Terminal ein Terminalemulator, der eine Shell auf dem lokalen System ausführt. Der entscheidende Punkt ist, dass ein Terminal immer eine Shell enthält und Sie das Terminal verwenden, um die Shell zu erreichen und mit ihr zu interagieren, unabhängig davon, ob es sich um ein Hardware- oder Softwareterminal handelt.
Im modernen Sprachgebrauch ist ein Client (aus dem Client/Server-Modell für Computer) eine Software, die eine Verbindung zu einem Dienst herstellt und diesen nutzt. Ihr Webbrowser ist ein Client für HTTP-Dienste. Um eine Verbindung zu einem Samba- oder Windows-Server herzustellen, benötigen Sie einen Samba-Client. Ein Terminalemulator über eine Remoteverbindung verwendet für die Remoteverbindung häufig einen Client wie Telnet, SSH oder Hyperterm. Clients stellen die Verbindung normalerweise über das Netzwerk als Medium her und übermitteln Nachrichten basierend auf einem Kommunikationsprotokoll (wie HTTP).
Der Begriff Client kann sich auch auf Hardware beziehen, ist aber außer in einigen Nischenbereichen weniger gebräuchlich. Früher wurde ein eigenständiges System, das man an das Netzwerk anschloss, zu einem Client in diesem Netzwerk. Daher stammen auch Begriffe wie Thin-Client (eine plattenlose Maschine, auf der Software remote ausgeführt wurde) und Thick-Client (ein eigenständiger PC mit eigenem Betriebssystem, CPU, RAM und sekundärem Speicher). Normalerweise können Sie aus dem Kontext erkennen, ob der Sprecher ein Hardwaregerät (PC/Server/usw.) oder einen bestimmten Software-Client meint.
hoffe, das trägt zur Aufklärung bei.
Antwort2
Ein Terminal befindet sich am Ende eines Stromkabels, ein Panzer ist das Zuhause einer Schildkröte, TTY ist eine seltsame Abkürzung und eine Konsole ist eine Art Schrank.
Also, zumindest etymologisch gesehen.
In der Unix-Terminologie lautet die kurze Antwort:
- Terminal = tty = Text-Eingabe/Ausgabeumgebung
- Konsole = physisches Terminal
- Shell = Kommandozeileninterpreter
Konsole, Terminal und TTY sind eng miteinander verwandt. Ursprünglich bezeichneten sie ein Gerät, mit dem man mit einem Computer interagieren konnte: In den frühen Tagen von Unix war damit einFernschreiber-artiges Gerät, das einer Schreibmaschine ähnelt und manchmal auch Fernschreiber oder in Kurzform „tty“ genannt wird. Der Name „Terminal“ stammt aus der elektronischen Sichtweise und der Name „Konsole“ aus der Möbelsichtweise. Sehr früh in der Unix-Geschichte wurden elektronische Tastaturen und Displays zur Norm für Terminals.
In der Unix-Terminologie einttyist eine besondere Art vonGerätedateiwelches eine Reihe zusätzlicher Befehle implementiert (ioctls) über Lesen und Schreiben hinaus. In seiner gebräuchlichsten BedeutungTerminalist gleichbedeutend mit tty. Einige ttys werden vom Kernel im Namen eines Hardwaregeräts bereitgestellt, beispielsweise wenn die Eingabe über die Tastatur erfolgt und die Ausgabe an einen Textmodus-Bildschirm geht oder wenn die Eingabe und Ausgabe über eine serielle Leitung übertragen werden. Andere ttys, manchmal auchPseudo-Ttys, werden (über eine dünne Kernel-Schicht) von Programmen bereitgestellt, dieTerminalemulatoren, wie zum BeispielXterm(läuft imX Window System),Bildschirm(das eine Isolationsschicht zwischen einem Programm und einem anderen Terminal bereitstellt),SSH(das ein Terminal auf einer Maschine mit Programmen auf einer anderen Maschine verbindet),Erwarten(zum Skripten von Terminalinteraktionen) usw.
Das Wort Terminal kann auch eine traditionellere Bedeutung haben: ein Gerät, über das man mit einem Computer interagiert, normalerweise mit einer Tastatur und einem Display. Ein X-Terminal ist beispielsweise eine ArtDünner Kunde, ein Spezialcomputer, dessen einziger Zweck darin besteht, eine Tastatur, einen Bildschirm, eine Maus und gelegentlich andere Peripheriegeräte für die menschliche Interaktion anzusteuern, wobei die eigentlichen Anwendungen auf einem anderen, leistungsstärkeren Computer ausgeführt werden.
AKonsoleist im Allgemeinen ein Terminal im physischen Sinne, das per Definition das primäre Terminal ist, das direkt mit einer Maschine verbunden ist. Die Konsole erscheint dem Betriebssystem als (kernelimplementiertes) TTY. Auf einigen Systemen, wie Linux und FreeBSD, erscheint die Konsole als mehrere TTYs (spezielle Tastenkombinationen wechseln zwischen diesen TTYs); um die Sache noch verwirrender zu machen, kann der Name, der jedem einzelnen TTY gegeben wird, „Konsole“, „virtuelle Konsole“, „virtuelles Terminal“ und andere Variationen sein.
Siehe auchWarum ist ein virtuelles Terminal „virtuell“ und was/warum/wo ist das „echte“ Terminal?.
AHülseist die primäre Schnittstelle, die Benutzer sehen, wenn sie sich anmelden, und deren Hauptzweck darin besteht, andere Programme zu starten. (Ich weiß nicht, ob die ursprüngliche Metapher darin besteht, dass die Shell die Heimumgebung des Benutzers ist oder dass die Shell das ist, wo andere Programme ausgeführt werden.)
In Unix-KreisenHülsehat sich spezialisiert auf die Bedeutung einerKommandozeilen-Shell, wobei man den Namen der Anwendung eingibt, die man starten möchte, gefolgt von den Namen der Dateien oder anderer Objekte, auf die die Anwendung reagieren soll, und dann die Eingabetaste drückt. Andere Arten von Umgebungen verwenden das Wort „Shell“ nicht; Fenstersysteme beinhalten beispielsweise „Fenstermanager" Und "Desktopumgebungen“, keine „Schale“.
Es gibt viele verschiedene Unix-Shells. Beliebte Shells für die interaktive Nutzung sindSchlag(die Standardeinstellung bei den meisten Linux-Installationen),zsh(wobei Leistung und Anpassbarkeit im Vordergrund stehen) undFisch(was die Einfachheit betont).
Befehlszeilen-Shells enthalten Flusssteuerungskonstrukte zum Kombinieren von Befehlen. Benutzer können nicht nur Befehle in eine interaktive Eingabeaufforderung eingeben, sondern auch Skripte schreiben. Die gängigsten Shells haben eine gemeinsame Syntax basierend aufBourne_Shell. Bei der Diskussion von „Shell-Programmierung“, wird die Shell fast immer als eine Shell im Bourne-Stil verstanden. Einige Shells, die oft für Skripting verwendet werden, denen jedoch erweiterte interaktive Funktionen fehlen, sinddie Korn-Shell (ksh)und vieleAscheVarianten. Auf praktisch jedem Unix-ähnlichen System ist eine Shell im Bourne-Stil installiert /bin/sh
, normalerweise ash, ksh oder bash.
In der Unix-SystemadministrationHülseist das Programm, das beim Anmelden aufgerufen wird. Normale Benutzerkonten haben eine Befehlszeilen-Shell, aber Benutzer mit eingeschränktem Zugriff haben möglicherweise eineeingeschränkte Schaleoder ein anderer spezifischer Befehl (z. B. für Nur-Dateiübertragungskonten).
Die Arbeitsteilung zwischen Terminal und Shell ist nicht ganz offensichtlich. Hier sind ihre Hauptaufgaben.
- Eingabe: Das Terminal wandelt Tastenkombinationen in Steuersequenzen um (z. B. Left→
\e[D
). Die Shell wandelt Steuersequenzen in Befehle um (z. B.\e[D
→backward-char
). - Zeilenbearbeitung, Eingabeverlauf und Vervollständigung werden von der Shell bereitgestellt.
- Das Terminal kann stattdessen seine eigene Zeilenbearbeitung, seinen eigenen Verlauf und seine eigene Vervollständigung bereitstellen und eine Zeile erst dann an die Shell senden, wenn sie zur Ausführung bereit ist. Das einzige gängige Terminal, das auf diese Weise funktioniert, ist
M-x shell
Emacs.
- Das Terminal kann stattdessen seine eigene Zeilenbearbeitung, seinen eigenen Verlauf und seine eigene Vervollständigung bereitstellen und eine Zeile erst dann an die Shell senden, wenn sie zur Ausführung bereit ist. Das einzige gängige Terminal, das auf diese Weise funktioniert, ist
- Ausgabe: Die Shell gibt Anweisungen wie „Anzeige
foo
“, „Vordergrundfarbe auf Grün ändern“, „Cursor zur nächsten Zeile bewegen“ usw. aus. Das Terminal reagiert auf diese Anweisungen. - Bei der Eingabeaufforderung handelt es sich lediglich um ein Shell-Konzept.
- Die Shell sieht nie die Ausgabe der von ihr ausgeführten Befehle (es sei denn, sie wird umgeleitet). Der Ausgabeverlauf (Scrollback) ist ein reines Terminalkonzept.
- Das Kopieren und Einfügen zwischen Anwendungen wird vom Terminal bereitgestellt (normalerweise mit der Maus oder Tastenkombinationen wie Ctrl+ Shift+ Voder Shift+ Insert). Die Shell kann auch über einen eigenen internen Kopier- und Einfügemechanismus verfügen (z. B. Meta+ Wund Ctrl+ Y).
- Auftragssteuerung(Programme im Hintergrund starten und verwalten) wird größtenteils von der Shell ausgeführt. Tastenkombinationen wie Ctrl+ Czum Beenden des Vordergrundjobs und Ctrl+ Zzum Anhalten des Jobs werden jedoch vom Terminal verarbeitet.
Recycelt ausUnix und Linux
Antwort3
OK,
Shell: führt Befehle in einer Befehlszeilenschnittstelle aus. Es ist das Programm, das weiß, was zu tun ist (welche Programme aufzurufen sind), wenn Sie etwas wie „cd“, „grep“ usw. eingeben. Normalerweise wird es auch Bash oder Zsh genannt (am gebräuchlichsten). Eine Shell führt auch ein direktes Skript aus (normalerweise .sh-Dateien, obwohl die Erweiterung nicht obligatorisch ist).
Terminal: ein grafisches Fenster (normalerweise) zum Ausführen der eigentlichen Shell. Verfügt über den zusätzlichen Schnickschnack wie Registerkarten, Schriftarten, Zeilen-/Spaltengröße usw. Ein Terminal kann definiert werden, um die gewünschte Shell auszuführen.
Client: hat nichts mit dem Rest zu tun. In jeder App mit einer Client/Server-Architektur (einer Website, einer SSH-Verbindung, einem Datenbankverwaltungsprogramm, einem Multiplayer-Spiel) interagieren Sie mit dem Client und dieser sendet die Befehle an den Server.
Beispiel: Verbindung mit SSH herstellen.
- Sie öffnen ein Terminal.
- Führen Sie den Befehl aus: ssh[email geschützt]
- Die Shell ist das, was den SSH-Befehl tatsächlich ausführt und einen SSH-Client startet
- dieser Client verbindet sich über das Internet mit dem SSH-Server
- Wenn Sie beispielsweise „whoami“ im Terminal eingeben, führt die Shell den SSH-Client aus und weiß daher, dass der Befehl an den Server gesendet werden soll. Am anderen Ende des Netzes führt der Server den Befehl aus, sendet das Ergebnis zurück an Ihre Shell und das Terminal erstellt eine schöne, für Menschen lesbare Anzeige auf dem Desktop.
Wechseln wir zu einem Spiel: Das „Terminal“ ist die hübsche Benutzeroberfläche, die „Shell“ sind die inneren Organe, die wissen, was mit Klicks und Tastendrücken zu tun ist, und der „Client“ ist die Spiel-Engine selbst, die Daten hin und her an den Server sendet, damit sich alle Spieler ohne Verzögerungen gegenseitig fertigmachen können :)
Dies ist eine sehr vereinfachte Ansicht, aber ohne die Einzelheiten geht es auch genau darum.
Antwort4
AlsGillesgeschrieben aufeine ähnliche Frage bei Ask Ubuntu:
- Terminal = Text-Eingabe/Ausgabeumgebung
- Konsole = physisches Terminal
- Shell = Kommandozeileninterpreter
Konsole und Terminal sind eng verwandt. Ursprünglich bezeichneten sie ein Gerät, mit dem man mit einem Computer interagieren konnte. (…) In der Unix-Terminologie ist ein Terminal eine bestimmte Art von Gerätedatei, die neben Lesen und Schreiben eine Reihe zusätzlicher Befehle (ioctls) implementiert. Einige Terminals, manchmal auch Pseudoterminals oder Pseudo-TTYs genannt, werden (über eine dünne Kernelschicht) von Programmen bereitgestellt, die Terminalemulatoren genannt werden. Einige Arten von Terminalemulatoren sind:
- Im X Window-System ausgeführte GUI-Anwendungen: Xterm, Gnome Terminal, Konsole, Terminator usw.
- Screen und tmux, das eine Isolationsschicht zwischen einem Programm und einem anderen Terminal bereitstellt.
- SSH, das ein Terminal auf einem Computer mit Programmen auf einem anderen Computer verbindet.
- Erwarten Sie, für die Skripterstellung für Terminalinteraktionen.
(…) Eine Konsole ist im Allgemeinen ein Terminal im physischen Sinne, das nach einer bestimmten Definition das primäre Terminal ist, das direkt mit einer Maschine verbunden ist. Die Konsole erscheint dem Betriebssystem als (im Kernel implementiertes) Terminal. Auf einigen Systemen, wie Linux und FreeBSD, erscheint die Konsole als mehrere Terminals (ttys) (spezielle Tastenkombinationen wechseln zwischen diesen Terminals); um die Sache noch verwirrender zu machen, kann der Name, der jedem einzelnen Terminal gegeben wird, „Konsole“, „virtuelle Konsole“, „virtuelles Terminal“ und andere Variationen sein.
(…) Eine Befehlszeile ist eine Schnittstelle, in der der Benutzer einen Befehl eingibt (der als Zeichenfolge ausgedrückt wird – normalerweise ein Befehlsname, gefolgt von einigen Parametern) und die Taste drücktZurückkehrenTaste, um diesen Befehl auszuführen.
Eine Shell ist die primäre Benutzeroberfläche, die Benutzer sehen, wenn sie sich anmelden. Ihr Hauptzweck besteht darin, andere Programme zu starten. (Ich weiß nicht, ob die ursprüngliche Metapher darin besteht, dass die Shell die Heimumgebung des Benutzers ist oder dass die Shell das ist, wo andere Programme ausgeführt werden.)
In Unix-Kreisen hat sich Shell auf eine Kommandozeilen-Shell spezialisiert, bei der man den Namen der Anwendung eingibt, die man starten möchte, gefolgt von den Namen der Dateien oder anderer Objekte, auf die die Anwendung reagieren soll, und dann die Eingabetaste drückt. Andere Arten von Umgebungen (mit der bemerkenswerten jüngsten Ausnahme von Gnome Shell) verwenden das Wort „Shell“ normalerweise nicht; Fenstersysteme umfassen beispielsweise „Fenstermanager“ und „Desktopumgebungen“, aber keine „Shell“.
Wenn Sie googeln, finden Sie viele nützliche Informationen zu diesem Thema.