Was ist der genaue Unterschied zwischen einem "Terminal", einer "Shell", einem "Tty" und einer "Konsole"?


1235

Ich denke, diese Begriffe beziehen sich fast auf dasselbe, wenn sie lose verwendet werden:

  • Terminal
  • Schale
  • tty
  • Konsole

Worauf bezieht sich jeder dieser Begriffe genau?



28
Ich möchte 'Kommandozeile' hinzufügen :-)
teeks99

1
Die Befehlszeile ist einfach die Sprache, die zum Senden von Befehlen an den in einer Shell ausgeführten Befehlszeileninterpreter vom Terminal / Terminal-Emulator verwendet wird.
Marty Fried

1
Die Teletypewriter (TTY) wurde erstmals in Betrieb genommen und 1844 am Mechanics Institute in New York ausgestellt. En.wikipedia.org/wiki/Teleprinter
Serge Stroobandt

Zwei weitere nützliche Links - feyrer.de/NetBSD/ttys.html und quora.com/…
Nishant

Antworten:


1198

Ein Terminal befindet sich am Ende eines elektrischen Kabels, eine Muschel ist die Heimat einer Schildkröte, tty ist eine seltsame Abkürzung und eine Konsole ist eine Art Schrank.

Naja, zumindest etymologisch.

In der Unix-Terminologie lautet die kurze Antwort:

  • terminal = tty = Umgebung für Texteingabe / -ausgabe
  • Konsole = physisches Terminal
  • Shell = Befehlszeileninterpreter

Konsole, Terminal und tty sind eng miteinander verbunden. Ursprünglich bedeuteten sie ein Gerät, mit dem man mit einem Computer interagieren konnte: In den Anfängen von Unix bedeutete dies ein Gerät im Teleprinter- Stil, das einer Schreibmaschine ähnelte, manchmal auch als Teletypewriter oder kurz „tty“ bezeichnet. Der Name „Terminal“ kam aus elektronischer Sicht und der Name „Konsole“ aus Möbelsicht. Sehr früh in der Unix-Geschichte wurden elektronische Tastaturen und Displays zur Norm für Terminals.

In der Unix-Terminologie ist tty eine bestimmte Art von Gerätedatei, die eine Reihe zusätzlicher Befehle ( ioctls ) implementiert, die über das Lesen und Schreiben hinausgehen. Terminal ist in seiner gebräuchlichsten Bedeutung gleichbedeutend mit tty. Einige ttys werden vom Kernel im Auftrag eines Hardwaregeräts bereitgestellt, z. B. wenn die Eingabe von der Tastatur kommt und die Ausgabe zu einem Textmodusbildschirm geht oder wenn die Eingabe und Ausgabe über eine serielle Leitung übertragen werden. Andere ttys, manchmal auch Pseudo-ttys genannt , werden (über eine dünne Kernel-Schicht) von Programmen bereitgestellt, die als Terminal-Emulatoren bezeichnet werden , z. B. Xterm (ausgeführt im X Window System ), Screen(das eine Isolationsschicht zwischen einem Programm und einem anderen Terminal bietet), Ssh (das ein Terminal auf einem Computer mit Programmen auf einem anderen Computer verbindet), Expect (für die Skripterstellung von Terminalinteraktionen) usw.

Das Wort Terminal kann auch eine traditionellere Bedeutung eines Geräts haben, über das man mit einem Computer interagiert, typischerweise mit einer Tastatur und einem Display. Beispielsweise ist ein X-Terminal eine Art Thin Client , ein Spezialcomputer, dessen einziger Zweck darin besteht, Tastatur, Bildschirm, Maus und gelegentlich andere Peripheriegeräte für die menschliche Interaktion zu steuern, wobei die eigentlichen Anwendungen auf einem anderen, leistungsstärkeren Computer ausgeführt werden.

Eine Konsole ist im Allgemeinen ein Terminal im physischen Sinne, das definitionsgemäß das primäre Terminal ist, das direkt mit einer Maschine verbunden ist. Die Konsole erscheint dem Betriebssystem als (kernelimplementierte) Tty. Auf einigen Systemen, wie Linux und FreeBSD, erscheint die Konsole als mehrere ttys (spezielle Tastenkombinationen wechseln zwischen diesen ttys); Nur um die Sache zu verwechseln, kann der Name, der jeder bestimmten Tty gegeben wird, "Konsole", "virtuelle Konsole", "virtuelles Terminal" und andere Variationen sein.

Siehe auch Warum ist ein virtuelles Terminal "virtuell" und was / warum / wo ist das "echte" Terminal? .


Eine Shell ist die Hauptschnittstelle, die Benutzern beim Anmelden angezeigt wird und deren Hauptzweck darin besteht, andere Programme zu starten. (Ich weiß nicht, ob die ursprüngliche Metapher lautet, dass die Shell die Heimumgebung für den Benutzer ist oder dass die Shell das ist, in dem andere Programme ausgeführt werden.)

In Unix-Kreisen hat sich Shell auf eine Befehlszeilen-Shell spezialisiert , die sich darauf konzentriert, den Namen der zu startenden Anwendung einzugeben, gefolgt von den Namen der Dateien oder anderen Objekte, auf die die Anwendung reagieren soll, und die Eingabetaste zu drücken. In anderen Umgebungen wird das Wort "Shell" nicht verwendet. Bei Fenstersystemen handelt es sich beispielsweise um „ Fenstermanager “ und „ Desktop-Umgebungen “, nicht um eine „Shell“.

Es gibt viele verschiedene Unix-Shells. Zu den beliebten Shells für die interaktive Verwendung gehören Bash (die Standardeinstellung bei den meisten Linux-Installationen), zsh (mit Schwerpunkt auf Leistung und Anpassbarkeit) und fish (mit Schwerpunkt auf Einfachheit).

Befehlszeilen-Shells enthalten Flusssteuerungskonstrukte zum Kombinieren von Befehlen. Benutzer können nicht nur Befehle an einer interaktiven Eingabeaufforderung eingeben, sondern auch Skripts schreiben. Die gebräuchlichsten Shells haben eine gemeinsame Syntax, die auf der Bourne_shell basiert . Bei der Erörterung der " Shell-Programmierung " wird die Shell fast immer als eine Bourne-artige Shell impliziert. Einige Shells, die häufig für Skripte verwendet werden, aber keine erweiterten interaktiven Funktionen bieten, umfassen die Korn-Shell (ksh) und viele Ash- Varianten. Auf so ziemlich jedem Unix-ähnlichen System ist eine Bourne-Shell installiert /bin/sh, normalerweise ash, ksh oder bash.

In der Unix-Systemadministration ist die Shell eines Benutzers das Programm, das beim Anmelden aufgerufen wird. Normale Benutzerkonten verfügen über eine Befehlszeilen-Shell, Benutzer mit eingeschränktem Zugriff haben jedoch möglicherweise eine eingeschränkte Shell oder einen anderen spezifischen Befehl (z. B. für die Dateiübertragung) -nur Konten).


Die Arbeitsteilung zwischen Terminal und Shell ist nicht ganz offensichtlich. Hier sind ihre Hauptaufgaben.

  • Eingabe: Das Terminal wandelt Tasten in Steuersequenzen um (zB Left\e[D). Die Shell wandelt Steuersequenzen in Befehle um (zB \e[Dbackward-char).
  • Zeilenbearbeitung, Eingabeverlauf und Vervollständigung werden von der Shell bereitgestellt.
    • Das Terminal kann stattdessen seine eigene Zeilenbearbeitung, -historie und -vervollständigung bereitstellen und nur dann eine Zeile an die Shell senden, wenn sie zur Ausführung bereit ist. Das einzige gemeinsame Terminal, das auf diese Weise funktioniert, befindet sich M-x shellin Emacs.
  • Ausgabe: Die Shell gibt Anweisungen wie „Anzeige foo“, „Vordergrundfarbe auf Grün umschalten“, „Cursor in nächste Zeile bewegen“ usw. aus. Das Terminal reagiert auf diese Anweisungen.
  • Die Eingabeaufforderung ist lediglich ein Shell-Konzept.
  • Die Shell sieht nie die Ausgabe der von ihr ausgeführten Befehle (sofern nicht umgeleitet). Die Ausgabehistorie (Scrollback) ist ein reines Terminalkonzept.
  • Inter-Anwendungskopie-Paste wird durch das Terminal ( in der Regel mit der Maus oder Tastenfolge wie vorgesehen Ctrl+ Shift+ Voder Shift+ Insert). Die Shell kann auch einen eigenen internen Copy-Paste-Mechanismus haben (zB Meta+ Wund Ctrl+ Y).
  • Die Auftragssteuerung (Starten und Verwalten von Programmen im Hintergrund) wird hauptsächlich von der Shell ausgeführt. Es ist jedoch das Terminal, das Tastenkombinationen wie Ctrl+ Cum den Vordergrundjob abzubrechen und Ctrl+ Zum ihn auszusetzen, verarbeitet.

50
Einziges Manko: Ich würde sagen, dass beide Arten von ttys vom Kernel "bereitgestellt" werden. Der Unterschied, den ich hervorheben möchte, besteht darin, dass Hardware-Tty (z. B. serielle Leitungen und die eingebaute Konsole im Textmodus) mit einem Ende an Hardware und mit einem Ende an Software (z. B. Anmeldeprogramme und / oder Shells) angeschlossen sind, während Pseudo-Tty dies tun Beide Enden sind mit der Software verbunden (z. B. ein Terminal-Emulator an einem Ende und eine Shell am anderen).
Chris Johnsen

12
@phunehehe: Richtig, das ist eine andere Bedeutung von "Shell", die im Betriebssystemdesign häufig verwendet wird: Die Shell ist der äußere Teil des Kernels. Es ist keine Unix-Terminologie: Unix-Kernel haben in der Regel keine Komponente, die man als Shell bezeichnen könnte.
Gilles

24
Dies ist für mich das Bild für die Muschelmetapher.
ændrük,

12
Es gibt auch eine andere Bedeutung von "Konsole" unter Linux. Die Konsole (es gibt nur eine) hat eine printkausreichende Priorität (z. B. Kernel Panics). Die Einstellung erfolgt console=DEVICE,...über die Kernel-Befehlszeile (z. B. console=ttyS0,115200für den ersten seriellen Port mit 115.200 Bit / s). Normalerweise wird standardmäßig das virtuelle Terminal verwendet, dies kann jedoch geändert werden, wenn der Kernel kompiliert wird.
Derobert

19
"... das Terminal ... verarbeitet Tastenkombinationen wie Strg + C, um den Vordergrundjob abzubrechen, und Strg + Z, um ihn auszusetzen." . Standardmäßig konvertiert das tty-Gerät die Steuerzeichen in Signale, die an die Shell (und andere Prozesse) gesendet werden.
Chris Seite

194

Ein Terminal oder eine Konsole ist eine Hardware, mit der ein Benutzer mit einem Host interagieren kann. Grundsätzlich eine Tastatur mit einem Textbildschirm gekoppelt.
Heutzutage repräsentieren fast alle Terminals und Konsolen "virtuelle".

Die Datei, die ein Terminal darstellt, wird traditionell als tty- Datei bezeichnet. Wenn Sie sich das "/ dev" -Verzeichnis eines UNIX-Systems ansehen, finden Sie viele tty- Dateien, die mit virtuellen Konsolen (z. B. tty1 unter Linux), virtuellen Terminals (z. B. pts / 0) oder physisch verbundener Hardware (z. B. ttyS0) verbunden sind ist das physikalische serielle Terminal (falls vorhanden), das an der ersten seriellen Schnittstelle des Hosts angeschlossen ist.

Eine Konsole muss eine Hardwarekomponente sein, die physisch mit dem Host (oder einem Teil davon) verbunden ist. Es spielt eine besondere Rolle im System: Es ist der Hauptpunkt, um auf ein System für die Wartung zuzugreifen, und einige spezielle Vorgänge können nur von einer Konsole aus ausgeführt werden (siehe z single user mode. B. ). Ein Terminal kann und ist in der Regel eine entfernte Hardware.

Last but not least ist eine Shell ein spezielles Programm, das mit einem Benutzer über eine Steuerung interagiert und dem Benutzer die Möglichkeit bietet, andere Programme (z. B. bash, csh, tcsh) zu starten.

Ein Terminalemulator ist ein Programm, das ein physikalisches Terminal emuliert (zB xterm, gnome-terminal, minicom).

Wenn Sie also auf ein "Textfenster" in Ihrem Linux-System (unter X11) schauen, suchen Sie nach: einem Terminal-Emulator , der mit einem virtuellen Terminal verbunden ist und durch eine tty- Datei identifiziert wird , in der eine Shell ausgeführt wird .


2
Jeder Desktop-Computer hat eine Systemkonsole (in meinem 2015 oder 2010 ist das egal). Wie es richtig angegeben wurde, ist es ein Stück Hardware. Die Aussage "Heutzutage sind fast alle ... Konsolen" virtuelle "Konsolen", ist jedoch fast widersprüchlich und offensichtlich nicht gut.
Incnis Mrsi

1
"Ein Terminal oder eine Konsole ist eine Hardware, mit der ein Benutzer mit einem Host interagieren kann. Im Grunde genommen eine Tastatur, die mit einem Textbildschirm gekoppelt ist." ehrfürchtige Erklärung durch seinen konkreten Aspekt
Webwoman

@andcoz - Was meinst du mit "Textfenster"? Ist ein Terminalemulator kein virtuelles Terminal? Wenn ich den Befehl ttyin einem Terminal-Emulator wie KDE's Konsole ausführe, ist die Ausgabe / dev / pts / 0.
Motivierter

1
@IncnisMrsi - Ist ein Desktop-Computer nicht die Konsole ? Wenn nicht, was meinst du mit einer Systemkonsole?
Motivierter

2
@Motivated /dev/pts/0ist eine tty-Datei, ein Handler für eine vom Kernel bereitgestellte Programmierschnittstelle. Über diesen Handler kann ein Programm (z. B. die Shell) mit einem Terminal (real oder virtuell) interagieren. Ein Terminalemulator ist eine Software, die ein Terminal emuliert. Der Emulator fordert den Kernel auf, einen Handler zu erstellen, mit dem Programme mit sich selbst interagieren können (siehe man openpty). Die Informationen fließen also vom Terminal (Emulator) zum Kernel-Tty-Handler und zum Programm (und umgekehrt). Programme und Terminals sprechen nicht direkt miteinander, sondern nur über die tty-Datei (den Handler).
Andcoz

48

KURZE Erklärung:

Die Konsole ist ein Terminal. Ein System verfügt über eine Konsole und möglicherweise mehrere Terminals. Die Konsole ist normalerweise die Hauptschnittstelle für die Verwaltung eines Computers, z. B. während er noch hochgefahren wird.

Ein Terminal ist eine Sitzung, die Ein- und Ausgaben für Befehlszeilenprogramme empfangen und senden kann. Die Konsole ist ein Sonderfall davon.

Ein TTY ist im Wesentlichen ein Pseudo-Gerät. Nennen Sie es eine Kernel-Ressource, die von Prozessen verwendet wird, um auf ein bestimmtes Terminal zuzugreifen. TTYs können an Hardware wie eine serielle Schnittstelle gebunden oder virtuell erstellt werden, z. B. wenn sich ein Benutzer über ein Netzwerk anmeldet

Die Shell ist ein Programm, mit dem Programme gesteuert und ausgeführt werden. Es wird häufig interaktiv über ein Terminal verwendet. Es gibt mehrere Shell-Programme, von denen Bash heute wohl das am häufigsten verwendete ist. Andere Muscheln, in keiner bestimmten Reihenfolge, umfassen Borowski-Muschel, C-Muschel, Dash, Tsch, Ksh und das zunehmend populäre zsh. Es gibt viele mehr.

Wenn Sie über eine grafische Benutzeroberfläche verfügen, können Sie mit einem Terminalprogramm einen ansprechenden, anpassbaren Rahmen zeichnen, Bildlaufleisten hinzufügen und den Text für eine Terminalsitzung formatieren. Häufig werden diese als Terminalemulatoren bezeichnet, und manchmal können sie mehrere Sitzungen über ein TAB-Konzept verarbeiten. Ein Terminal-Emulator startet häufig eine Shell, damit Sie interaktiv an einer Befehlszeile arbeiten können.


1
PTY ist ein Pseudo-TTY. TTY kann ein virtuelles (Pseudo-) Terminal sein, ist es aber nicht.
Luciano

35

Eine TTY (dh T ele TY Pewriter) ist ein spezielles Gerät, mit dem gehörlose, schwerhörige oder sprachbehinderte Personen über das Telefon kommunizieren können, indem sie Textnachrichten eingeben können. Für die Kommunikation ist an beiden Enden der Konversation ein TTY erforderlich.
OR
TTY ist ein Terminal, mit dem Textnachrichten eingegeben werden.


Schale : die äußere Schutzhülle eines Samens, dh des Kerns.
OP-
Rahmen oder äußere Struktur zum zentralen oder wesentlichen Teil eines Systems.
Bildbeschreibung hier eingeben


Konsole bedeutet, dass Tastatur und Monitor physisch an einen Computer angeschlossen sind.


28

Es gibt bereits zwei gute Antworten, aber ich möchte Informationen zum Begriff „virtuelles Terminal“ hinzufügen . Im Allgemeinen bedeutet dies etwas, das das Erscheinungsbild / die Funktionalität eines Terminals bereitstellt, d.h. e. ein im weiteren Sinne. In den Anfängen von Linux (1994-1995) wurde es von einigen Entwicklern synonym mit „virtueller Konsole“ (mehrere unabhängige Benutzeroberflächen) verwendet . Diese Verwendung bleibt in der Dokumentation erhalten. Zwei verschiedene Begriffe wurden (und werden) verwendet, um auf tty1, tty2 ... -Dingies zu verweisen. Heutzutage (seit 1996) kann sich "virtuelles Terminal" auch auf basierte Terminalemulatoren beziehen .

Linux vt(der Treiber der Textmodus-Systemkonsole) war der erste Teil seines Kernels. Es wurde ursprünglich für die Verbindung mit Großrechnern verwendet und ist in diesem Sinne ein „virtuelles Terminal“, daher der Name. Der Code, der die virtuellen Konsolen steuert, befindet sich ebenfalls invt.c . Linux-Kernelingenieure verwenden konsequent das Wort „Konsolen“, um tty1, tty2… zu bezeichnen, und verwenden für diese das Präfix „vc_“. Zum Beispiel gibt es eine vc_allocateFunktion. Andererseits verwendeten Entwickler von User-Space-Tools wie kbdund console-tools"virtuelle Konsole" (VC) und "virtuelles Terminal" (VT) austauschbar. Ī̲ kontaktiert Andries E. Brouwerund bat ihn, die Terminologie der frühen Entwickler (1994-1995) zu klären. Andries gab freundlicherweise einige Antworten. Er gibt an, dass VT und VC synonym und "unteilbare" Abkürzungen sind. -> Im Allgemeinen ist eine virtuelle Konsole ein virtuelles Terminal, umgekehrt ist dies jedoch nicht der Fall. Diese „virtuellen Terminals“, die keine virtuellen Konsolen sind, sind in der Tat Pseudoterminals (wie Andries feststellt, handelt es sich hierbei nicht um VT ). Im Gegensatz zu virtuellen Konsolen, bei denen der Kernel Terminalfunktionen für eine Konsolenanwendung bereitstellt, verwenden Pseudoterminals PTY- „Geräte“, um die Kommunikation zwischen Konsolenanwendungen und dem im Benutzerbereich ausgeführten Programm zur Terminalerstellung zu organisieren . Beispiele sind X-basierte Terminalemulatoren undsshd, das für jede Anmeldesitzung ein Pseudonym zuweist. Ein Pseudottchen darf nicht als "Konsole" bezeichnet werden - es ist ein Fehler.


14
  • Terminal = Eine Schnittstelle, die eine Anzeige für die Ausgabe und eine Tastatur für die Eingabe in eine Shell-Sitzung bietet.

  • Shell = Interpreter, der Befehle ausführt, die als Zeichenfolge eingegeben wurden

  • Konsole: Tatsächlich werden zwei Arten von Konsolen verwendet

    • Physische Konsole = Hardwareanzeige und Tastatur für die Interaktion mit einem System

    • Virtuelle Konsole = Eine von mehreren logischen Konsolen, die jeweils eine unabhängige Anmeldesitzung unterstützen können.

  • tty (Teletyp, dh Endgerät). = Ein Terminal ist im Grunde genommen nur ein Benutzeroberflächengerät, das Text für die Eingabe und Ausgabe von Nachrichten verwendet.


Was ist ein Tty? - Sonst ist deine Antwort die einzige, die ich lese
loxaxs

8

Sie müssen in die Geschichte eintauchen.

Es gab schreibmaschinenähnliche Geräte mit Papier und Tastatur. Sie wurden als Teletypen (was "ferngesteuert" bedeutet, da "tele" "ferngesteuert" bedeutet) oder kurz " ttys" bezeichnet . In den 70er Jahren wurden sie von Geräten mit CRT-Monitor, den so genannten Glastypen, abgelöst .

Jeder Computer benötigt eine Möglichkeit, seinen Status und Fehler zu melden (und wahrscheinlich Befehle zu akzeptieren). Dies geschieht über eine Konsole, die fast immer direkt mit dem Computer verbunden ist. Es gibt also zwei Bedeutungen für Konsole : etwas, das zum Melden des Status verwendet wird, und etwas, das direkt verbunden ist.

UNIX ist ein interaktives System: Mehrere Benutzer können eine Verbindung herstellen und Anwendungen starten. Die ersten Computer verwendeten dafür Teletypen ( tty ): Jeder Benutzer hatte einen Teletyp, der über eine serielle Verbindung mit dem Computer verbunden war. Ein solcher Teletyp wird Terminal genannt . UNIX hat auch ein spezielles Subsystem für "Benutzer, die hinter Terminals sitzen", das auch als tty bezeichnet wird, da es sich bei den ersten Terminals um Teletypen handelt. Jeder Prozess kann unter Unix mit tty verbunden werden. Das bedeutet, dass sich ein Benutzer in der Nähe des Terminals befindet. Weitere Informationen finden Sie unter http://www.linusakesson.net/programming/tty/ .

Benutzer müssen den Kernel auf irgendeine Weise anweisen, die Anwendung auszuführen. Hierfür wird die Shell (sh, bash, csh, ksh usw.) verwendet. Die Shell läuft auf tty , akzeptiert Befehle vom Benutzer und fordert den Kernel auf, eine App auszuführen.

Terminals sind jedoch nicht immer physisch mit der Maschine verbunden. Es kann eine Anwendung geben, die das Terminal "emuliert", indem sie Tastenanschläge vom Benutzer akzeptiert und an einen anderen Ort sendet (xterm und ssh sind gute Beispiele). Es gibt ein API in Kernel genannten Pseudo - Terminal dafür. So kann Ihr tty zu irgendeiner Anwendung anstelle des realen Endgeräts wirklich angeschlossen werden. Xterm verwendet X11, um Text anzuzeigen, und ssh verwendet dafür die Netzwerkverbindung.

Der IBM PC verfügt über eine Tastatur und eine Grafikkarte (diese werden manchmal auch als Konsole bezeichnet ). Linux kann verschiedene Dinge damit machen:

  • Verwenden Sie es als "Engine zum Melden von Fehlern und Status": Linux-Konsole. Wenn Sie console = / dev / ttyS0 an den Kernel übergeben, wird etwas verwendet, das mit COM1 als Konsole verbunden ist, und wenn Sie dies nicht tun, wird die PC-Konsole verwendet.
  • Verwenden Sie es, um ein Terminal zu emulieren, das so genannte virtuelle Terminal (vty).

Es kann auch vorkommen, dass das Terminal auf der Konsole nicht mehr emuliert wird und an eine App weitergegeben wird. Die App kann den Videomodus wechseln und ausschließlich verwenden (X11 oder svgalib können dies tun).

Also, hier sind moderne Bedeutungen:

  • terminal: Etwas mit echtem User dahinter. Könnte ein physisches Terminal (selten) oder ein Pseudo-Terminal (xterm, ssh) oder ein virtuelles Terminal (vty in Linux) sein
  • shell: Anwendung (bash, tcsh usw.), die dem Benutzer hilft, mit dem System zu interagieren.
  • tty: entweder Terminal oder Kernel-Subsystem zur Unterstützung von Terminals.
  • Konsole: Etwas, bei dem Status und Fehler gemeldet werden ( /dev/console) oder eine physische Tastatur und eine Videoanzeige mit dem Computer verbunden sind.

7

Hier ist die kurze Antwort -

Kernel - der innerste Teil eines modernen Betriebssystems, der direkt mit der eigentlichen Hardware kommuniziert.

Shell - Wrapper um den eigentlichen Kernel. Wann immer wir einen Befehl ausführen, sprechen wir tatsächlich mit der Shell, die wiederum die entsprechenden Kernel-Anweisungen aufruft. Abgesehen davon ist die Shell in der Lage, einige andere Dinge wie das Auffinden geeigneter Programme mit Befehlen, Kurzbefehlen für Dateinamen, Piping-Befehlen usw. auszuführen.

Terminal - In der Ära früherer Computer waren Computer (bekannt als Mainframe) gigantisch. So war es einfach, eine einzige Prozessoreinheit zu haben und sie von vielen Stellen aus anzuschließen. Terminal ist die eigentliche Hardware mit Tastatur und Ausgabegeräten, die an den Mainframe angeschlossen sind.

Konsole - Spezieller Terminaltyp, der zum Zweck der Betriebssystemadministration direkt mit dem Mainframe verbunden ist.

tty - TeleTypewriter zum Senden und Empfangen von Daten zum und vom Mainframe. Wird verwendet, bevor Video-Terminals verfügbar waren. Aber herkömmlicherweise wurde es immer noch als tty bezeichnet. Sogar das Kommandostty

Die ausführliche Antwort finden Sie hier - Terminal, Konsole, Shell, Kernel, Befehle - Verschiedene Teile eines Computers


danke aber im grunde wenn das terminal existiert, warum gibt es das tty auch noch im ubuntu system für personal computer, erreichbar mit alt + f-1/6 bitte, ich kann nicht herausfinden wie nützlich sie sind ohne grafiksystem zu benutzen wenn ich es gut verstanden habe
Webwoman

1
@Webwoman - Ich habe mein System so konfiguriert, dass der Zugriff auf das rootKonto nur über sudooder über eine Konsolenanmeldung möglich ist. Konsolen haben oft ein besonderes Ortsrecht, da jemand, der Zugang zu ihnen hat, notwendigerweise physischen Zugang zu dem Computer hat, mit dem sie kommunizieren. Sie sind auch die Zugriffsmethode des letzten Auswegs. Wenn sich das Betriebssystem in einem teilweise defekten Zustand befindet (z. B. wenn der Ethernet-Treiber defekt ist), können Sie weiterhin auf die Konsole zugreifen. Es ist das einzige Gerät mit menschlicher Schnittstelle, das IMMER verfügbar sein sollte, egal in welchem ​​Zustand sich das System befindet.
Omnifarious

@Omnifarious danke für Ihre Antwort "Konsolen haben oft ein besonderes Ortsprivileg, da jemand, der Zugang zu ihnen hat, notwendigerweise physischen Zugang zu dem Computer hat, mit dem sie kommunizieren" Sie meinten, TTY haben oft ein besonderes Ortsprivileg?
Webwoman

@Webwoman - Nein, Konsole. Ein TTY ist häufig nicht direkt mit einem Computer verbunden. Und eine Konsole ist häufig kein TTY im herkömmlichen Sinne. Als ich Ende der 80er Jahre an die Universität von Minnesota ging, gab es ein campusweites spezialisiertes Netzwerk, in dem ich kein Internet Protocol (auch bekannt als IP) zum Verbinden von zufälligen TTYs mit zufälligen Computern verwendete. IBM Mainframes haben ein ähnliches Problem und dies war einer der Hauptgründe, warum IBM SNA entwickelt hat. Und ein normaler PC, auch wenn er nur Text anzeigt, unterscheidet sich in vielerlei Hinsicht von einem TTY. Eine PC-Konsole ist also nicht wirklich ein TTY.
Omnifarious

@Webwoman - Das entscheidende Merkmal einer Konsole ist, dass sie eine direkte Verbindung zu der Hardware hat, auf der das Betriebssystem ausgeführt wird. Diese Idee ist bei modernen "virtuellen Maschinen" etwas verschwommen, aber das ist die Grundidee.
Omnifarious

6

Abgesehen von der akzeptierten Antwort und dem von TTY entmystifizierten Artikel habe ich es wirklich geliebt, diese beiden Artikel zu lesen:

Dieser basiert auf NetBSD.

In der Steinzeit von Unix bestanden Computersysteme aus einem Großrechner, einer großen Kiste mit Blinklichtern, die Speicher-, Massenspeicher- und Recheneinheiten enthielten und Prozesse ausführten, die von Benutzern oder Betreibern gestartet wurden. Da die Hardware sehr teuer war, wurden die Systeme als echte Mehrbenutzersysteme verwendet, wobei viele Leute gleichzeitig mit dem System interagierten. Was es normalerweise nicht gab - im Gegensatz zu den heutigen Unix-Workstations - war ein fester Monitor und eine Tastatur. Stattdessen wurden Befehle an das Gerät ausgegeben und die Ausgabe über serielle Leitungen abgerufen, wobei zuerst Teletyp-Geräte und später CRT-Terminals (Kathodenstrahlröhre) verwendet wurden. Teletypers - daher kommen die "ttys" in Unix - sind elektronische Schreibmaschinen, die über die serielle Leitung gedrückte Tasten an den Host senden.

Dieser basiert auf Linux.

Terminals sind Geräte, die erweiterte Eingabe- / Ausgabefunktionen bieten, die nur mit regulären Dateien, Pipes und Sockets erreicht werden können. Diese Funktionen sollen es dem Menschen erleichtern, mit Computern zu interagieren, und sind für Programme, die versuchen, miteinander zu kommunizieren, nutzlos.


1

Lassen Sie mich kurz darauf eingehen ... Ich werde dabei mehr oder weniger synonym Unix und Linux verwenden. Wenn ich mich auf etwas Historisches beziehe, das älter ist als Linux, schreibe ich normalerweise "Unix", und wenn ich über etwas Neueres spreche oder über etwas Spezielles für die Linux-Variante von Unix, schreibe ich normalerweise "Linux" ".

Schale

Die einzige Sache in Ihrer Liste, die ein diskretes Konzept ist, das sich nicht mit den anderen überschneidet, ist die 'Hülle'. Die Shell ist ein Programm, das dazu dient, mit einem Benutzer zu kommunizieren und in dessen Auftrag Betriebssystemvorgänge auszuführen.

Die gebräuchlichsten Shells verwenden eine als "Befehlszeile" bezeichnete Technik, die darin besteht, dem Benutzer eine Art Eingabeaufforderung zu senden, darauf zu warten, dass der Benutzer einen Textbefehl eingibt und diesen Befehl dann ausführt. Es gibt jedoch menübasierte Shells und sogar grafische Shells (wie Windows File Explorer), obwohl kein selbstachtungsträchtiger Unix-Benutzer jemals so etwas als "Shell" bezeichnen würde.

Unter Unix bedeutet jemand, der etwas als "Shell" bezeichnet, mit ziemlicher Sicherheit eine Art Befehlszeilenschnittstelle, wie ich es gerade beschrieben habe. Und es ist in der Unix-Welt sehr seltsam, etwas als "Shell" zu bezeichnen, wenn es nicht mit dem weiter unten beschriebenen tty-Modell mit einem Benutzer kommuniziert.

TTY

Dies ist verwirrend, da es sich auf einige verschiedene Arten von Dingen beziehen kann.

Unter Linux gibt es eine Art Gerät namens 'tty'. Es ist ein abstraktes Gerät, von dem erwartet wird, dass es für die bidirektionale Kommunikation mit etwas verwendet wird, das entweder ein Benutzer ist oder auf irgendeine Weise Eingaben von einem Benutzer entgegennimmt. Manchmal kann dieses abstrakte Gerät direkt einem physischen Gerät entsprechen. Manchmal kann es ein Programm sein, das jemandem ein Fenster anzeigt, in dem die Kommunikation angezeigt wird und in das der Benutzer eingeben kann.

Der Grund für die Existenz dieses abstrakten Geräts und die Bezeichnung "tty" ist, dass "tty" die Abkürzung für "Teletype" ist, bei dem es sich um ein physisches Gerät mit einem Drucker handelt, der auf Papier gedruckt und mit einer Tastatur kombiniert wurde. Das Modell, das das abstrakte 'tty'-Gerät für Programme darstellt, die es verwenden, ist im Grunde genommen, dass es einen Teletyp am anderen Ende gibt. Sie senden es Zeichen und diese Zeichen erscheinen auf dem Teletyp. Wenn Sie Zeichen daraus lesen, stellen diese Zeichen Tasten dar, die auf einer Tastatur eingegeben wurden.

Die alten auf Papierdruckern basierenden ttys wurden schnell durch video ttys ersetzt. Auf denen gibt es natürlich keine Papierrolle. Tatsächlich ist es möglich, jedes Zeichen auf dem Bildschirm zu überschreiben. Anstatt jedoch eine abstrakte 'Bildschirm'-Schnittstelle für Programme bereitzustellen, wird von Programmen erwartet, dass sie spezielle Zeichenströme, sogenannte Escape-Sequenzen, senden, die eine Vielzahl von Aufgaben erfüllen. Normalerweise gibt es ein abstraktes Element, das als "Cursor" bezeichnet wird und auf dem Bildschirm bewegt werden kann. Jedes gesendete Zeichen ersetzt das, was sich am Cursor befindet, und der Cursor bewegt ein Zeichen weiter. Oft können Sie auch die Farbe eines Zeichens ändern, das mit Escape-Sequenzen gedruckt werden soll.

Es gibt "Glastypen", die diesem Modell nicht folgen und daher in der Unix-Welt schlecht gehandhabt werden. Die IBM 3270-Familie von Videoterminals fällt in diese Kategorie.

Was Linux / Unix-Leute normalerweise als "Shell-Fenster" bezeichnen, ist eine Emulation einer Glas-Tty unter Verwendung einer grafischen Benutzeroberfläche. Intern kommunizieren Programme, die in einem Shell-Fenster ausgeführt werden, mit einem virtuellen Gerät, das manchmal als Pseudotty oder Pseudoterminal (auch als Pty bezeichnet) bezeichnet wird.

Terminal

Ein Terminal ist nur ein Ort, an dem sich Computer und Mensch verbinden sollen. Terminals sind möglicherweise vollständig grafisch und folgen in keiner Weise dem tty-Modell, obwohl ein Programm möglicherweise seine Fähigkeiten nutzt, um dies zu emulieren. Alle tatsächlichen physischen Daten (Glas oder andere) sind Terminals.

Konsole

Eine Konsole ist eine spezielle Art von Terminal, das normalerweise direkt und sicher an die Hardware angeschlossen wird, auf der das Betriebssystem ausgeführt wird.

Unter Linux ist die Konsole auf kleine Weise virtualisiert, sodass Sie mit einem speziellen Tastendruck zwischen den virtuellen Konsolen wechseln können. Diese Virtualisierung wird jedoch mit einer echten Hardware durch Software im Kernel durchgeführt.

Es gibt Möglichkeiten, Linux über eine so genannte "serielle Konsole" zu verwenden. Hierbei handelt es sich um eine Konsole, die über einen seriellen Anschluss wie einen USB-Anschluss (oder bei einigen sehr kleinen und / oder sehr alten Computern über einen RS-232-Anschluss) mit dem Computer verbunden ist in irgendeiner Form) und folgt in ziemlich strenger Weise dem alten Teletypmodell.

Wieder ist die Idee, dass diese Konsole auf direkte physikalische Weise mit dem Computer verbunden ist, anstatt über eine Art Netzwerk, das es jedem ermöglichen könnte, eine Verbindung herzustellen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.