UNIX Grundbefehle
aus: Wie werde ich UNIX-Guru
und: UNIX-Das umfassende Handbuch
Willemers Informatik-Ecke

Dateien anzeigen: ls

Die Aufgabe von ls ist die Anzeige von Dateinamen. Es folgen Optionen, die mit einem Bindestrich beginnen und dann die anzuzeigenden Dateien. Werden keine Angaben zu den Dateien gemacht, werden alle Dateien des aktuellen Verzeichnisses angezeigt.

Verzeichnisse anzeigen: ls -d

Wird als Parameter der Name eines Verzeichnisses genannt, zeigt ls den kompletten Inhalt des angegebenen Verzeichnisses. Dies kann leicht irritierend sein, wenn man nur nähere Informationen zu einem Verzeichnis haben wollte. Mit der Option -d (d wie directory) kann man diesen Effekt unterbinden. Dann wird nur das Verzeichnis angezeigt und nicht hineingeschaut.

Beispielsweise legen Sie ein Verzeichnis namens spielwiese (mkdir spielwiese) an und lassen es sich hinterher mit ls spielwiese anzeigen, um zu sehen, ob es noch da ist. Sie sehen - nichts. Der Grund liegt darin, dass ls spielwiese nicht selbst anzeigt, sondern seinen Inhalt. Da dieser bisher leer ist, wird die leere Liste angezeigt. Es sieht also so aus, als wäre spielwiese verschwunden. Mit ls -ld spielwiese kann man sie wiederum sehen.

ls -l zeigt Langform

Einige Optionen werden häufiger gebraucht. Die Langform mit -l zeigt alle Informationen zu den Dateien, die man sich wünschen kann. Von rechts nach links erkennt man den Dateinamen, es folgt der Zeitpunkt der Erstellung und die Größe der Datei. Das erste Zeichen der Zeile zeigt ein d für Verzeichnisse und ein Minuszeichen für eine normale Datei. Die anderen Informationen werden in den späteren Kapiteln noch ausführlich aufgegriffen. Hier ein Beispiel für die Ausgabe von ls -l.

-rwxr-----    1 arnold   users       13654 Jan 17 04:41 a.out
drwxr-x---    2 arnold   users        4096 Mär  6 23:35 awk
-rwxr-xr-x    1 arnold   users       13856 Feb  8 10:48 copy
-rw-r--r--    1 arnold   users         175 Feb  8 10:48 copy.c
drwxr-xr-x    2 arnold   users        4096 Jan 13 12:37 dir
-rw-rw-r--    1 arnold   users          98 Apr 13 13:55 doppel.c
-rwxr-xr-x    1 arnold   users       13516 Feb  8 21:25 env
-rw-r--r--    1 arnold   users         165 Feb  8 21:25 env.c
drwx------    2 arnold   users        4096 Feb 21 14:13 ipc
drwxr-xr-x    2 arnold   users        4096 Feb 13 13:51 make
-rwxr-xr-x    1 arnold   users       13489 Apr 11 21:34 moin
-rw-r--r--    1 arnold   users          60 Apr 13 13:55 moin.c

Der Dateityp wird in der ersten Spalte angezeigt. Dabei steht ein Bindestrich für eine normale Datei, ein d für Verzeichnisse, ein l für einen symbolischen Link. Die Berechtigung ist in den nächsten neun Zeichen angezeigt und besteht aus r für read (engl. lesen), w für write (engl. schreiben) und x für execute (engl. ausführen). Die Links zeigen die Anzahl der Verweise auf die Datei. Als Eigentümer wird die Kennung des Besitzers angegeben. Benutzer können zu Gruppen gehören und so können für mehrere Benutzer Berechtigungen auf einzelne Dateien festgelegt werden. Der Zeitpunkt der letzten Änderung wird als Uhrzeit dargestellt, wenn die Änderung am gleichen Tag war oder als Datum, wenn die Änderung bereits länger her ist.

Der Dateiname kann unter UNIX relativ frei gestaltet werden. Er darf keinen Schrägstrich enthalten, da dieser als Verzeichnistrenner interpretiert wird. Enthält der Dateiname Sonderzeichen, die die Shell interpretiert, muss man den Namen bei Benutzung von der Kommandozeile in Anführungszeichen setzen. Alternativ kann man auch einen Backslash vor das Sonderzeichen stellen. Für die Shell bedeutet der Backslash, dass sie das folgende Zeichen nicht interpretieren, sondern einfach durchreichen soll.

ls -a zeigt alle Dateien

Die Option -a zeigt auch Dateien an, die mit einem Punkt beginnen. Unter UNIX werden Dateien, die zur Konfiguration verwendet werden gern so benannt, dass das erste Zeichen ein Punkt ist. So stören sie nicht, wenn man eigentlich nur die Arbeitsdateien betrachten will. Auch ein versehentliches Löschen wird unwahrscheinlicher, weil der Befehl rm * diese Dateien nicht erfasst. Will man -l und -a kombinieren, kann man ls -a -l oder einfacher ls -al angeben.

ls -t sortiert nach der Zeit

Mit der Option -t wird statt nach dem Alphabet nach der Zeit sortiert, dabei erscheint die neueste Datei zuerst. Mit der Option -r wird die Reihenfolge umgekehrt.

Die Option -R zeigt eine Liste aller Unterverzeichnisse mit ihren Unterverzeichnissen.

Option Wirkung
-l zeigt alle Informationen über die Datei
-a zeigt auch die Dateien, die mit einem Punkt beginnen
-d zeigt das Verzeichnis und nicht dessen Inhalt
-t sortiert nach letzter Änderung. Neueste Dateien kommen zuerst
-r dreht die Sortierfolge um
-R zeigt alle Unterverzeichnisse

ls hat erheblich mehr Optionen. Wer sie gern alle kennen lernen möchte: man ls.

Dateien kopieren: cp

cp Optionen Quelldateien Ziel

cp kopiert Dateien

Der Befehl cp kopiert Dateien in genau ein Ziel. Wird nur eine Datei kopiert, kann das Ziel ein Dateiname sein. Dann wird von der Quelldatei eine Kopie angefertigt und diese unter dem Zielnamen abgestellt. Werden dagegen mehrere Dateien kopiert, muss das Ziel ein Verzeichnis sein, da ja nicht alle Quelldateien den gleichen Namen bekommen können. Die Kopien finden sich nach der Ausführung unter ihrem bisherigen Namen im angegebenen Zielverzeichnis. Soll das Ziel das aktuelle Verzeichnis sein, muss der Punkt dafür angegeben werden.

Um mehrere Dateien zu erfassen, kann man sie aufzählen oder durch einen Stern auswählen. Wichtig ist, dass der zuletzt angegebene Name von cp immer als Ziel interpretiert wird. Ein Verzeichnis als Quelle wird von cp einfach übergangen.

cp erstellt neue Dateien

cp erzeugt beim Kopieren immer eine neue Datei. Darum ist das Datum einer Kopie auch immer der aktuelle Tag und nicht das Datum der Datei, von der kopiert wird. Auch der Eigentümer der neu entstandenen Datei ist immer der Anwender, der den Befehl aufgerufen hat. Dieses Verhalten kann mit der Option -p unterbunden werden, die aber nicht in allen UNIX-Versionen vorhanden ist.

Auch die Möglichkeit, mit der Option -r komplette Verzeichnisbäume zu kopieren, ist nicht auf allen Systemen verfügbar. Darum ist das Kopieren kompletter Verzeichnisbäume unter Beibehaltung aller Eigenschaften auf älteren Systemen ausschließlich mit dem Kommando tar möglich.

Welche Möglichkeiten cp auf Ihrem System sonst noch bietet, erfahren Sie wieder mit man cp.

Dateien verschieben oder umbenennen: mv

mv verschiebt und benennt um

Mit dem Befehl mv kann man einer Datei einen anderen Namen geben oder mehrere Dateien in ein anderes Verzeichnis schieben. In den meisten Fällen fasst mv die Dateien selbst gar nicht an, sondern verändert nur die Einträge in den Verzeichnissen. Darum wird das Verschieben selbst großer Dateien erstaunlich schnell erledigt. Eine Ausnahme gilt nur, wenn Ursprung und Ziel auf verschiedenen Dateisystemen liegen, beispielsweise auf verschiedenen Festplatten. Dann wird zunächst kopiert, dann das Original gelöscht und zu guter Letzt werden die Eigenschaften der Originale übernommen.

Dateien löschen: rm

rm -i löscht nur nach Rückfrage

Der Befehl rm löscht Dateien. Dies ist unwiderruflich und darum ist es ganz gut, dass es die Option -i gibt. Dann fragt rm bei jeder einzelnen Datei nach, ob sie wirklich entfernt werden soll.

Will man einen kompletten Verzeichnisbaum löschen, verwendet man die Option -r. Damit geht rm rekursiv den gesamten Baum durch und entfernt alle enthaltenen Dateien und Verzeichnisse.

Verzeichnisbefehle: mkdir, rmdir, cd und pwd

Um Dateien zu ordnen und zu gruppieren, legt man Verzeichnisse an. Der Befehl zum Erzeugen von Verzeichnissen lautet mkdir. Die Abkürzung md für mkdir gibt es unter UNIX nicht. Wer sie vermisst, kann sie sich aber als alias definieren.

cd wechselt das Verzeichnis

Der Anwender befindet sich immer in einem Verzeichnis. Mit cd wechselt er sein Arbeitsverzeichnis. cd ohne Parameter wechselt in das Heimatverzeichnis. Das Heimatverzeichnis ist das Verzeichnis, in dem er sich nach dem Anmelden zunächst befindet.

pwd zeigt den aktuellen Pfad an

Um zu ermitteln, in welchem Verzeichnis man sich aktuell befindet, verwendet man den Befehl pwd (print work directory).

rmdir löscht leere Verzeichnisse

Um ein Verzeichnis wieder verschwinden zu lassen, verwendet man rmdir (remove directory). Allerdings kann man mit rmdir nur leere Verzeichnisse löschen und auch nur solche, die derzeit nicht in Verwendung sind. In Verwendung sind auch Verzeichnisse, in denen noch eine Sitzung von einem anderen Terminal stattfindet. Man darf nämlich nicht einfach jemand anderem das Verzeichnis unter den Füßen wegziehen. Leider ist es nicht immer ganz leicht, herauszufinden, wer mit welchem Prozess dort gerade arbeitet. Hier helfen die Befehle fuser und ps und auch lsof.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru.