UnixTools01 05

From
Jump to navigation Jump to search

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:

  1. Was passiert, wenn Sie mit rmdir ein Verzeichnis löschen wollen, das nicht leer ist?
  2. Können Sie mit rm auch ein Verzeichn is lösschen? Selbst, wenn dieses nicht leer ist? Wie?