decocode decocode deco    

Linux über das Terminal steuern #

(Gnome-Terminal 3.18.3 mit GNU Bash 4.3 unter Linux Mint 18) symbol: image

Übersicht
cd In ein anderes Verzeichnis wechseln
ls Verzeichnisinhalt anzeigen
mkdir Verzeichnis anlegen
ln Verknüpfung erstellen
touch Datei anlegen
mv Datei/Verzeichnis umbenennen/verschieben
cp Datei/Verzeichnis kopieren
rm Datei oder Verzeichnis löschen
rmdir Leeres Verzeichnis löschen
Links

Das Terminal (auch Konsole, Shell, Kommandozeile, Command Line Interface oder kurz CLI genannt) ist eine textbasierte Schnittstelle zwischen Benutzer und Betriebssystem. Über das Terminal kann der Benutzer mithilfe von Befehlen und optionalen Parametern direkt mit dem Betriebssystem kommunizieren oder kleine Programme ausführen.

Unter Linux Mint findet man das Terminal unter
✸ Menu ► System ► Terminal.

Während der durchschnittliche Anwender in der Regel für die Bewältigung von Aufgaben Programme mit grafischer Oberfläche verwendet, können bestimmte Vorgänge unter Umständen schneller oder ausführlicher über das Terminal erledigt werden, da man über sie vollkommenen Zugriff auf das Betriebssystem hat. Programme mit grafischer Oberfläche übersetzen die Klicks und Eingaben des Benutzers eines Programmes ohnehin häufig lediglich in die Befehle der Kommandozeile. Die grafische Oberfläche dient der Benutzerfreundlichkeit, kann aber die Möglichkeiten eines Dienstprogramms einschränken. Anweisungen über das Terminal werden dagegen von Anfängern häufig als zu kompliziert und umständlich betrachtet.

In der Tat setzt die Verwendung des Terminals einiges an speziellem Wissen über die vielen möglichen Befehle und Parameter voraus. Einige häufige und nützliche Befehle sollen daher hier als Beispiel beschrieben werden. Der unter Ubuntu verwendete Kommandozeileninterpreter heißt Bash (›Bourne Again Shell‹).

Beim Start des Terminals erscheint zunächst die Eingabeaufforderung (prompt) mit einer Kennzeichnung nach dem Schema

benutzer@rechner ~ $

Auf den Rechnernamen folgt die Angabe des aktuellen Verzeichnisses, in dem ein Befehl ausgeführt wird. In diesem Fall ist es das Home-Verzeichnis des Benutzers, das durch die Tilde ~ repräsentiert wird. Das $-Zeichen danach zeigt an, dass der Benutzer als normaler Nutzer ohne Root-Rechte angemeldet ist. Dahinter blinkt der Cursor, der uns damit mitteilen will, dass das Terminal auf eine Eingabe wartet. Um den genauen Pfad des aktuellen Verzeichnisses anzeigen zu lassen, gibt man den Befehl pwd (print working directory = Arbeitsverzeichnis anzeigen) ein und bestätigt mit der Eingabe-Taste.

Wer eine Maus mit Mausrad oder mittlerer Maustaste verwendet, kann die Befehle auf diesen Seiten einfach markieren und im Terminal durch einen Klick auf das Mausrad bzw. die mittlere Maustaste direkt dort einfügen.

Pfade und Dateinamen müssen nicht ausgeschrieben werden. Die Bash erkennt vorhandene Namen und ergänzt begonnene Eingaben durch Druck auf die Tab ↹-Taste. Beginnen mehrere Namen in einem Verzeichnis mit den gleichen Zeichen, müssen so viele Zeichen eingegeben werden, bis eine Unterscheidung eindeutig ist, bevor die Bash den Namen ergänzen kann.

Bei der Eingabe von Dateinamen wird Groß- und Kleinschreibung unterschieden. Wird dies nicht berücksichtigt, können Kommandos, die einen Dateinamen enthalten, nicht ausgeführt werden.

In der Regel können bestimmt Befehle nur auf Dateien oder innerhalb von Verzeichnissen ausgeführt werden, für die man auch Zugriffsrechte besitzt. Sollte man einen Befehl als normaler Benutzer nicht ausführen können, muss man dies als Root (d. h. als Administrator oder Super-User) vornehmen. Dazu setzt man vor den Befehl die Zeichenfolge sudo. Bei solchen Befehlen wird man vor dem Ausführen nach dem Root-Passwort gefragt. Programme mit grafischer Oberfläche startet man als Root dagegen mit gksudo.

Beispiele:
sudo apt-get clean
gksudo caja

Der zweite Befehl bewirkt das Öffnen des Dateimanagers mit Rootrechten, wodurch dort z. B. die Dateien außerhalb des persönlichen Home-Verzeichnisses bearbeitet bzw. ausgeführt werden können, was als normaler Benutzer nicht möglich ist.

Um dauerhaft als Root zu arbeiten, meldet man sich mit sudo su an und gibt dann sein Passwort ein. Danach ändert sich die Eingabeaufforderung in rechner verzeichnis #.

Weitere Infos zu sudo: UbuntuUsers-Wiki

Falls man erfahren möchte, unter welchem Benutzerkonto man gerade arbeitet, kann man sich den Namen mit whoami (who am I = wer bin ich) anzeigen lassen. Allerdings steht der Benutzername auch immer ganz am Anfang der Eingabeaufforderung.

Eine wirklich große Hilfe beim Umgang mit dem Terminal sind die so genannten Manpages (manual pages), in denen die Funktion der kryptischen Kommandos zusammen mit den möglichen Optionen beschrieben wird. Eine zentrale Sammlung von Manpages findet man beispielsweise bei http://manpages.debian.org/. Hier kann auch die deutsche Sprache für die Ausgabe gewählt werden.

Mit dem Befehl man <Befehl> kann man die Manpage zu einem bestimmten Befehl aber auch direkt im Terminal anzeigen lassen. Benötigt man zum Beispiel die Manpage von apt-get, so ruft man man apt-get auf.

In ein anderes Verzeichnis wechseln (cd) #

Ein einfacher Befehl lautet cd (change directory) gefolgt von dem Verzeichnisnamen oder besonderen Zeichen.

Beispiel:
cd Arbeitsfläche (und mit der Eingabe-Taste bestätigen)

Nun lautet die Angabe an der Eingabeaufforderung benutzer@rechner ~/Arbeitsfläche $. Um nun wieder eine Verzeichnisebene zurückzugehen, lautet der Befehl

cd ..

Die Zeichen .. stehen hier für ›das Verzeichnis eine Ebene höher‹. Es ist auch möglich, einen ganzen Pfad als Ziel anzugeben:

Beispiel:
cd ../../foo/bar oder auch
cd ../../foo/bar/

Der Befehl cd ohne Pfadangabe führt einen immer wieder zurück zum Home-Verzeichnis.

Um von einem beliebigen Ort in das Wurzelverzeichnis zu wechseln, gibt man cd / ein. Ebenso kann man direkt in ein Verzeichnis unterhalb des Wurzelverzeichnisses wechseln, z. B. cd /usr/bin.

Sollte ein Verzeichnisname ein Leerzeichen enthalten, muss diesem ein so genanntes Escape-Zeichen (Backslash) vorangestellt werden.

Beispiel:
cd Meine\ Dateien

Verzeichnisinhalt anzeigen (ls) #

Man kann sich mit dem Befehl ls (list) den Inhalt des aktuellen oder eines anderen Verzeichnisses anzeigen lassen.

Beispiele:
ls
ls Arbeitsfläche

Gleiche Dateitypen werden mit gleicher Farbe von anderen unterschieden.

Der ls-Befehl kann durch bestimmte Parameter modifiziert werden. Welche das sind, erfährt man, indem man sich mit ls --help die Hilfe zu dem Befehl anzeigen lässt (die Hilfe wird bei den meisten Befehlen mit --help aufgerufen).
Mit ls -l (long list) kann man sich z. B. weitere Informationen zu den einzelnen Verzeichnisinhalten anzeigen lassen. Mit ls -a (all) werden auch versteckte Dateien angezeigt.
Optionen können auch kombiniert werden (z. B. ls -a -l, was gleichbedeutend ist mit ls -al).

Verzeichnis anlegen (mkdir) #

Um ein neues Verzeichnis anzulegen, verwendet man den Befehl mkdir (make directory) gefolgt von dem Namen des neuen Verzeichnisses. Existiert bereits eine Datei mit dem gleichen Namen, wird eine Fehlermeldung ausgegeben.

Beispiele:
mkdir Arbeitsfläche/test
mkdir Arbeitsfläche/Neues Verzeichnis

Das neue Verzeichnis wird mit folgenden Rechten erzeugt:
rwxr-xr-x (755)

Verknüpfung erstellen (ln) #

Eine Verknüpfung ist eine kleine Datei, die eine andere Datei oder ein Verzeichnis referenziert.

Auf Verzeichnisse können nur symbolische Verknüpfungen erzeugt werden (Symlinks). Für Dateien werden harte und symbolische Verknüpfungen unterschieden. Bei einer harten Verknüpfung existiert eine Originaldatei so lange, bis die letzte symbolische Verknüpfung und die Originaldatei gelöscht wurde. Wird der Inhalt einer harten Verknüpfung geändert, ändert sich auch der Inhalt der Originaldatei (im Gegensatz zu einer Kopie einer Datei). Wird aber eine symbolische Verknüpfung erzeugt, führt diese dagegen ins Leere, sobald die Originaldatei gelöscht wird.

Wird der Befehl ln ohne die Option -s (Symlink) ausgeführt, wird eine harte Verknüpfung erzeugt. Die Option -s erzeugt eine symbolische Verknüpfung.

Um eine Verknüpfung zu erstellen, wird der Befehl ln (link) verwendet. Auf den Befehl folgen der relative Pfad/Name des Verknüpfungsziels (von der Verknüpfungdatei aus gerechnet) und der Pfad/Name der Verknüpfungsdatei (relativ zum aktuellen Arbeitsverzeichnis). Dabei werden die Benutzerrechte der Zieldatei auf die Verknüpfungsdatei übertragen.

Beispiel:
cd (um ins Home-Verzeichnis zurückzukehren, falls notwendig)
ln -s /home ~/Arbeitsfläche/test/homedir (Verzeichnis test muss bereits existieren)

Jetzt wurde im Verzeichnis ~/Arbeitsfläche/test eine symbolische Verknüpfung mit dem Namen homedir angelegt, die auf das Verzeichnis /home verweist.

Weitere Informationen bei Wikipedia:
Harte Verknüpfung
Symbolische Verknüpfung

Datei anlegen (touch) #

Um eine Datei zu erzeugen, kann man den Befehl touch (= berühren, antasten) verwenden, der eigentlich dazu gedacht ist, den Zeitstempel einer Datei zu ändern. Existiert die angesprochene Datei aber nicht, so wird sie mit diesem Befehl erzeugt. Existiert allerdings ein Verzeichnis gleichen Namens, wird der Befehl ignoriert.

Beispiel:
touch Arbeitsfläche/test.log

Die neue Datei wird mit folgenden Rechten erzeugt:
rw-r--r-- (644)

Datei/Verzeichnis umbenennen/verschieben (mv) #

Um eine Datei oder ein Verzeichnis umzubenennen oder zu verschieben, verwendet man den Befehl mv (move). Nach dem Befehl wird der Ausgangspfad/-name und dann der Zielpfad/-name angegeben. Wird versucht, ein Verzeichnis oder eine Datei in ein anderes Verzeichnis zu verschieben, das bereits ein Unterverzeichnis oder eine Datei gleichen Namens enthält, wird eine Fehlermeldung ausgegeben.

  • Sind Ausgangs- und Zielpfad identisch und nur die Namen unterscheiden sich, wird die Datei umbenannt.
  • Sind Ausgangs- und Zielpfad verschieden und die Namen sind identisch, wird die Datei verschoben.
  • Sind Ausgangs- und Zielpfad sowie die Namen verschieden, wird die Datei verschoben und umbenannt.

Beispiel:
mv Arbeitsfläche/test Arbeitsfläche/test2

Datei/Verzeichnis kopieren (cp) #

Um eine Datei oder ein Verzeichnis zu kopieren, wird der Befehl cp (copy) verwendet. Die Wirkung der Pfadangaben entspricht weitgehend der bei dem Befehl mv, nur dass die Ausgangsdatei nicht gelöscht, sondern beibehalten wird.

  • Sind Ausgangs- und Zielpfad identisch und nur die Namen unterscheiden sich, wird im gleichen Verzeichnis eine Kopie mit neuem Namen angelegt.
  • Sind Ausgangs- und Zielpfad verschieden und die Namen sind identisch, wird eine Kopie mit gleichem Namen in einem anderen Verzeichnis angelegt.
  • Sind Ausgangs- und Zielpfad sowie die Namen verschieden, wird eine Kopie mit anderem Namen in einem anderem Verzeichnis angelegt.

Beispiel:
cp Arbeitsfläche/test.log Arbeitsfläche/test2.log

Will man ein Verzeichnis kopieren, muss man die Option -R (recursive) anhängen. Es wird nur der Inhalt des Verzeichnisses kopiert, nicht das Verzeichnis selbst, daher muss man beim Zielpfad immer den Verzeichnisnamen ebenfalls angeben.

Mit der Option -u (update) werden nur Dateien kopiert, die entweder neuer als bereits existierende sind, oder wenn in dem Zielverzeichnis eine Datei dieses Namens noch nicht existiert.

Mit der Option -p (preserve) bleiben Dateiattribute wie Änderungsdatum oder Zugriffsrechte beim kopieren erhalten.

Beispiel:
mkdir Arbeitsfläche/test2
cp -Rup Arbeitsfläche/test Arbeitsfläche/test2

Datei oder Verzeichnis löschen (rm) #

Um eine Datei zu löschen, verwendet man den Befehl rm (remove).

Beispiel:
rm Arbeitsfläche/test.log

Ein nicht leeres Verzeichnis kann einschließlich aller enthaltenen Dateien mit der Option -r (recursive) gelöscht werden.

Beispiel:
rm -r Arbeitsfläche/temp

Leeres Verzeichnis löschen (rmdir) #

Um ein leeres Verzeichnis zu löschen, verwendet man den Befehl rmdir (remove directory).

Beispiel:
rmdir Arbeitsfläche/temp