UnixTools01 05
Basic Shell Commands (working with data files)
cat
Angenommen, im aktuellen Verzeichnis gibt es eine Datei mit dem Namen info.txt. Wenn wir wissen wollern, welcher Text sich in dieser Datei verwendet, können wir das Kommando cat verwenden. Das Programm cat gibt den Inhalzt einer Datei auf dem Bildschirm aus:
gruenau4 jpr 1 ( ~ ) $ cat info.txt Good morning, This is the content of file info.txt
Befindet sich diese Datei nicht im aktelennen Aworking Directory, sondern zum Beispiel im Verzeichnis /tmp, muss als Name ein gültiger Path Name angegeben werden (wie/wo das Sistem diese Datei finden kann), z.B.
gruenau4 jpr 1 ( ~ ) $ cat /tmp/info.txt Good morning, This is the content of file info.txt
Geben wir dem Programm cat die Namen mehrerer Dateien (man sagt dann, dass Programm hat mehrere Argumente), so gibt cat alle diese Dateien hintzereinander aus. Daraus leitet sich auch der Name des Programms ab: cat - als Kurzform für concatenate (verbinden), da es alle angegebenen Dateien verbindet und sie gemeinsam (hintereinander) ausgibt. Hier geben wir denselben Namen 3 mal an, dadurch erscheint der Inhalt der Datei dreimal.
gruenau4 jpr 1 ( ~ ) $ cat info.txt info.txt info.txt Good morning, This is the content of file info.txt Good morning, This is the content of file info.txt Good morning, This is the content of file info.txt
touch
Wird das Kommando touch mit einem Namen, z.B. foo.txt aufgerufen, so erzeugt es eine leere Datei mit diesem Namen. Existiert diese Datei schon, so bleibt sie unverändert, aber die ZEit für den letzten Zugriff auf diese Datei wird auf die aktuelle Uhrzeit gesetzt.
Beispiel. Die Datei foo.txt gibt es noch nicht
..., wie wir uns mit dem Kommando ls überzeugen können.
gruenau4 jpr 1 ( ~ ) $ ls -l insgesamt 1 -rw------- 1 jpr unixsoft 680 23. Jul 22:09 archive.tar
Führen wir jetzt touch aus, so gibt es anschlueßend diese Datei. Sie als Uhrzeut für den letzten Zugruff wurde die aktuelle Uhrzeit eingetragen, außerdem ist sie 0 Bytes lang, also leer.
gruenau4 jpr 2 ( ~ ) $ touch foo.txt
gruenau4 jpr 3 ( ~ ) $ ls -l insgesamt 1 -rw------- 1 jpr unixsoft 680 23. Jul 22:09 archive.tar -rw------- 1 jpr unixsoft 0 25. Nov 10:07 foo.txt
Beispiel. Die Datei archive.tar gibt es bereits
..., wie wir uns mit dem Kommando ls überzeugen können. Achten Sie auf das Datum! Die Datei wurde das letzte mal am 22. Juli um 22:09 Uhr modifiziert
gruenau4 jpr 4 ( ~ ) $ ls -l insgesamt 1 -rw------- 1 jpr unixsoft 680 23. Jul 22:09 archive.tar
Führen wir jetzt touch aus, dann wird nur der Zeitstempel für den letzten Zugriff aktualisiert
gruenau4 jpr 5 ( ~ ) $ touch archive.tar
gruenau4 jpr 6 ( ~ ) $ ls -l insgesamt 1 -rw------- 1 jpr unixsoft 680 23. Nov 10:07 archive.tar -rw------- 1 jpr unixsoft 0 25. Nov 10:07 foo.txt
Mehrere Namen
Das Kommando touch kann mit einem oder mehreren Namen (Argumenten) aufgerufen werden. In diesem Fall werden die oben beschriebenen Aktionen für alle Namen ausgeführt, einem nach dem anderen.
rm
Das Kommando rm foo.txt löscht die Datei foo.txt. Es können auch mehrere Namen von Dateien angegeben werden, die dann nacheinander abgearbeitet (gelscht) werden.
gruenau4 jpr 1 ( ~ ) $ ls -l -rw------- 1 jpr unixsoft 80 23. Nov 10:09 foo.txt -rw------- 1 jpr unixsoft 80 23. Nov 10:09 bar.txt
gruenau4 jpr 1 ( ~ ) $ rm foo.txt
gruenau4 jpr 1 ( ~ ) $ ls -l -rw------- 1 jpr unixsoft 80 23. Nov 10:09 bar.txt
Um eine Datei löschen zu können, benötigen Sie Schreibrechte für das Direktory, in dem diese Datei steht. Über das Theme "Zugriffsrechte" sprechen wir erst später, so dass wir es an dieser Stelle bei diesem Hinweis bewenden lassen :)
mkdir
Mit dem Kommando mkdir (make directory = Erstelle ein Directory) wird ein neues Verzeichnis erzeugt
gruenau4 jpr 4 ( ~ ) $ mkdir mydir
gruenau4 jpr 5 ( ~ ) $ ls -l insgesamt 21671 drwx------ 2 jpr unixsoft 2 25. Nov 10:23 mydir
gruenau4 jpr 5 ( ~ ) $ cd mydir gruenau4 jpr 5 ( mydir ) $
rmdir
Mit dem Kommando rmdir (remove directory = entferne ein Directory) kan ein Verzeichnis gelöscht werden.
Achtung: Es können nur leere Verzeichnisse gelöscht werden. Ist das zu lööschende Verzeichnis nicht leer, müssen Sie zuvor alle darin befindlichen Einträge löschen (mit rm falls es sich um Dateie handelt, mit rmdir, falls es sich um Vwerzeichnisse handelt
gruenau4 jpr 1 ( ~ ) $ ls -l insgesamt 21671 drwx------ 2 jpr unixsoft 2 25. Nov 10:23 mydir
gruenau4 jpr 2 ( ~ ) $ rmdir mydir gruenau4 jpr 3 ( ~ ) $ ls -l gruenau4 jpr 4 ( ~ ) $
mv
Für das Kommando mv (move = Bewegen) gibt es zwei typische Anwendungsfälle.
Beispiel 1: Eine Datei in ein anderes Verzeichnis verschieben
Wollen wir eine Datei foo.txt aus dem aktuellen Verzeichnis z.B. in das Verzeichnis /tmp verschieben, so können wir das so tun
gruenau4 jpr 1 ( ~ ) $ mv foo.txt /tmp
Beispiel 2: Eine Datei umbenennen
gruenau4 jpr 1 ( ~ ) $ mv /tmp/foo.txt /tmp/bar.txt
Das erste Argument ist der alte Name, das zweite Argument ist der neue Name (kann auch an einen neuen Ort, also in einem neuen Directoy sein)
Q&E:
- Was passiert, wenn Sie mit rmdir ein Verzeichnis löschen wollen, das nicht leer ist?
- Können Sie mit rm auch ein Verzeichn is lösschen? Selbst, wenn dieses nicht leer ist? Wie?