Shell, Bash, Terminal, Konsole? Was hat es damit auf sich?
Bevor es grafische Oberflächen gab, wurden Betriebssysteme über Terminals bedient. Wer sich noch an 10 kg schwere Displays mit grüner oder bernsteinfarbener Ausgabe erinnert, kennt das. Auch heutzutage ist ein Terminal unter Linux eine alternative Methode, Rechner zu bedienen, aber nicht mehr zwingend notwendig. Es gibt heute kaum noch Situationen, in denen man um ein Terminal nicht herum kommt.
Übersicht
NIXDORF Computer 8810/25 mit Bernstein Monitor. CC BY_SA 4.0 by Andreas Franzkowiak
Die Shell
Begriffe wie Shell, Terminal oder Konsole werden oft synonym genutzt, was zu einer gewissen Begiffsverwirrung führt. Wir werden in diesem Artikel versuchen, die Grundbegriffe und ihren Zusammenhang zu entwirren und eine kurze Einführung in die Bedienung geben.
Wie stehen Shell, Terminal und Terminal-Emulator zueinander?
In der Informatik ist eine Shell eine Software, mittels derer ein Benutzer mit einem Betriebssystem interagiert. Sie ist ein Befehlszeileninterpreter, mit dem Sie über Textbefehle mit dem Betriebssystem interagieren können. Sie nimmt Ihre Eingaben entgegen, verarbeitet sie und kommuniziert mit dem Linux-Kernel, um die gewünschten Aktionen auszuführen. Schließlich gibt sie eine Ausgabe aus. Linux kennt verschiedene Shells wie unter anderem Bash, Dash, Fish oder Z Shell. Distributionen kommen mit einer Standard-Shell, meist Bash, der Anwender kann aber zu anderen Shells wechseln. Diese arbeiten grundlegend gleich, unterscheiden sich jedoch leicht in ihrer Herangehensweise und den gebotenen Funktionen.
Die Shells respektive ihre Kommandozeilen-Schnittstellen in einer grafischen Umgebung dienen zur Ausführung von Skripten und Befehlen, die Aktionen auf dem jeweiligen Rechner oder per SSH auf entfernten Rechnern ausführen. Shells bringen dazu bereits eine große Anzahl eingebauter Befehle mit.
Ein Terminal, ist, einfach ausgedrückt, das Fenster der Shell. Hier geben Sie die zu bearbeitenden Kommandos ein. Synonym werden auch die Begriffe Konsole, Kommandozeile oder CLI (Command Line Interface) verwendet. Der Wildwuchs an Begriffen ist historisch gewachsen und wir müssen leider damit leben. aber wenn man die Begriffe kennt, ist es halb so wild und nichts, wovor man sich fürchten sollte.
Terminal-Emulatoren
Ein Terminal läuft unterhalb der grafischen Ebene. Um in der grafischen Ebene - in unserem Fall KDE Plasma - Zugriff auf ein textbasiertes Terminal zu haben, gibt es verschiedene Terminal-Emulatoren. Ein standardmäßig bei allen Distributionen, die X11 verwenden, ausgelieferter Terminal-Emulator ist xterm . Die einzelnen Desktop-Umgebungen bringen eigene angepasste Emulatoren mit wie GNOME-Terminal, XFCE-Terminal oder MATE Terminal mit. Auch Windows hat mit cmd.exe einen Terminal-Emulator. Bei KDE Plasma und somit in TUXEDO OS hört der Emulator auf den Namen Konsole .
Wissen Sie den Namen der zu startenden Anwendung, geben Sie die ersten Buchstaben im Hauptmenü ein und klicken dann auf die angezeigte Anwendung
Sie finden ihn im Hauptmenü, indem Sie einfach die ersten zwei oder drei Buchstaben eingeben und dann auf Konsole klicken. Alternativ nutzen Sie die Tastatur mit STRG +ALT +T . Sie können aber auch das Ausklapp-Terminal Yakuake installieren, das per Tastenkombination (standardmäßig F12 ) vom oberen Bildschirmrand ausklappt. Sollten Ihnen die Farbgebung, die Schriftgröße oder andere Voreinstellungen bei Konsole oder Yakuake nicht gefallen, so ändern Sie diese nach einem Rechtsklick per Aktuelles Profil bearbeiten. Bei Bedarf können Sie auch mehrere Profile mit unterschiedlichen Konfigurationen erstellen.
Die Praxis
Nachdem die Begrifflichkeiten und deren Zusammenhänge hoffentlich ausreichend geklärt sind, erklären wir einige der wichtigsten Regeln und Befehle in der Konsole, die aber auch für andere Terminal-Emulatoren gelten. Zunächst einmal ist es wichtig, zu wissen, wo man sich im Dateisystem befindet. Das erste, was in der Konsole zu sehen ist, ist der sogenannte Prompt.
Der Prompt
Einfach ausgedrückt, ist der Prompt ein Eingabefeld im Terminal-Emulator, über das Sie Befehle ein- und ausgeben können. Die Eingabeaufforderung liefert dem Benutzer zudem einige nützliche Informationen
Der Prompt zeigt User- und Hostnamen an
Der Prompt kann bei Ihnen anders aussehen, Sie können ihn auch individuell gestallten. Er zeigt jedoch immer einige grundlegende Informationen an. So zeigt er zunächst den Namen des eingeloggten Users und den Hostnamen der Installation im Format user@hostname an. Nach dem Doppelpunkt folgt ein wellenförmiges Zeichen, die Tilde. Sie repräsentiert, wo Sie sich gerade im Dateisystem befinden. Die Tilde steht immer für das Home-Verzeichnis des angemeldeten Users und stellt immer den Ausgangspunkt dar. In unserem Fall ist das ft@tuxencrypt , wobei letzteres der von uns bei der Installation gewählte Hostname ist. Das bedeutet, der User ft befindet sich in seinem Home-Verzeichnis.
Um das zu verdeutlichen, wenden wir gleich einen ersten Befehl an. Tippen Sie den Befehl pwd , der für print working directory steht, ein und drücken Enter , so gibt Ihnen die Konsole Ihren Aufenthaltsort im Dateisystem zurück.
pwd weiß immer, wo Sie sind
Hinweis: In der Shell gibt es üblicherweise keine gesonderte Bestätigung für die erfolgreiche Ausführung eines Befehls. Wenn nach der Abarbeitung eines Befehls der Prompt wieder erscheint, war der Befehl erfolgreich. War das nicht der Fall, erhalten Sie eine Fehlermeldung. Das ist etwa dann nützlich, wenn eine aus dem Menü gestartete Anwendung nicht erwartungsgemäß funktioniert. Das Starten einer solchen Anwendung in der Konsole durch Eingabe des Programmnamens gibt meist eine erklärende Fehlermeldung aus.
Konnte ein Befehl nicht erfolgreich ausgeführt werden, erscheint eine Fehlermeldung
Ausgeführte Befehle wirken sich immer auf den jeweiligen Aufenthaltsort im Dateisystem oder den mit dem Befehl eingegebenen Pfad aus. Dazu später mehr. Es ist deshalb immer wichtig, zu wissen, wo Sie sich gerade befinden. Auch in einem grafischen Dateimanager muss man im richtigen Ordner sein, um Dateien zu bearbeiten. Erfahrungsgemäß ist es wichtig, dieses Prinzip gedanklich auf die Konsole umzusetzen, bevor man erfolgreich damit arbeiten kann.
Ordneransicht im Dateimanager und in der Konsole
Hinweis: Ist die Konsole wegen zu viel Inhalt unübersichtlich, leeren Sie sie mit STRG +L oder dem Befehl clear . Die vorherigen Inhalte sind bei Verwendung von STRG +L nicht verloren, sondern lediglich nicht sichtbar. Wenn Sie nach oben scrollen, erscheinen sie wieder. Verwenden Sie allerdings clear , werden Sie gelöscht.
Root - der SuperUser
Sie haben soeben gelernt, dass Sie sich als angemeldeter User eingangs immer in ihrem persönlichen Home-Verzeichnis befinden.
Bevor wir weiter ins Dateisystem abtauchen, noch ein wichtiger Punkt: Die Dateien in Ihrem Home gehören standardmäßig dem jeweils angemeldeten User. Sie können sie lesen und schreiben. Der Rest des Dateibaums gehört Root, dem Superuser-Konto in Unix und Linux.
Das ist ein Benutzerkonto für Verwaltungszwecke und hat restriktivere Zugriffsrechte. Nehmen wir an, Sie möchten sich anschauen, welche Dateien und Verzeichnisse sich in /etc/ befinden. Das können Sie ohne Rootrechte tun und sich auch Dateien anschauen. Zum Abspeichern von Änderungen benötigen Sie aber diese erweiterten Rechte.
Die meisten Linux-Distributionen nutzen den Befehl sudo , um dem User zeitweise Rootrechte zu verleihen. Dazu wird einem Befehl sudo vorangestellt, worauf das Root-Passwort abgefragt wird. Ein Beispiel ist das Aktualisieren der Repositories mittels sudo apt update .
Sudo verleiht Rootrechte auf Zeit zur Ausführung von administrativen Befehlen
Häufig benötigte Befehle
Angenommen, Sie möchten sich anschauen, welche Dateien sich im Verzeichnis /etc/ befinden, so gibt es zwei Wege dorthin, die hier exemplarisch zeigen, wie Sie Befehle an der richtigen Stelle absetzen. Zunächst der etwas aufwendigere Weg über den Befehl cd (change directory). Dazu geben Sie dem Befehl cd den Ordner mit, zu dem Sie wechseln möchten, wie in unserem Beispiel cd /etc . Wenn Sie jetzt nochmals pwd aufrufen, zeigt der Prompt, dass Sie in das Verzeichnis /etc gewechselt sind.
Mit dem Befehl cd wechseln Sie in Verzeichnisbaum auf und ab. Die Eingabe von pwd bestätigt das
Hinweis: Sie können mit dem Befehl cd nicht nur vorwärts, sondern auch rückwärts im Dateibaum navigieren. Mit cd .. bewegen Sie sich eine Ebene nach oben, cd ohne Option bringt Sie immer zurück in Ihr Home .
Sie haben dem Befehl cd den Pfad zu einem anderen Verzeichnis mitgegeben. In unserem Fall ist der Pfad einfach und kurz, kann aber auch Unterverzeichnisse beinhalten, wie etwa in cd /etc/apt/sources.list.d.
Hinweis:Der Schrägstrich (Slash) in Linux ist das Pfad-Trennzeichen. Steht ein Slash alleine, symbolisiert das den Pfad zum Root-Verzeichnis, der sogenannten Wurzel des Dateisystems. Der Befehl
cd / bringt Sie genau dorthin. Die Verzeichnisse darin werden im
Filesystem Hierarchy Standard definiert, an den sich die meisten Distributionen halten.
cd / bringt Sie ins Root-Verzeichnis. Mit ls sehen Sie die zu Root gehörigen Verzeichnisse
Hinweis: Im Dateisystem befinden sich Dateien, die auch in der Grundeinstellung des grafischen Modus unsichtbar bleiben. Dabei handelt es sich um versteckte Konfigurationsdateien, deren Ansicht Sie freischalten können und die dann mit einem Punkt vor dem Dateinamen erscheinen.
Aber zunächst weiter in unserem Beispiel: Sie befinden sich also nun im Verzeichnis /etc/ und möchten dessen Inhalt betrachten. Da Sie sich bereits in dem Verzeichnis befinden, reicht der Befehl ls (list). Dieser listet die Verzeichnisse und Dateien ohne weitere Information in unterschiedlichen Farben auf. Ausführlicher wird die Ausgabe durch die Verwendung von Optionen, indem Sie ls -l eingeben. Möchten Sie auch die versteckten Dateien anzeigen lassen, kommt die Option -a hinzu. Die Befehle lauten dann entweder ls -a oder ausführlicher ls -la:
Die Option -l steht für long und zeigt mehr Details, mit ls -la sehen Sie auch versteckte Dateien
Die detaillierte Ausgabe zeigt die Berechtigungen, den Besitzer in Form von User und Gruppe, die Größe und das Erstellungsdatum eines Verzeichnisses oder einer Datei.
Hinweis: Alle Befehle verfügen über eine Handbuchdatei, die sogenannte Manpage, die mit man Befehl aufgerufen wird. Diese Dateien sind für Einsteiger nicht immer leicht zu erfassen und nicht immer auf Deutsch verfügbar. Oftmals ist es zielführender, in der Suche im Browser oder in einer KI wie ChatGPT umgangssprachlich eine Frage wie etwa Was macht der Befehl ls in Linux? zu stellen. Einen ersten Überblick zu den Optionen von Befehlen zeigt auch der Parameter Befehl –help , allerdings meist weniger ausführlich als man .
Der Help-Befehl reicht meist aus, einen Befehl und seine Optionen kennenzulernen
Der direkte Weg
Es gibt aber auch einen einfacheren Weg zur Anzeige des Inhalts, der ohne vorherigen Wechsel des Verzeichnisses auskommt. Hierbei geben Sie dem Befehl direkt den Pfad mit, auf den sich der Befehl auswirken soll. Sie können also von Ihrem Home aus dasselbe erreichen, indem Sie ls -l /etc verwenden. Damit drücken Sie aus, dass Sie eine Auflistung des Inhalts von /etc sehen möchten.
Als nächstes möchten Sie vielleicht den Inhalt einer der dort angezeigten Dateien anschauen. Dazu können Sie den Befehl cat (concatenate) verwenden wie in cat /etc/apt/sources.list.d/tuxedo-plasma.list . Befinden Sie sich bereits in /etc so lautet der Befehl cat apt/sources.list.d/tuxedo-plasma.list . Da Sie hier nur etwas anschauen, reichen Ihre Userrechte dazu aus, obwohl die Inhalte nicht ihrem User, sondern Root gehören.
Anders, wenn Sie eine Datei editieren möchten, das gelingt vereinfacht ausgedrückt überall außer im Home nur mit Rootrechten. Nehmen wir an, Sie möchten die Datei tuxedo-computers.list ändern. Dazu nutzen wir den Nano-Editor mit SuperUser-Rechten wie in sudo nano /etc/apt/sources.list.d/tuxedo-computers.list . Damit öffnen Sie die Datei im Schreibmodus und können Sie gegebenfalls editieren. Vorgenommene Änderungen speichern Sie mit STRG +O und schließen Nano anschließend mit STRG +X .
Starten Sie Nano mit Sudo, wenn Sie eine Datei bearbeiten möchten
Hinweis: Eine nützliche Funktion der Shell ist die Autovervollständigung für Befehle. Damit lassen sich auch lange Pfade schnell eingeben. Dazu geben sie beispielsweise /etc/apt/so ein und drücken die Tabulatortaste. Damit wird so zu sources.list vervollständigt. So verfahren Sie, bis der gewünschte Pfad eingetragen ist.
Zu den häufig verwendeten Befehlen zählen die zum Dateien und Verzeichnisse erstellen, kopieren, umbenennen und löschen. Verwenden Sie Befehle wie mkdir (Verzeichnis erstellen), cp (kopieren), mv (umbenennen oder verschieben) und rm (löschen). Lässt sich etwa ein Zip-Archiv nicht entpacken, so hilft der Befehl file Dateiname zu klären, ob es sich wirklich um den angegebenen Dateityp handelt oder ob Ihnen da jemand etwas unterschieben möchte.
Mit den Pfeiltasten nach oben und unten können Sie aus der Befehlshistorie heraus auf früher eingegeben Befehle zugreifen. Drücken Sie die Eingabetaste, um einen Befehl aus der Historie erneut auszuführen.
Sie können auch mehrere Befehle kombinieren . Die Zeichen zwischen den Befehlen bestimmen, wie die Ausführung gehandhabt wird. Bei sudo apt update ; sudo apt upgrade bedingt das Semikolon, dass beide Befehle bedingungslos nacheinander ausgeführt werden, auch wenn der erste Befehl scheitern sollte. Dagegen wird bei sudo apt update && sudo apt upgrade der zweite Befehl nur ausgeführt, wenn der erste erfolgreich beendet wurde. Umgekehrt führt mount /cdrom || eject /cdrom den zweiten Befehl nur aus, wenn der erste scheitert.
Wenn Sie sich im Unklaren sind, was ein Befehl genau tut, den Sie etwa im Internet gefunden haben, so lassen Sie bitte Vorsicht walten, besonders, wenn er Rootrechte benötigt. Die Webseite Explainshell zerlegt Befehle in ihre Einzelteile und erklärt sie.
Hier zerlegt Explainshell den Befehl zum Extrahieren eines Archivs
Einen guten Einstieg, um weitere Befehle kennenzulernen, bietet die Befehlsübersicht des Ubuntu Wiki . Ein Klick auf die einzelnen Befehle führt zu einer detaillierten Erklärung, wozu ein Befehl dient und welche Optionen er bietet.
Warum überhaupt die Konsole verwenden?
Darauf gibt es mehrere gültige Antworten, die auf jeweils verschiedene Anwendergruppen zutreffen. Wenn Sie der Typ sind, der sich in der grafischen Umgebung am wohlsten fühlt und überwiegend mit Maus oder Touchpad arbeiten möchte, so gibt es dennoch Situationen, in denen die Konsole hilfreich ist. So zum Beispiel, wenn etwas nicht funktioniert, wie es soll, und Sie die Logs mittels des Befehls journalctl auslesen können. Eine ausführliche Erklärung dieses mächtigen Befehls finden Sie in dem Artikel Gut gesiebt im Magazin LinuxUser. Unsere Erfahrung lehrt zudem, dass Aktualisierungen des Systems im Terminal informativer abgebildet und somit sicherer auszuführen sind als in grafischen Anwendungen.
Gehören Sie jedoch zu den Anwendern, die von grafischen Anwendungen generell genervt sind und sich nicht als Mausschubser identifizieren können, Sie grafische Anwendungen langsam und unübersichtlich finden, dann sollten Sie vermutlich tiefer in die Themen Shell und Konsole eintauchen. Wenn Sie sich auf die Konsole einlassen, wird mit der Zeit ein Arbeitsfluss entstehen, der vermutlich beide Paradigmen der Bedienung vereint. Vorteile der Konsole sind ein schnellerer Arbeitsfluss, bessere Fehlermeldungen und resultierend ein tieferes Verständnis von Linux allgemein.
Die früher oft zu hörende Kritik, Linux sei rückwärtsgewandt und kompliziert, da die Verwendung der Shell obligatorisch sei, trifft heute nicht mehr zu, falls sie es in den vergangenen zehn Jahren überhaupt noch tat. Sie können heute TUXEDO OS durchgängig ohne Shell benutzen, es ist allerdings nicht immer der beste Weg. Die Entscheidung liegt natürlich ganz bei Ihnen.
Ergänzend zu diesem Artikel bietet sich die YouTube-Reihe Linux Terminal für Einsteiger von Josef Moser an.