Dateisystem-Operationen in der Unix-Shell
In diesem Abschnitt werden die wichtigsten Unix-Kommandos erläutert, mit denen grundlegende Operationen am Dateisystem – also bezogen auf Verzeichnisse (Ordner) und Dateien – vorgenommen werden können.
In ein anderes Verzeichnis wechseln (cd)
Mit dem Kommando cd (change directory), gefolgt von dem Verzeichnisnamen oder besonderen Zeichen kann in ein anderes Verzeichnis gewechselt werden.
Beispiel:
cd Schreibtisch
(und mit der Eingabe-Taste bestätigen)
Nun lautet die Angabe an der Eingabeaufforderung benutzer@rechner ~/Schreibtisch $. 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, oder man setzt den Pfad in Anführungszeichen:
Beispiel:
cd Meine\ Dateien
cd "Meine Dateien"
Verzeichnisinhalt anzeigen (ls)
Man kann sich mit dem Befehl ls (list storage) den Inhalt des aktuellen oder eines anderen Verzeichnisses anzeigen lassen.
Beispiele:
ls
ls Schreibtisch
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 Pfad des neuen Verzeichnisses. Existiert bereits eine Datei mit dem gleichen Namen, wird eine Fehlermeldung ausgegeben.
Beispiele:
mkdir Schreibtisch/test
mkdir -p Schreibtisch/Neues Verzeichnis
Über die Option -p werden Elternordner des zu erzeugenden Ordners ebenfalls erzeugt, falls diese nicht existieren.
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 ~/Schreibtisch/test/homedir
(Verzeichnis test muss bereits existieren)
Jetzt wurde im Verzeichnis ~/Schreibtisch/test eine symbolische Verknüpfung mit dem Namen homedir angelegt, die auf das Verzeichnis /home verweist.
Das Verknüpfungsziel eines Symlinks kann mit dem Befehl readlink
abgefragt werden. Hier also beispielsweise readlink ~/Schreibtisch/test/homedir
.
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 Schreibtisch/test.log
Die neue Datei wird mit folgenden Rechten erzeugt:
rw-r--r-- (644)
Objekt 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 Schreibtisch/test Schreibtisch/test2
Objekt 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. Sollte das Zielverzeichnis nicht existieren, wird es automatisch angelegt.
- 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 Schreibtisch/test.log Schreibtisch/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 Schreibtisch/test2
cp -Rup Schreibtisch/test Schreibtisch/test2
Objekt löschen (rm)
Um eine Datei zu löschen, verwendet man den Befehl rm (remove). Sollte die Datei nicht existieren, kommt es zu einer Fehlermeldung ohne Programmabbruch.
Beispiel:
rm Schreibtisch/test.log
Ein nicht leeres Verzeichnis kann einschließlich aller enthaltenen Dateien mit der Option -r (recursive) gelöscht werden.
Beispiel:
rm -r Schreibtisch/temp
Leeres Verzeichnis löschen (rmdir)
Um ein leeres Verzeichnis zu löschen, verwendet man den Befehl rmdir (remove directory).
Beispiel:
rmdir Schreibtisch/temp