GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Terminals, Shells, Konsolen und Befehlszeilen

Wenn Sie Linux oder Unix erkunden, werden Sie vielleicht die Begriffe Terminal, Befehlszeile, Shell und Konsole hören, und Sie können zu Recht verwirrt sein, was was ist und ob sie dasselbe sind. Sie sind definitiv alle verwandt, aber es gibt Nuancen, die wichtige Auswirkungen haben. Dieser Artikel führt Sie durch die Terminologie textbasierter Linux-Schnittstellen.

Wie Computer funktionieren

Wenn ein Computer hochfährt, erkennt ein Kernel seine eigene physische Hardware und ermöglicht es jeder Komponente, miteinander zu kommunizieren. Es gibt viele verschiedene Kernel:Vor langer Zeit gab es einen Unix-Kernel, einen Sun-Kernel, einen BSD-Kernel, und später kamen der Linux-Kernel, der Hurd-Kernel, ein Mach-Kernel und ein NT-Kernel.

Und das sind nicht alle. Es gibt spezialisierte Kernel für alle Arten von Rechengeräten. Einige sind sehr einfach und andere sehr komplex, abhängig von den Anforderungen des Geräts, auf dem sie ausgeführt werden.

Die grundlegendsten Anweisungen für einen Computer halten ihn eingeschaltet. Hardwaretreiber, die vom Kernel orchestriert werden, halten die Lüfter aktiv, um eine Überhitzung zu verhindern, der Festplattenspeicher wird überwacht, der RAM-Status verwaltet, neue Geräte werden erkannt und so weiter. Sehr frühe Computer leisteten im Ruhezustand sogar noch weniger, und jedes Programm, das ein früher Computer ausführte, war im Wesentlichen sein einziger Existenzzweck, zumindest während dieses Programm (in Form von Lochkarten) ausgeführt wurde. Das Konzept, einen Hintergrundjob oder zwei Anwendungen gleichzeitig auszuführen, war unvorstellbar. Wenn Sie zwei Jobs gleichzeitig bearbeiten wollten, haben Sie sich einen zweiten Computer geholt.

Interaktive Shell

Als die Computer sich jedoch weiterentwickelten, erkannten einige Wissenschaftler, dass die Programmierung eines Computers für einen bestimmten Zweck bei jedem Hochfahren ineffizient und mit technologischen Fortschritten unterversorgt war. Also entwickelten sie etwas, das sie Shell nannten.

Es gibt verschiedene Erklärungen, warum der Begriff "Shell" gewählt wurde, aber eine glaubwürdige und befriedigende Erklärung ist, dass die Shell-Schnittstelle den Kernel genauso umgibt wie eine Nussschale eine Nuss. Die Shell ist der Teil, mit dem ein Benutzer interagiert, während die Anfragen nach Rechenleistung vom Kernel verwaltet werden.

Das Wichtigste, was man über eine Shell wissen muss, ist, dass sie ein neues Zeitalter für Computer einläutete. Die Shell verwandelte Computer von einem Haushaltsgerät in ein Elektrowerkzeug, das seine Funktion bei Bedarf ändern konnte. Computer waren interaktiv geworden. Selbst in der modernen Computertechnik ist eine Shell die niedrigste Ebene der Interaktion, die Sie mit Ihrem Computer haben können. Das macht es zum direktesten Weg, einem Computer mitzuteilen, was er als nächstes tun soll, daher ist das Erlernen der Shell eine unschätzbare Taktik für Power-User.

Die Schale ist für viele Menschen ein abstraktes Konzept. Wenn Sie an eine Shell denken, ist es hilfreich, an eine bestimmte zu denken, und es gibt eine große Auswahl. Am beliebtesten ist (GNU) Bash, aber Zsh und Fish sind beliebte Bash-Alternativen. Tcsh und Ksh sind zuverlässige alte Favoriten aus dem frühen UNIX mit strikter POSIX-Konformität. Ash und Dash zielen darauf ab, leicht und schnell zu sein, wodurch sie sich ideal für eingebettete Systeme und für minimale Umgebungen eignen. Powershell von Microsoft ist eine .NET-basierte Open-Source-Shell.

Befehlszeile

Wenn Sie auf eine Shell zugreifen, erhalten Sie eine Eingabeaufforderung. Einige Leute nennen den Shell-Prompt eine Befehlszeile, was in der Tat beschreibend ist:Ein Prompt zeigt eine Zeile an, in die Sie einen Befehl eingeben können.

Eine Eingabeaufforderung ist ein Symbol, das Sie darüber informiert, dass die Shell auf Ihre Anweisungen wartet. Ein gebräuchliches Symbol ist ein Dollarzeichen ($ ), es könnte aber auch ein Prozentzeichen sein (% ), eine spitze Klammer (> ), ein Octothorpe (# ) oder etwas ganz anderes. Das bedeutet, wenn Sie eine Shell verwenden, sieht Ihre Standardansicht in etwa so aus:


$

Der auffällige Unterschied zwischen Shells ist die Syntax. Beispielsweise legen Sie in Bash und Zsh sowie Ash und Ksh Variablen mit einer "Gleich"-Deklaration fest:

$ foo=bar
$ echo $foo
bar

In Tcsh hingegen verwenden Sie das Schlüsselwort set für Variablen:

$ set foo=bar
$ echo $foo
bar

Hilfe

Oberflächlich betrachtet ist die Shell-Oberfläche nicht gerade benutzerfreundlich. Im Gegenteil, es scheint, dass von Ihnen erwartet wird, dass Sie wissen, was mit einer Shell zu tun ist. Daran sind die meisten modernen Computeristen nicht gewöhnt, da grafische Anwendungen den Benutzern zumindest Schaltflächen und Menüs zur Verfügung stellen, die sie erkunden können, selbst wenn sie nicht genau wissen, was die Anwendung tut.

Selbst wenn ein Benutzer versteht, dass die Shell auf Eingaben wartet, liefern gebräuchliche Wörter, englische oder andere, entweder Fehler oder nicht hilfreiche Ausgaben.

Zum Beispiel, wenn Sie help eingeben An einer Bash-Eingabeaufforderung erhalten Sie eine Liste integrierter Befehle, von denen nur wenige nützliche Ergebnisse liefern oder weitere Interaktionen ermöglichen.

In diesem Sinne ist die Shell keine typische Anwendung. Es ist wirklich hauptsächlich eine Befehlszeile:eine Zeile, in die Sie Befehle eingeben können. Es ist Sache des Benutzers zu wissen, welche Befehle verfügbar sind, und es wird davon ausgegangen, dass ein Benutzer, der eine Shell öffnet, zumindest mit den rudimentärsten Befehlen vertraut gemacht wurde, damit er mehr über das System erfahren kann.

Da dies nicht immer der Fall ist, ist es auf öffentlichen Systemen sinnvoll, den meist nutzlosen Befehl help global als Alias ​​zu verwenden zu etwas Informativem wie shellp.

Konsole

Sie können auf eine Shell unter Linux oder BSD zugreifen, indem Sie überhaupt keine GUI ausführen (es bleibt also nur noch eine Shell) oder indem Sie Alt + Umschalt und eine Funktionstaste 2 bis 6 drücken. Jede Funktionstaste führt Sie zu einem bereitgestellten Bildschirm von getty (oder agetty oder etwas Ähnlichem, je nachdem, was Ihre Distribution verwendet). Der Bildschirm bietet eine Anmeldeaufforderung für eine Shell, und dieser Bildschirm wird oft salopp als Konsole bezeichnet. Genauer gesagt handelt es sich um eine getty-Sitzung oder ein emuliertes tty-Gerät.

Auf dem Mac gibt es keine Möglichkeit, die Ausführung einer GUI auf einem laufenden System abzulehnen, obwohl Sie beim Booten Snag Keys verwenden können, um in den Einzelbenutzermodus zu booten. Der Einzelbenutzermodus unter Mac OS deaktiviert viele Funktionen, einschließlich der Benutzerverwaltung, daher ist dies im Allgemeinen nicht ratsam.

Der gebräuchlichste Weg, auf eine Shell auf modernen Computern zuzugreifen, besteht darin, einen Terminalemulator zu öffnen, der eine Shell darin ausführt.

Terminal

Ein Terminal war historisch gesehen ein physisches Gerät, bevor das Konzept eines Personal Computers (PC) überhaupt existierte. Ein Terminal war ein computerähnliches Objekt, aber es war tatsächlich nur ein Bildschirm (oder manchmal nur ein Drucker!) mit einer angeschlossenen Tastatur. Ein Terminalfenster auf einem modernen Computer ist eine Emulation dieses historischen Objekts, und Sie können normalerweise jede Shell innerhalb eines Terminalemulators ausführen.

Beispielsweise können Sie auf Ihrem Linux-Desktop eine Instanz eines GNOME-Terminals ausführen, die als Fenster zu einer Bash-Shell dient, und eine andere Instanz von GNOME-Terminal, die als Fenster zu einer Tcsh-Shell dient.

Das Terminal selbst ist nur dazu da, eine laufende Shell zu beherbergen. Ein Terminal-Emulator verarbeitet keine Daten und führt keine Befehle aus, obwohl er Funktionen der Benutzeroberfläche hinzufügen kann, wie z. B. spezielle Tastaturkürzel, die Möglichkeit, Dateien per Drag-and-Drop in eine Shell zu ziehen, Farbthemen usw.

Es gibt viele Terminalemulatoren, die auf allen Plattformen verfügbar sind. Linux- und BSD-Desktops werden mit xterm ausgeliefert als Fallback und enthalten normalerweise einen modernen Emulator für den täglichen Gebrauch (wie GNOME Terminal, Konsole usw.). Mac OS wird mit einem proprietären Terminalemulator ausgeliefert, aber iTerm2 ist ein weitaus besserer Ersatz (und seine Lizenz ist GPLv2).

Für Windows ist PowerShell die Standardeinstellung, aber es gibt viele andere Open-Source-Optionen wie ConEmu und Cmder.

Mehr erfahren

Sie können mehr über Terminals und die von ihnen ausgeführten Shells erfahren, indem Sie nachlesen, wie Sie in der Shell navigieren, wie Sie Dateien in der Shell verwalten und wie Sie Ihre Shell anpassen. Wenn Sie besser lernen, indem Sie tun , dann erwägen Sie die Teilnahme an Einführungskursen von Red Hat Training.

[ Brauchen Sie Hilfe, um herauszufinden, was am Terminal tippen? Laden Sie das Cheat Sheet für Linux-Befehle herunter. ]


Linux
  1. Wie lösche ich die ersten/letzten 'n' Zeilen aus der Befehlsausgabe in der Shell?

  2. Linux-wc-Befehl

  3. 5 Möglichkeiten, UNIX-/Linux-Befehle (und Shell-Skripte) im Hintergrund auszuführen

  4. So zählen Sie die Anzahl der Zeilen in einer Datei unter Linux (wc- und nl-Befehlsbeispiele)

  5. Was ist der Unterschied zwischen &> und >&in bash?

Dmesg-Befehl unter Linux

Sysctl-Befehl unter Linux

Quellbefehl unter Linux

So sortieren Sie Dateien in Linux (GUI und Shell)

Kommando-Shell

8 Arten von Linux-Shells