staging.inyokaproject.org

Einführung

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/terminal.png Beim ersten Kontakt mit der Shell bzw. dem Terminal haben viele Menschen erstmal keine Ahnung, was sie nun machen sollen und stellen Fragen wie:

Der Beginn: der Prompt

Ö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:~$ 

Und nun? Befehle eingeben!

Hinweis:

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.

Moment: Home-Ordner?

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.

Die Navigation

Anzeige: vom eigenen Standpunkt aus

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 

Verzeichnis wechseln

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 

Anzeige: von überall

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.

Programme starten

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.

Allgemeiner Start

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 

Übergabe eines Argumentes

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 

Programme im Terminal beenden

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.

Achtung!

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.

Hilfe zu Befehlen und Programmen

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 

Ein Beispiel

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 ...

Das Ende: geschafft?!

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 4. November 2018 01:18 von Benno-007 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell, Einsteiger