Frage Was ist der Unterschied zwischen Terminal, Konsole, Shell und Befehlszeile?


Was ist der Unterschied zwischen Terminal, Konsole, Shell und Befehlszeile?


173
2017-08-04 04:35


Ursprung


(1/2) Agent Cool ist größtenteils korrekt, aber die Definition der Konsole, die er zur Verfügung stellt, ist in Anbetracht dieses Themas veraltet. Sein Link hat die richtigen Informationen, wenn Sie ihm trotzdem folgen. Lies das ganze Definition bei seinem Link. Die Konsole wird lose verwendet, um viele ähnliche Dinge zu bedeuten, aber am wichtigsten bezieht sie sich normalerweise auf die lokal verbundenen menschlichen Eingabe- und Ausgabegeräte, z. Tastatur, Display und vielleicht Maus. - 0xSheepdog
(2/2) Das klingt vielleicht pedantisch, aber als erfahrener Systemadmin werde ich es Ihnen sagen es ist nicht. Wenn ein System ein Problem hat und scheinbar komplett abgestürzt / offline / offline ist, sollten Sie das Kontrollkästchen aktivieren physische Konsole des Systems, um zu sehen, ob es noch funktioniert, aber einfach die Netzwerkkonnektivität verloren. Dieses kleine Detail könnte Sie Daten, Informationsverarbeitung usw. sparen oder kosten. Pedantisch, ja. Aber wichtig. - 0xSheepdog
@ 0xSheepdog Sie können diese Kommentare in eine vollständige Antwort (einschließlich Definitionen oder Erklärungen für die anderen Begriffe) auch als solche veröffentlicht werden. Es ist nicht schlecht für eine Frage, mehrere Antworten zu haben (außer vielleicht, wenn sie genau dieselben Informationen auf die gleiche Weise übermitteln). Ich bin mir nicht sicher, warum die wichtige Praxis, eine Maschine lokal zu überprüfen, tatsächlich darauf beruht, ihre physische Benutzerschnittstelle als Konsole zu kennen / aufzurufen, aber es gibt vielleicht ein Argument, dass dies für eine effektive Kommunikation mit Kollegen oder die Verwendung von Dokumentation wichtig ist. (Sie könnten das in Ihrer Antwort klären.) - Eliah Kagan
Aufgrund ihrer engen Beziehung (siehe alle guten Antworten) werden diese Begriffe manchmal synonym verwendet, was wahrscheinlich dazu geführt hat, dass Sie das fragen. - Mark
Sehen: Was ist der genaue Unterschied zwischen einem Terminal, einer Shell, einem Tty und einer Konsole? bei Unix & LinuxSE. - Piotr Dobrogost


Antworten:


Die kurze Antwort ist das

  • Terminal = Texteingabe / Ausgabeumgebung
  • Konsole = physikalisches Terminal
  • Shell = Befehlszeileninterpreter

Konsole und Terminal sind eng miteinander verbunden. Ursprünglich war damit ein Gerät gemeint, mit dem man mit einem Computer interagieren konnte: In den frühen Tagen von Unix bedeutete das eine FernschreiberGerät ähnlich einer Schreibmaschine, manchmal auch Fernschreiber genannt, oder "tty" in Kurzschrift. Der Name "Terminal" kam aus der elektronischen Sicht, und der Name "Konsole" aus der Sicht der Möbel. Sehr früh in der Unix-Geschichte wurden elektronische Tastaturen und Displays zur Norm für Terminals.

In der Unix-Terminologie, a Terminal ist eine besondere Art von Gerätedatei welche implementiert eine Anzahl von zusätzlichen Befehlen (ioctls) darüber hinaus lesen und schreiben. Einige Terminals werden von dem Kernel im Auftrag eines Hardwaregeräts bereitgestellt, zum Beispiel mit der Eingabe von der Tastatur und der Ausgabe zu einem Textmodusbildschirm oder mit dem Eingang und dem Ausgang, die über eine serielle Leitung übertragen werden. Andere Terminals, die manchmal als Pseudo-Terminals oder Pseudo-Tys bezeichnet werden, werden (durch eine dünne Kernel-Schicht) von Programmen bereitgestellt, die als Terminalemulatoren. Einige Arten von Terminalemulatoren umfassen:

  • GUI-Anwendungen, die in der X Fenstersystem: Xterm, Gnome Terminal, Konsole, Terminator usw.
  • Bildschirm und tmux, die eine Isolationsschicht zwischen einem Programm und einem anderen Terminal bereitstellt
  • Ssh, die ein Terminal auf einer Maschine mit Programmen auf einer anderen Maschine verbindet
  • Erwarten von, zum Schreiben von Terminal-Interaktionen

Das Wort Terminal kann auch eine traditionellere Bedeutung eines Geräts haben, durch das man mit einem Computer, typischerweise mit einer Tastatur und einem Display, interagiert. Zum Beispiel ist ein X-Terminal eine Art von Dünner Kundeein Spezialcomputer, dessen einziger Zweck es ist, eine Tastatur, ein Display, eine Maus und gelegentlich andere Peripheriegeräte für den menschlichen Gebrauch zu steuern, wobei die eigentlichen Anwendungen auf einem anderen, leistungsfähigeren Computer laufen.

EIN Konsole ist in der Regel ein Terminal im physikalischen Sinne, das per Definition der primäre Terminal direkt mit einer Maschine verbunden ist. Die Konsole erscheint dem Betriebssystem als (kernelimplementiertes) Terminal. Auf einigen Systemen, wie Linux und FreeBSD, erscheint die Konsole als mehrere Terminals (ttys) (spezielle Tastenkombinationen wechseln zwischen diesen Terminals); nur um Dinge zu verwirren, kann der Name, der jedem bestimmten Terminal 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?.


EIN Befehlszeile ist eine Schnittstelle, wo der Benutzer einen Befehl eingibt (der als eine Folge von Zeichen ausgedrückt wird - typischerweise ein Befehlsname gefolgt von einigen Parametern) und drückt die Taste Rückkehr Schlüssel zum Ausführen dieses Befehls.

EIN Schale ist die primäre Schnittstelle, die Benutzer sehen, wenn sie sich anmelden, deren Hauptzweck es ist, andere Programme zu starten. (Ich weiß nicht, ob die ursprüngliche Metapher darin besteht, dass die Shell die Home-Umgebung für den Benutzer ist oder dass die Shell das ist, auf dem andere Programme laufen.)

In Unix-Kreisen Schale hat sich darauf spezialisiert, a zu meinen Befehlszeilenshell, zentriert um die Eingabe des Namens der Anwendung, die gestartet werden soll, gefolgt von den Namen der Dateien oder anderer Objekte, auf die die Anwendung angewendet werden soll, und Drücken der Eingabetaste. Andere Arten von Umgebungen (mit der bemerkenswerten kürzlichen Ausnahme von Gnome Shell) verwenden normalerweise nicht das Wort "Shell"; zum Beispiel beinhalten Fenstersysteme "Fenstermanager" und "Desktop-Umgebungen", Keine" Schale ".

Es gibt viele verschiedene Unix-Shells. Die Standard-Shell von Ubuntu ist Bash (wie die meisten anderen Linux-Distributionen). Beliebte Alternativen sind zsh (was Macht und Anpassbarkeit betont) und Fisch (was Einfachheit betont).

Befehlszeilenshells enthalten Flusssteuerkonstrukte zum Kombinieren von Befehlen. Zusätzlich zur Eingabe von Befehlen an einer interaktiven Eingabeaufforderung können Benutzer Skripts schreiben. Die gebräuchlichsten Shells haben eine gemeinsame Syntax basierend auf der Bourne_shell. Bei der Diskussion "Shell-Programmierung"Die Shell wird fast immer als Bourne-artige Shell bezeichnet. Einige Shells, die häufig für Skripts verwendet werden, aber keine erweiterten interaktiven Funktionen aufweisen, sind z die Kornschale (ksh) und viele Asche Varianten. So ziemlich jedes Unix-ähnliche System hat eine Bourne-artige Shell installiert /bin/shnormalerweise Asche, Ksh oder Bash. Auf Ubuntu, /bin/sh ist Stricheine Aschegeschichte (gewählt, weil sie schneller ist und weniger Speicher verbraucht als bash).

In der Unix-Systemverwaltung ein Benutzer Schale ist das Programm, das bei der Anmeldung aufgerufen wird. Normale Benutzerkonten haben eine Kommandozeilen-Shell, aber Benutzer mit eingeschränktem Zugriff können a eingeschränkte Shell oder einen anderen spezifischen Befehl (z.B. für Nur-Datei-Überweisungs-Konten).


Die Arbeitsteilung zwischen dem Terminal und der Hülle ist nicht völlig offensichtlich. Hier sind ihre Hauptaufgaben.

  • Eingabe: das Terminal wandelt Schlüssel in Kontrollsequenzen um (z. Links → \e[D). Die Shell konvertiert Steuersequenzen in Befehle (z. \e[D → backward-char).
  • Zeilenausgabe, Eingabehistorie und Vervollständigung werden von der Shell bereitgestellt.
    • Das Terminal kann stattdessen seine eigene Zeilenausgabe, Historie und Vervollständigung bereitstellen und nur eine Zeile an die Shell senden, wenn sie zur Ausführung bereit ist. Das einzige gemeinsame Terminal, das auf diese Weise funktioniert, ist M-x shellin Emacs.
  • Ausgabe: Die Shell gibt Anweisungen wie "Anzeige" aus foo"," Stellen Sie die Vordergrundfarbe auf grün "," bewegen Sie den Cursor auf die nächste Zeile ", usw. Das Terminal reagiert auf diese Anweisungen.
  • Die Aufforderung ist ein reines Shell-Konzept.
  • Die Shell sieht niemals die Ausgabe der Befehle, die sie ausführt (es sei denn, sie wird umgeleitet). Die Ausgabehistorie (Scrollback) ist ein reines Terminalkonzept.
  • Inter-Anwendung Copy-Paste wird durch das Terminal (in der Regel mit der Maus oder Tastenfolgen wie Strg+Verschiebung+V oder Verschiebung+Einfügen). Die Hülle kann auch ihren eigenen internen Kopier-Einfügemechanismus haben (z.B. Meta+W und Strg+Y).
  • Jobkontrolle (Programme im Hintergrund starten und verwalten) wird meist von der Shell ausgeführt. Es ist jedoch das Terminal, das Tastenkombinationen wie behandelt Strg+C um den Vordergrund Job zu töten und Strg+Z um es auszusetzen.

 Recycelt von Unix und Linux 


120
2017-08-04 10:30



Ich würde Ihnen nicht zustimmen müssen, da Terminal eine korrekte Bezeichnung für eine Terminal-Gerätedatei und / oder den Terminal-Handling-Code im Kernel ist (tty ioctls, rohe / gekochte, grundlegende Zeilenbearbeitung). terminal = das Zeug, das die Escape-Codes verarbeitet, die Tastenbetätigungen in Zeichen umwandelt und auf einen Bildschirm zeichnet (oder auf Papier / Band druckt). Siehe meine Antwort für weitere Details. - Peter Cordes
@PeterCordes In dieser Detailebene gibt es keinen Unterschied. POSIX definiert Terminal als auch zu Endgerätim Sinne einer Gerätedatei. Das ist die Unix-Bedeutung. Es ist zufällig das Zeug, als behandelt Escape-Codes, macht Tastendrücke in Zeichen und zeichnet auf einem Bildschirm (oder überträgt über das Netzwerk oder Protokolle in eine Datei usw.). - Gilles
Hm, ja Terminal wird auch in diesem Sinne verwendet. Mit der Annahme, dass ein Terminalemulator oder ein serieller Port mit einer angeschlossenen Terminal-Appliance an einem Ende des Endgeräts vorhanden ist, das der Kernel verarbeitet. Die Kernel-tty-Behandlung (im gekochten Modus) behandelt nur ein paar Kontrollcodes (Signale auf ^ c, Zeilenbearbeitung auf ^ u / ^? (Delete). Ich versuche eine Linie zwischen dem tty-Code und dem Teil von Linux zu ziehen Das implementiert ein VT100-ähnliches Terminal auf einer Grafikkarte und einer USB / ps2 / AT-Tastatur, man kann Linux aber auch ohne tty kompilieren. - Peter Cordes
@PeterCordes In der Kernel-Konfiguration kann die Unterstützung für Terminals weggelassen werden (dies ist nützlich für einige seltene eingebettete Systeme, bei denen der Speicher extrem eng ist); es wird kontrolliert von CONFIG_TTY. Unterstützung für Terminal-Emulatoren (genauer gesagt Pseudo-Terminals genannt - "Terminal-Emulator" enthält nicht immer Telnetd, Bildschirm, erwarten, ...) wird von gesteuert CONFIG_UNIX98_PTYS. Unterstützung für PC-Text-Modus-Display und Tastatur oder dergleichen wird durch gesteuert CONFIG_VT. Sehen drivers/tty/Kconfig in der Kernel-Quelle. - Gilles
Ups, ich hatte keine aktuelle Kernelquelle herumliegen. CONFIG_TTY wurde erst im Jahr 2012 hinzugefügt. Wie auch immer, ja, hoffentlich hilft das jedem, der versucht, seinen Kopf darüber zu kreisen, was die verschiedenen Teile des Puzzles sind und wie sie zusammenpassen. - Peter Cordes


Eine visuelle Darstellung.

Terminal

enter image description here

Etwas, an dem du dich hinsetzen und wie ein Boss arbeiten kannst.

Konsole

enter image description here

Irgendeine Hardware, die eine Menge Zeug macht.

Ein anderes Beispiel für eine Konsole wäre eine Videospielkonsole wie ein Super Nintendo [wo man Actraiser spielen kann]

Schale

enter image description hereenter image description here

Im Grunde eine Anwendung zum Ausführen von Befehlen.

Befehlszeile [Schnittstelle]

enter image description hereenter image description here

Grundsätzlich Befehle, die Sie eingeben.


52
2017-08-04 20:09



Du hast meine Idee gestohlen - ich würde im Grunde die gleiche Antwort geben. So können Sie eine Verbesserung haben. Der springende Punkt ist natürlich, dass, während diese Begriffe heutzutage meistens synonym sind, Begriffe wie "Terminal" und "Konsole" ihren Ursprung in älteren Computerkonzepten haben. - thomasrutter
Guter Versuch. Simpel und einfach - A Umar Mukthar


Von dem Linux Informationsprojekt:

Terminal Technisch gesehen ist ein Terminalfenster, das auch als Terminalemulator bezeichnet wird, ein Nur-Text-Fenster in einer grafischen Benutzerschnittstelle (GUI), die eine Konsole emuliert.

In unseren Worten Eine GUI-Anwendung, von der aus wir auf eine Benutzerkonsole zugreifen können.

Konsole: ein Armaturenbrett mit den Steuerelementen für einen Computer

Schale : Eine Shell ist ein Programm, das die traditionelle Nur-Text-Benutzerschnittstelle für Linux und andere Unix-ähnliche Betriebssysteme bereitstellt

Befehlszeile : Eine Befehlszeile ist das Feld rechts von der Eingabeaufforderung in einem Nur-Text-Anzeigemodus auf einem Computerbildschirm (normalerweise ein CRT- oder LCD-Bildschirm), in dem ein Benutzer Befehle und Daten eingibt


19
2017-08-04 04:39



"Terminal" steht für einen physischen Nur-Text-Bildschirm. Was Sie sagen, ist eigentlich "Terminal-Emulator". - Registered User
@RegisteredUser Ein Terminalemulator ist eine Art Terminal. Das Wort Terminal ist nicht auf physikalische Terminals beschränkt (das übliche Wort dafür ist Konsole). - Gilles
Diese Definition von Befehlszeile ist falsch. Eine Befehlszeile ist nicht auf einen Nur-Text-Anzeigemodus beschränkt. - Gilles
@Gilles Ich habe es aus einem Web-Link gegriffen. Sie haben die richtige Antwort in Ordnung erwähnt. - Ten-Coin
@AgentCool Ich stelle deine Fähigkeit zum Kopieren-Einfügen nicht in Frage. Ich stelle deine Wahl der Quelle in Frage. Was du postest, ist deine Verantwortung, ob du es geschrieben hast oder nicht. - Gilles


Die Antworten hier scheinen sehr gut zu sein. Aber sie sind zu trocken und technisch für meinen Geschmack, also werde ich einen nehmen ..

Terminal ist das Ende von etwas - wo es endet. Wenn Sie zum Beispiel in einer Stadt die U-Bahn nehmen, ist der Bahnhof, an dem Sie absteigen, Ihr Terminal. Oder in einem Flughafen ist der Ort, an dem die Leute herauskommen, wenn sie ihr Zielland erreichen, das Terminal. Der Grund, warum das Terminal im Flughafen heutzutage sowohl der Ort ist, an dem man Leute an Bord bringt, als auch der Ort, an dem man sie aus dem Flugzeug holt, ist aus offensichtlichen wirtschaftlichen Gründen.

Der Zweck eines Computers besteht darin, Daten zu erhalten, etwas damit zu tun und das Ergebnis auszuspucken. Somit ist das Terminal jedes Gerät, von dem Sie das Ergebnis der Berechnung erhalten können. Ein Bildschirm zum Beispiel. Es kam einfach vor, dass Sie in den ersten Computern normalerweise die Eingabe (Tastatur) und Ausgabe (Bildschirm) als ein einzelnes Gerät hatten. Aus diesem Grund werden heutzutage Terminals als Eingabe- / Ausgabegeräte betrachtet. Eine Maus, Tastatur, Bildschirm, Kamera, sie sind alle Terminals.

Shellist eine OS-Sache. Auf einem Computer haben Sie den Kernel, der auf Ubuntu zum Beispiel der Linux-Teil ist. Jetzt, da der Kernel wirklich low-level ist, wird eine Shell bereitgestellt - ein Programm, mit dem der Benutzer auf einfache Weise mit dem Kernel interagieren kann. Das ist zum Beispiel BASH.

Console ist (aus einem Wörterbuch)

eine flache Oberfläche, die die Steuerungen für eine Maschine enthält, für ein Stück   von elektrischen Geräten usw.

Deshalb werden in der Musikindustrie das Board mit allen Knobs oder in einem Space Shuttle der Command Table als Konsolen betrachtet. Super Nintendo und PS2 werden auch historisch als Konsolen bezeichnet, da die ersten derartigen Unterhaltungsgeräte wie Kästchen mit einer Reihe von Tasten auf ihnen aussahen.

Command line ist nur eine Schnittstelle - das Gegenteil von GUI. Es gibt nämlich zwei Arten von Schnittstellen auf einem Computer; CLI (Befehlszeilenschnittstelle) und GUI (grafische Benutzeroberfläche). Der Hauptunterschied besteht darin, dass der erste von der Tastatur eingegeben wird, während der zweite von der Maus eingegeben wird.


14
2017-08-06 10:40



Was meinst du "das Gegenteil von GUI"? - Koray Tugay
Mit dem Gegenteil meine ich, dass Sie entweder CLI oder GUI haben. Ich habe jetzt ein bisschen mehr in der Antwort geklärt. - Pithikos


Um meine Antwort zusammenzufassen:

Schale ist ein Programm, das processes Befehle und returns Ausgabe, wie bash in Linux.

Terminal ist ein Programm, das run ein Schale In der Vergangenheit war es ein physisches Gerät (Vor Terminals waren Monitore mit Tastaturen, sie waren es Fernschreiber) und dann wurde sein Konzept in übertragen Software , mögen Gnome-Terminal .

Also öffne ich Gnome-Terminal , ein schwarzes Fenster erscheint, das läuft Schale damit ich meine Befehle ausführen kann.

Konsole ist ein spezielle Art von Terminal Es war auch ein physikalisches Gerät. Beispiel in Linux haben wir virtual console auf die ich durch Kombination zugreifen kann Strg + Alt + F1 bis F7 .

Konsole bedeutet manchmal die Tastatur und den Monitor physisch an diesen Computer angeschlossen.


7
2017-08-05 11:59





Diese Begriffe passen oft zusammen, so dass die Leute einen der Begriffe verwenden, um auf die Sammlung zu verweisen. (d. h. es ist normalerweise aus dem Kontext offensichtlich, dass sie ein Terminalfenster bedeuten, das eine Schnittstelle zu einer Befehlszeilen-Shell bereitstellt).

Damit das nicht zu langatmig wird, werde ich xterm als Stand-in für XTerm / Gnome Terminal / Konsole / mrxvt / etc / etc. sagen. Das gleiche gilt für bash.

Konsole hat mehrere andere spezifische Bedeutungen, also lassen Sie das für jetzt aus.

Terminal: Etwas, das menschliche Interaktion mit Programmen durch einen bidirektionalen Stream von ASCII / UTF8 / anderen Zeichen ermöglicht, normalerweise mit VT100 oder ähnlicher Escape-Code-Verarbeitung. (ZB Rücktaste, Löschen, Pfeiltasten, usw. generieren Escape-Codes. Programme können Escape-Codes drucken, um den Cursor um den Terminalbildschirm zu bewegen, zu fettem Text und / oder Farbe zu wechseln, den Bildschirm zu löschen oder zu scrollen, usw.) Früher war das oft eine dedizierte Appliance mit Bildschirm und Tastatur und einem seriellen Port. Jetzt ist es normalerweise ein Programm wie xterm.

Es gibt Gerätedateien für Programme zum Lesen / Schreiben von / zu Terminals, und virtuelle Terminals haben auch die andere Seite als Gerätedatei zugänglich. Hier schreibt xterm Ihre Eingabe, damit bash sie lesen kann.

Jedes Terminal, einschließlich der virtuellen Terminals, bietet eine grundlegende Zeilenbearbeitung, wenn es im gekochten (im Gegensatz zum rohen) Modus ist. Dies wird durch den Kernel-Code gehandhabt. Es ist Bash, die die Linienbearbeitung bietet, die Sie mit den Pfeiltasten ausführen können. (Versuch zu laufen cat und tippen Sie ein, wenn Sie sehen möchten, wie die grundlegende, vom Kernel bereitgestellte Zeilenbearbeitung aussieht. Backspace funktioniert, und ein paar andere Dinge nach Ihren stty Einstellungen.)

Obwohl hinter den Endgeräten viel Kernel-Code steckt, würde man ihn als Terminal-Handling-Code bezeichnen, nicht als Terminal selbst.

Edit: Gilles hat mich davon überzeugt, dass die richtige Verwendung eines Terminals als Terminal bezeichnet wird. Terminalemulatoren und interaktive Programme, die mit einem Terminal verbunden sind, hängen alle von der Semantik des Terminals ab, die vom Kernel implementiert wird. (Das meiste dieses Verhaltens ist von POSIX standardisiert und ist das gleiche unter Linux / * BSD / anderem Unix.) Ein Vollbild-Texteditor hängt vom Verhalten von Unix-tty-Stuff sowie der Cursor-Bewegung Escape-Code-Behandlung ab, und viele andere Funktionen des Terminal-Emulators.

Ein physisches VT100 mit einem Bildschirm, einer Tastatur und einem seriellen Port ist jedoch eine Instanz eines Terminals. Es erfordert keinen Unix-Kernel am anderen Ende des seriellen Ports, um vollständig zu sein. Etwas ganz anderes könnte das Senden von Escape-Codes und ASCII-Text sein und dasselbe von ihm erhalten. Es wäre nur ein VT100, kein Unix-Terminal. Ein Terminal-Emulator plus die Unix-tty-Semantik bilden das vollständige Paket eines Unix-Terminals, auf dem normalerweise ein Programm wie bash läuft.

Befehlszeile ist ein Stil der Benutzeroberfläche, wo Sie etwas eingeben, drücken Sie dann Return, um etwas passieren zu lassen. Es wird auch als Kurzform für eine Befehlszeilenshell verwendet, wie bash oder MS-DOS, aber Sie können auch sagen "es ist ein Befehlszeilenprogramm" über etwas wie fdisk. Betrachtet man nur Programme, die ein Terminal für ihre Benutzeroberfläche verwenden, sind die beiden Hauptfamilien Befehlszeilen- und Vollbildtext (z. B. ein Editor wie vi oder emacs -nw).

Befehlszeilenprogramme, die normalerweise auf Terminals ausgeführt werden, arbeiten fast immer noch mit ihrer Eingabe und Ausgabe in Dateien umgeleitet, aber terminalbasierte Vollbildprogramme wie Editoren oder E-Mail-Clients sind nur interaktiv und würden nicht funktionieren.

EIN Schale ist ein Programm zum Starten anderer Programme. In einem Unix-Kontext bedeutet es üblicherweise eine Befehlszeilenshell (d. H. Bourne-Shell oder C-Shell-Äquivalent). Unix-Shells können ihre Eingaben auch aus Dateien, z. B. Shell-Skripten, lesen. Sie sind vollständige Programmiersprachen, mit Variablen, Schleifen und Bedingungen, und viele Programme sind in bash geschrieben (oder nur mit der /bin/sh POSIX-Shell-Funktionen, für mehr Portabilität). Es ist auch leicht möglich, schnell zu schreiben for i in *.something; do some_program "$i";done  in einer interaktiven Shell.

Zusammenfassend wird eine Shell wie bash (oder was auch immer Programm, das Sie mit einem Shell - Kommando gestartet haben) Zeichen von der /dev/pts/N terminal device nach xterm schreibt Ihre Eingabe in ihre Seite des Pseudo-Terminals. Wenn du läufst cat, dann hit ^c, der Kernel tty Code wird auf der ^c und sende ein SIGINT in den Vordergrund Prozess an diesem Terminal. (Beachten Sie die Verwendung von Terminal In diesem Zusammenhang ist das Unix-tty gemeint, kein Terminal-Emulator oder etwas, das an einen seriellen Port angeschlossen ist. Dies geschieht, weil die Shell das Terminal vor jedem Programmstart in den "gekochten" Modus versetzt, was bedeutet, dass der Kernel Sequenzen. (Der tty-Code hat immer noch nichts mit der Behandlung von VT100-Escape-Codes zu tun, nur ein paar Low-ASCII-Steuercodes.) Wenn Sie anstelle eines xterm das Text-Terminal der Linux-Konsole verwenden, macht der Kernel die VT100-Emulation und mit all dem Zeug umgehen. Linux kann ohne Unterstützung für virtuelle Konsole Text-Terminals kompiliert werden, aber nicht ohne Unterstützung von tty.

Konsole wird manchmal als Synonym für Terminal verwendet (KDE hat sogar einen Terminalemulator namens Konsole).

Wie 0xSheepdog hervorhebt, hat es auch eine andere Bedeutung: lokal angeschlossene Hardware für die menschliche Interaktion.

In einem Kernel-Kontext hat die Konsole eine andere spezifische Bedeutung: Es ist das Terminal, auf dem Boot-Nachrichten geschrieben werden. Dies kann eine serielle Schnittstelle sein. Normalerweise ist es natürlich die Textkonsole, die vom Kernel über die Treiber für Grafikhardware und USB / PS2 / AT-Tastaturen implementiert wird. Wenn Sie Linux mit booten console=tty0 console=ttyS0,115200n8 In der Befehlszeile erhalten Sie Kernel-Nachrichten auf Ihrem Bildschirm UND auf der seriellen Schnittstelle.

Linux implementiert virtuelle Konsolen (/dev/tty1 zu N). Sie können wechseln, mit welcher Ihrer physischen Bildschirm / Tastatur steuern Strg+Alt+FN. Typische Linux Distributionen erstellen 6 und starten getty Wenn Sie X11 nicht starten können oder wollen, können Sie sich sechs Mal anmelden und zwischen einem Befehl, einer Manpage und allem anderen hin- und herschalten, ohne ein Programm wie den Bildschirm auszuführen. Linux (der Kernel) enthält einen Terminal-Emulator im VT100-Stil, um eine Terminal-Schnittstelle über Ihren Bildschirm und Ihre Tastatur auf den virtuellen Konsolen bereitzustellen.

Die standardmäßigen 6 virtuellen Terminals mit Anmeldeaufforderungen sind der Grund dafür Strg+Alt+F7 bringt Sie zurück zu Ihrer X11-Sitzung: Der X-Server ergreift die nächste verfügbare virtuelle Konsole. (Der X-Server öffnet sich /dev/input/... direkt, anstatt Ihre Tasten drücken von /dev/tty7obwohl.)

Also "zu einer Textkonsole wechseln" bedeutet drücken Strg+Alt+F1 und benutze dieses Terminal. Damals, als Computer langsam waren und nicht viel RAM hatten, verbrachten einige Leute viel Zeit auf den Textkonsolen, da sie schnell waren, konnten Sie eine nette Schriftart einstellen und sogar die Terminalgröße ändern, um kleinere Zeichen zu haben, aber haben mehr auf dem Bildschirm sofort. Alt+Links und Alt+Recht Wechsel zur vorherigen / nächsten Konsole. (X11 deaktiviert dies natürlich für seine Konsole und lässt nur die Strg+Alt+FN Combo.)

Damit Konsole ist der einzige dieser Begriffe, der keine eindeutige technische Bedeutung hat. Es hat ein paar verschiedene. (Abhängig davon, wie Sie sich über das Endgerät im Vergleich zu Terminal und Terminal verhalten, könnte man sagen, dass Terminal auch mehrere Bedeutungen hat.)


7
2017-08-05 09:16



Konsole was bedeutet, dass das "Haupt" physikalische Terminal nicht nur in einem Kernel-Kontext ist. Es ist das gleiche Bedeutung im /dev/console. Konsole ist nicht besonders zweideutig - obwohl es gelegentlich im allgemeineren Sinne verwendet wird Terminaldas ist ziemlich selten (seltener als Terminal verwendet werden, um spezifisch eine Konsole zu bedeuten). - Gilles
richtig, ja, echo foo | sudo tee / dev / console> / dev / null wird auf dem Bildschirm angezeigt, wenn Ihr aktuelles VT im Textmodus ist (einschließlich Framebuffer-Konsole, nicht nur wörtlich VGA-Textmodus). Wenn Sie mit der Konsole an einer seriellen Schnittstelle booten, denke ich, dass es dorthin gehen würde. Man könnte sagen, dass / dev / console die Gerätedatei für alles, was der Kernel als Systemkonsole behandelt, anbietet. Nichts anderes im System muss eine Vorstellung davon haben, dass es überhaupt ein Konsolenty gibt (außer Boot-Recovery-Sachen, die eine Shell auf dem Konsolen-TTY starten, wenn das System nicht im Multi-User-Modus startet. Gewöhnlich von initrd) - Peter Cordes
Der xorg X-Server (strings / usr / bin / Xorg) verwendet / dev / console nicht, um auf die Hardware zuzugreifen. Es verwendet / dev / tty0 und / dev / tty% d und / dev / vc /% d, um sich selbst auf VT zu setzen. Ich bin mir ziemlich sicher, dass Xorg auf einem PC, der mit der Kernel-Konsole auf einem seriellen Port gestartet wurde, immer noch gut läuft. Und dass die virtuellen Terminals im Textmodus immer noch funktionieren würden. Je mehr ich darüber nachdenke, desto mehr lehne ich die Anzeigekonsole in einem Kernel-Kontext als nur ein spezielles Terminal an, das beim Booten ausgewählt wird. (Linux kann seine Konsolnachrichten auf mehreren Terminals gleichzeitig ausgeben, wenn Sie danach fragen.) - Peter Cordes


Ich denke, dass in den frühen Tagen der Timesharing-Computer jeder Benutzer ein Terminal hatte (wenn sie einen bekommen konnten!), Aber nur die Systembetreiber hatten eine Konsole. Die Konsole könnte für Aufgaben wie das Neustarten des Computers oder das Abrufen von Systemdiagnosen verwendet werden, die von Benutzerterminals nicht möglich waren. Die Konsole befand sich im Maschinenraum, ein wesentlicher Teil des Computers, während die Terminals entfernt sein konnten. Die Konsole würde auch Hardwarelichter und -schalter enthalten, nicht nur Texteingabe und -ausgabe.

Ich würde sagen, dass die Befehlszeile ein Bereich ist, in dem ein Benutzer einen Befehl eingeben kann, während die Shell das Programm ist, das diesen Befehl interpretiert / befolgt. Der Begriff "Shell" ist sehr spezifisch für Unix-Derivate; "Kommandozeile" ist mehr in der Windows / DOS-Tradition. Das Äquivalent auf Mainframes wird üblicherweise als "Job Control Language" bezeichnet.

Diese ursprünglichen Unterscheidungen sind im Laufe der Zeit mit der technologischen Entwicklung offensichtlich verschwommen.


5
2017-08-04 22:35





Benutzerorientierte kurze Antwort versuchen:

Befehlszeile - die Zeile, in der Sie Befehle eingeben. In der Regel wurde früher angegeben, dass Sie etwas im Textmodusfenster (Befehlszeilenschnittstelle) ausführen müssen, das von Ihrem Betriebssystem bereitgestellt wird.

Schale - Das eigentliche Programm, das vom Betriebssystem ausgeführt wird, um die Daten zu verarbeiten, in die Sie eintreten command line. Daher der Name - benutzerfreundliche Shell für nicht-freundlich OS Kern. Es bietet eine Eingabeaufforderung, z $ oder >, führt eigene Befehle und Apps aus. Du arbeitest immer durch die shell programmieren und niemals direkt mit Konsole oder Terminal arbeiten.

Konsole - ist ein Fenster, in dem Ihre Textmodusprogramme ausgeführt werden. Dieses Fenster verarbeitet Tastendrücke, weiß, dass es Breite und Höhe ist. Kann Vollbild sein.

Terminal - ist ein Gerät mit Display für Menschen, das einen Eingabestrom von Zeichen akzeptiert und sie anzeigt. Es gibt keine Rückmeldung an den Benutzer über Höhe oder Breite (nur Hacks) oder Tastatur-Tastendrücke - nur Zeichen reisen zu ihm. Terminal verarbeitet spezielle Sequenzen in diesem Stream, um Dinge farbig zu machen, den Bildschirm zu bereinigen und andere unangenehme Dinge zu tun. Terminals sind flockig, weil es leicht ist, Dinge zu vermasseln, wenn die Datei, die Sie ausgeben, diese speziellen Sequenzen enthält. Sie sind in Netzwerk- und Geräte-Debug-Schnittstellen beliebt, weil Sie nur einen einzigen Stream zum Senden von Ausgaben und zum Steuern des Ausgabegeräts benötigen tap in Konversation ohne die Notwendigkeit, ein Fenster zu initialisieren oder zu erstellen.

serielle Konsole - ist eine Konsole, die den Eingangsstrom wie ein Terminal verarbeitet.


3
2017-10-24 10:42





Dies ist ein vages Thema, weil die Begriffe sehr zweideutig sind. Ich empfehle dringend, die Links, die ich in dieser Antwort angegeben habe, zu lesen, die auch meine Quellen für diese Antwort sind.

EIN Schale ist die Ebene über dem Kernel:

  • Er interpretiert die vom Benutzer eingegebenen Befehle und verarbeitet sie. Die Shell hat im Gegensatz zu Benutzern Zugriff auf den Kernel. Benutzer können nur auf den Kernel zugreifen, indem sie Befehle unter Verwendung einer Shell eingeben und Prozesse (d. H. Laufende Programme) verwenden. Programme verwenden Systemaufrufe um auf die Kernel-Funktionalität zuzugreifen. Alle Systemaufrufe bilden die System-API.
  • Beispiele für Shells sind in der zweiten Terminaldefinition angegeben.

EIN Terminal hat viele Bedeutungen:

  • (1) A Textterminal. Dies ist die Kombination eines Anzeigemonitors und einer Tastatur. Ein Kabel verbindet das Terminal mit dem Computer (oft indirekt). Es wurde Terminal genannt, da es sich am Ende dieses Kabels befand. Diese Terminals waren normalerweise physisch vom Computer getrennt, da zu der Zeit viele Terminals mit einem einzigen Mainframe / Computer verbunden waren, so dass mehrere Benutzer gleichzeitig auf den Computer zugreifen konnten.
  • (2) A Terminalfenster a.k.a. Terminal-Emulator. In Linux ist ein Terminal-Fenster die Emulation einer Konsole, die in einem GUI-Fenster enthalten ist. Es ist die CLI, in die Sie Ihren Text eingeben, und diese Eingabe wird von der Shell gelesen, die Sie verwenden. Es gibt viele Arten von Shells (z. B. bash, dash, ksh88) und Terminals (z. B. konsole, gnome).
  • (3) Für eine Erläuterung zu Pseudo-Terminals, Aussicht Dies. Es ist ein Paar von zwei Gerätedateien, die für die Kommunikation zwischen einem Prozess und einem Terminalemulator verwendet werden.

EIN Konsole hat viele Bedeutungen:

  • (1) ein Armaturenbrett, das die Steuerungen für einen Computer enthält.
  • (2) A Systemkonsole a.k.a. Computerkonsole. Dies ist die Kombination aus dem Bildschirm und einer an einen Computer angeschlossenen Tastatur. Dies ist gleichbedeutend mit dem, was wir "Textterminal" nennen. Manchmal sind auch andere Benutzereingabe-Peripheriegeräte wie eine Maus Teil einer Konsole.
  • (3) Eine Befehlszeilenschnittstelle, die den gesamten Bildschirm abdeckt. Dies steht im Gegensatz zu einem Terminal-Fenster, das eine GUI mit einem X in der rechten oberen Ecke ist, um es zu schließen. Dies sind die beiden Anzeigemodi für CLI (Befehlszeilenschnittstellen) in Unix-ähnlichen Systemen. Ähnlich wie ein Terminalfenster kann die Konsole auch viele Shells ausführen.

Häufig ermöglichen es Betriebssysteme, mehrere Konsolen auf einer physischen Konsole auszuführen (Konsolendefinition 2). Diese nennt man virtuelle Konsolen a.k.a. virtuelle Terminalsund kann durch zugegriffen werden Strg + alt + Fx Kombinationen. Wenn Sie beispielsweise die 3. virtuelle Konsole öffnen möchten, verwenden Sie die Kombination Strg + alt + F3.

Konsolen (Definition 3) erscheinen Ihnen vielleicht als Anachronismus, aber Experten sollten sich damit auskennen, da es viele Betriebssysteme gibt, die keine GUI unterstützen. Wenn eine GUI nicht mehr reagiert, funktioniert die Konsole möglicherweise weiterhin.


3
2017-12-03 05:13