Beim ersten Kontakt mit der Shell bzw. dem Terminal haben viele Menschen erstmal keine Ahnung, was sie nun machen sollen und stellen Fragen wie:
Wofür ist das Terminal gut?
Wie benutze ich es?
Was will es von mir?
Öffnet man ein Terminalfenster, hat man meist ein schwarzes Fenster vor sich, in dem zwei Wörter stehen, z.B.:
erika@Notebook:~$
erika ist hier der Benutzername, beschreibt also den jeweils angemeldeten Nutzer. Notebook ist der Rechnername, der während der Installation vergeben wird. Diese Wörter bedeuten praktisch also: erika benutzt gerade ihr Notebook. Wenn bei der Installation andere Namen gewählt wurden, stehen hier natürlich die entsprechenden. Aber das Grundprinzip bleibt gleich und wird ab jetzt im Artikel als Beispiel genutzt:
benutzer@Rechner:~$
Unbedingt beachten: Unix/Linux und damit auch Ubuntu unterscheidet streng zwischen Groß- und Kleinschreibung. Tippfehler werden nicht verziehen!
Manchmal wird die Shell auch Eingabeaufforderung genannt, was gar nicht so falsch ist. Das Terminal ist genau genommen nur das Wirtsprogramm der Shell. Es nimmt die Eingaben des Benutzers zur Verarbeitung durch die Shell entgegen und stellt ihre Ausgaben und die von Kommandos dar. Die Shell ist ein Werkzeug, welches dem Benutzer die Möglichkeit gibt, Befehle an den Rechner zu geben. Ein einfaches Beispiel:
benutzer@Rechner:~$ ls
Der Befehl ls bedeutet, dass die Namen der im Verzeichnis vorhandenen Dateien ausgegeben werden sollen. Einfach eingeben und ⏎ drücken. Dies führt zu einer Ausgabe, z.B.
benutzer@Rechner:~$ ls Desktop roms doom3 runtime-workspace
Im Home-Ordner finden sich also vier Dateien. Die jeweilige Farbe lässt sich in der obigen Ausgabe nicht wiedergeben, sie unterscheidet aber den Ordner Desktop vom Skript doom3. Ersterer ist typischerweise blau, letzteres grün. Dies hängt von der gewählten Shell ab.
Richtig, denn im Homeverzeichnis befindet man sich normalerweise immer nach dem Öffnen des Terminals. Jeder Benutzer hat ein eigenes, privates Verzeichnis, /home/benutzer. Statt des langen Pfades kann und wird oft die Abkürzung ~ benutzt. Alle Wörter am Anfang der Zeile (auch Prompt genannt) bedeuteten also noch mehr: benutzer benutzt gerade den Rechner und befindet sich im eigenen Homeverzeichnis.
Natürlich will man sich auch andere Verzeichnisse angucken. Angenommen, der Inhalt des Ordners Desktop sei von Interesse. Also gibt man
benutzer@Rechner:~$ ls Desktop
ein und schon sieht man den Inhalt des Ordners. In einigen Ordnern liegen manchmal noch weitere Unterordner, z.B. ein Ordner Icons. Will man nun dessen Inhalt ansehen, muss man ihn einfach anfügen, mit einem / getrennt:
benutzer@Rechner:~$ ls Desktop/Icons
Oft ist es sinnvoll, Ordner zu betreten bzw. in diese zu wechseln. Dies geht genauso wie den Inhalt ausgeben, der Befehl dazu lautet cd:
benutzer@Rechner:~$ cd Desktop benutzer@Rechner:~/Desktop$
Nun befindet man sich im Verzeichnis /home/benutzer/Desktop. Will man nun den Inhalt von Icons angucken, reicht ein
benutzer@Rechner:~/Desktop$ ls Icons
Dies stellt uns vor ein Problem: Wie kommt man nun wieder an den Inhalt von /home/benutzer? Entweder wählt man den langen Weg und gibt den gesamten Pfad an:
benutzer@Rechner:~/Desktop$ cd /home/benutzer benutzer@Rechner:~$ ls Desktop roms doom3 runtime-workspace
Oder aber man nimmt die Abkürzung und geht wieder ein Verzeichnis nach oben:
benutzer@Rechner:~/Desktop$ cd ..
Die zwei Punkte .. (das Leerzeichen davor nicht vergessen!) stehen immer für das übergeordnete Verzeichnis. Zusätzlich gibt es auch noch einen Punkt ., der immer für das aktuelle Verzeichnis steht. Dazu gleich mehr... Der eleganteste Weg lautet:
benutzer@Rechner:~/Desktop$ cd $HOME
und bringt einen von jedem beliebigen Platz zurück in das eigene Homeverzeichnis. Drei Punkte gibt es nicht
Stattdessen kann man auch einfach nur
benutzer@Rechner:~/Desktop$ cd
eingeben und landet dadurch ebenfalls im Homeverzeichnis.
Nicht nur als Ersatz für einen Dateimanager ist das Terminal brauchbar, sondern auch, um unabhängig von der grafischen Oberfläche Programme starten zu können.
Als Beispiel sei hier die Bildverarbeitung GIMP genannt: um sie zu starten, genügt es, einfach den Namen ins Terminal zu tippen und mit ⏎ zu bestätigen:
benutzer@Rechner:~$ gimp
Wichtig ist dabei, dass das Programm im Pfad liegt. Im was? Im Pfad, auch PATH genannt. Es gibt eine Umgebungsvariable, in der bestimmte Ordner stehen. Wenn man jetzt einen Programmnamen eingibt, sucht die Shell automatisch in diesen Ordnern und führt das Programm aus, wenn es vorhanden ist.
Wenn ein Programm nicht im Pfad zu finden ist, dann startet es auch nicht. Solche Programme startet man zumeist, indem die Startdatei per Hand ausgeführt wird. Man bewegt sich also wie oben beschrieben mit cd in das Verzeichnis, in dem die Datei gespeichert ist und startet diese dann mit:
benutzer@Rechner:~$ ./programmname
Wie oben beschrieben, steht das ./ immer für das aktuelle Verzeichnis, es wird also nicht im Pfad gesucht. Dies betrifft insbesondere auch Programme im eigenen Homeverzeichnis. Diese können nur mit einem führenden Punkt ./ gestartet werden:
benutzer@Rechner:~$ ./mein_programm
Alternativ dazu kann man ein Programm natürlich immer auch durch den richtigen und kompletten Pfad starten:
benutzer@Rechner:~$ /pfad/zum/programm/programm_name
Bei praktisch allen Programmen, die Dateien bearbeiten oder wiedergeben, kann man diese Dateien auch gleich mit angeben. Diese Angaben nennt man dann Argument. So kann man Gimp z.B. gleich sagen, welches Bild bearbeitet werden soll:
benutzer@Rechner:~$ gimp /home/user/Bild.png
Die meisten Programme, die man über das Terminal aufgerufen hat, kann man mit der Tastenkombination Strg + C , bei aktiviertem Terminal, wieder beenden. Einige Programme, die nur im Terminal laufen, wie z.B. das Programm man zum Anzeigen der manpage (Handbuchseite) eines Befehls, werden mit der Taste Q (für Quit) beendet.
Zu beachten ist hierbei, dass keine grafischen Programme gestartet werden können, wenn der XServer nicht gestartet ist und ergo kein Fenstermanager diese Programme zeichnen könnte. In einem "reinen" Terminal (oder auch Konsole), erreichbar über die Tastenkombination Strg + Alt + F1 - F6 ist man also ausschließlich auf textbasierte Programme wie beispielsweise Nano oder mpg123 angewiesen.
Wer ein Terminalfenster aus seiner Desktop-Umgebung öffnet und dort Befehle eingibt, hat dieses Problem nicht.
Die Shell hat eine eingebaute Hilfefunktion für die von dort aufrufbaren Befehle und Programme. Dabei ist zwischen eingebauten Befehlen der Shell (Shell-Builtins) und externen Kommandos zu unterscheiden. Um bei den oben verwendeten Beispielen zu bleiben:
help cd
cd: cd [-L|-P] [dir] Wechselt das Arbeitsverzeichnis. Wechselt das aktuelle Abeitsverzeichnis zu DIR. Ohne Angabe eines Verzeichnisses wird in das Heimatverzeichnis gewechselt. Die Variable CDPATH enthält den Suchpfad für das in DIR spezifizierte Verzeichnis. Die Pfadnamen werden durch Doppelpunkte (:) getrennt. Ein leerer Pfadname bezeichnet das aktuelle Verzeichnis. Wenn DIR mit einem Schrägsrtich (/) beginnt, wird der CDPATH nicht durchsucht. Wenn kein entsprechendes Verzeichnis gefunden wurde und die Shell Option `cdable_vars' gesetzt ist, dann wird angenommen, dass DIR einen Variablennamen enthält. Wenn dann noch diese Variable ein Wert besitzt, wird dieser als Inhalt von DIR verwendet. Optionen: -L Erzwingt das Folgen symbolischer Verweise. -P Symbolische Verweise werden ignoriert. Standardmäßig wird symbolischen Verweisen gefolgt. Rückgabewert: Wenn das Verzeichnic gewechselt wurde 0; sonst ungleich Null.
gimp -h # bzw. gimp --help
(gimp:5178): GLib-WARNING **: /tmp/buildd/glib2.0-2.28.6/./glib/goption.c:2132: ignoring no-arg, optional-arg or filename flags (8) on option of type 0 Aufruf: gimp [OPTION …] [DATEI|URI...] GNU Image Manipulation Program Hilfeoptionen: -h, --help Hilfeoptionen anzeigen --help-all Alle Hilfeoptionen anzeigen --help-gegl Show GEGL Options --help-gtk GTK+-Optionen anzeigen Anwendungsoptionen: -v, --version Versionsinformationen anzeigen und Programm beenden --license Lizenzinformationen anzeigen und Programm beenden --verbose Ausführlicher verhalten -n, --new-instance Eine neue GIMP-Instanz starten -a, --as-new Bilder als neu öffnen -i, --no-interface Ohne Benutzeroberfläche starten -d, --no-data Keine Pinsel, Muster, Farbverläufe usw. laden -f, --no-fonts Keine Schriften laden -s, --no-splash Kein Startfenster anzeigen --no-shm Keinen gemeinsam genutzten Speicher zwischen GIMP und den Modulen verwenden --no-cpu-accel Keine speziellen Prozessorbeschleunigungen verwenden --session=<name> Ein alternatives Sitzungsprofil verwenden -g, --gimprc=<filename> Ein alternatives Benutzerprofil verwenden --system-gimprc=<filename> Ein alternatives Systemprofil verwenden -b, --batch=<command> Auszuführender Stapelbefehl (kann mehrfach verwendet werden) --batch-interpreter=<proc> Die Prozedur zum Abarbeiten von Befehlsabfolgen -c, --console-messages Warnungen auf der Kommandozeile anstatt in einem Dialogfensters ausgeben --pdb-compat-mode=<mode> PDB-Kompatibilitätsmodus (off|on|warn) --stack-trace-mode=<mode> Fehlersuche beim Absturz (never|query|always) --debug-handlers Aktiviert Fehlersuchroutinen für nicht-schwerwiegende Signale --g-fatal-warnings Alle Warnungen als kritisch einstufen --dump-gimprc Eine gimprc-Datei mit den Standardeinstellungen ausgeben --display=ANZEIGE X-Anzeige, die verwendet werden soll
Im Zweifelsfalle bitte die verschiedenen Hilfeoptionen durchprobieren.
Außerdem existieren für die meisten Kommandos noch die sogenannten Manpages, auch Handbücher für die Kommandozeile genannt. "man" steht für Manual (Anleitung). Manpages sind meistens ausführlicher als die obigen Hilfetexte.
Die Syntax des Aufrufes lautet allgemein:
man [Option] [Thema] # Optionen müssen NICHT immer übergeben werden!
oder praktisch:
man name_des_programms # z.B.: man gimp
Beendet wird die Anzeige der Manpage mit der Taste Q (für Quit).
Eine Liste der eingebauten Shell-Befehle erhält man durch den Aufruf von entweder:
man builtins
oder aber:
info builtins
Aber nun genug mit trockener Theorie. Warum schwärmen Fortgeschrittene und Profis immer wieder von der Kommandozeile, deren Vorzüge dem Nichteingeweihten oft verborgen bleibt? Daher noch ein kleines Bonbon bzw. eine Aufgabe zum Abschluß: starte mit 1 Minute Vorbereitungszeit einen eigenen kleinen Webserver. Keine Ahnung? – zur Lösung.
Vielleicht lässt sich jetzt erahnen, welches Potential die Nutzung der Kommandozeile bietet. Falls ja, dann weiter im Text. Ansonsten auch egal – früher oder später holt das Thema sowieso jeden Linux-Nutzer ein, ob man will oder nicht ...
Prima, aber dieser Artikel sollte nur als kleiner Einstieg dienen. Um weitere Aufgaben mit dem Terminal zu lösen, braucht man noch weitere Befehle, die man in der Befehlsübersicht samt Erklärungen findet. Dabei aber niemals vergessen: Rom wurde auch nicht an einem Tag erbaut. Die Kommandozeile braucht ihre Zeit...
Und nicht vergessen: die Komfortfunktionen im Bash-Artikel anschauen, so spart z.B. die Autovervollständigung per Tab ⇆ Zeit und Nerven.
Diese Revision wurde am 19. April 2015 12:39 von aasche erstellt.