next up previous contents index
Next: Datenströme Up: Die ersten Schritte Previous: Die ersten Schritte

Verzeichnisse und Dateien

 

Die im Arbeitsspeicher des Rechners gehaltenen Daten, seien es Programme, Texte, Bilder oder Zahlen, gehen alle mit dem Ausschalten der Stromversorgung verloren. Aus diesem Grund werden alle wichtigen Daten auf einem dauerhaften Speichermedium gehalten. Dieses Medium ist normalerweise die Festplatte, es kann aber auch ein Diskettenlaufwerk oder eine CD-ROM sein.

Um die Vielzahl der anfallenden Daten rationell und übersichtlich speichern zu können, bietet Linux, wie alle modernen Betriebssysteme, die Möglichkeit, die Daten in Verzeichnissen zu organisieren.

Das aktuelle Verzeichnis

Als Benutzer eines interaktiven Computers ,,befinden`` Sie sich ständig in einem Verzeichnis. Dieses Verzeichnis, das sogenannte aktuelle Verzeichnis,  ist der relative Bezugspunkt für all Ihre Aktionen. Jedes Kommando, das Sie aufrufen, ist mit diesem Verzeichnis verbunden.

Jedes Verzeichnis kann Dateien und weitere Verzeichnisse enthalten. Der Name des aktuellen Verzeichnisses wird mit dem Kommando pwd (print working directory) angezeigt:

$ pwd
/usr/src/linux
$ _
Das aktuelle Verzeichnis ist eines unter vielen Verzeichnissen im System. Alle Verzeichnisse und die darin enthaltenen Dateien zusammen werden als Dateisystem bezeichnet. Das Dateisystem ist mit einem Baum zu vergleichen, dessen Äste und Zweige   die Verzeichnisse sind und dessen Blätter die Dateien (siehe Abbildung 1.1). Die Stellen, an denen zwei Verzeichnisse oder ein Verzeichnis und eine Datei zusammenstoßen werden durch einen einfachen Schrägstrich `/' (Slash) bezeichnet.

Das Verzeichnis, in dem alle Äste zusammenlaufen, ist das Wurzelverzeichnis oder Rootdirectory /.

Namen und Pfade

Jede Datei hat einen Dateinamen, mit dem sie in einem Verzeichnis eingetragen ist. Wenn die Datei in einem anderen als dem aktuellen Verzeichnis liegt, muß sie mit einem Pfadnamen angesprochen werden. Dieser Name setzt sich aus einer Reihe von Verzeichnisnamen und einem Dateinamen zusammen. Die Reihe der Verzeichnisnamen wird als Pfad bezeichnet. Die einzelnen Verzeichnisnamen werden alle durch `/'   (Slash) Zeichen getrennt.

Um eine Datei in einem anderen Verzeichnis oder auch einfach nur das andere Verzeichnis anzusprechen, kann der Pfadname entweder relativ   zum aktuellen Verzeichnis oder als absoluter (Pfad-) Name vom Wurzelverzeichnis aus angegeben werden.

Um bei einem relativen Pfadnamen im Verzeichnisbaum in Richtung Wurzel zu gehen, muß anstelle eines regulären Verzeichnisnamens das Verzeichnis `. .' angegeben werden. Dieses Verzeichnis ist in jedem Verzeichnis enthalten und bezeichnet das nächste Verzeichnis in Richtung Wurzel.

Neben dem Bild des Verzeichnisbaums gibt es noch das einer Hierarchie. Damit wird im Prinzip die gleiche Ordnung erzeugt, aber in genau umgekehrter Richtung. Wenn ein Verzeichnis beim Baum näher an der Wurzel, also tiefer ist, ist es in der Hierarchie höher.

Das Verzeichnis wechseln

 

Sie können das aktuelle Verzeichnis mit dem cd (change directory) Kommando wechseln. Zum Beispiel bringt Sie das Kommando

$ cd /
$ _
in das Wurzelverzeichnis. Das Kommando

$ cd /dev
$ _

wechselt in das Verzeichnis dev. Der Schrägstrich (Slash) bezeichnet dev vom Wurzelverzeichnis aus. Es können auch mehrere Verzeichnisnamen zu einem sogenannten ,,Pfadnamen``   verkettet werden. Um die einzelnen Namen voneinander zu trennen, werden weitere Slashes verwendet. Das Kommando

$ cd /usr/lib/emacs
$ _

bringt Sie in das Verzeichnis emacs. Um von dort aus in das Verzeichnis lib zu gelangen, können Sie entweder wieder den absoluten Pfad vom Wurzelverzeichnis aus angegeben

$ cd /usr/lib
$ _
oder Sie benutzen den relativen Pfad vom aktuellen Verzeichnis aus:

$ cd ..
$ _
Die beiden Punkte bezeichnen das übergeordnete Verzeichnis, ein einzelner Punkt steht für das aktuelle Verzeichnis selbst.

Den Inhalt eines Verzeichnisses anzeigen

 

Um den Inhalt eines Verzeichnisses anzuzeigen, gibt es das ls (list)  Kommando.

$ ls /bin
arch      compress  echo      gzip      ls        ps        su
bash      cp        ed        hostname  mkdir     pwd       sync
cat       date      false     kill      mknod     rm        tar
chgrp     dd        free      killall   mv        rmdir     true
chmod     df        ftp       ln        netstat   sh        uname
chown     du        gunzip    login     ping      stty      zcat
$ _
zeigt beispielsweise alle Dateien des bin Verzeichnisses an. Das sind alles ausführbare Programmdateien.gif

Durch Zusätze in der Kommandozeile können Sie das Ausgabeformat des ls Kommandos ändern. Solche Zusätze werden Optionen genannt. Die Optionen werden von einem Minuszeichen eingeleitet und bestehen (fast) immer aus einzelnen Buchstaben, die als Schalter bestimmte Eigenschaften des Programms verändern. Alle Optionen des ls Kommandos sind hier beschrieben. Für den Anfang sind die Optionen -l (long) für ein ausführliches Listing,gif -a (all) für die Anzeige aller Dateien sowie -F (File) für zusätzliche Symbolisierung bestimmter Dateitypen besonders interessant. Sie können mehrere Optionen hinter einem einzigen Minuszeichen zusammenfassen.

$ ls -l /
total 302
drwxr-xr-x   2 ruth     bin          2048 Jun 10 12:39 bin
drwxr-xr-x   2 ruth     ruth         1024 Dec  2 16:46 boot
drwxr-xr-x   2 ruth     ruth         3072 Jul 23 12:33 dev
drwxr-xr-x   8 ruth     bin          2048 Jun 15 12:18 etc
....
-rw-r-r-   1 ruth     ruth       281092 Dec  2 16:54 vmlinuz
$ _

Eigentum und Zugriffsrechte

 

Um den unautorisierten Zugriff auf Dateien anderer Benutzer zu verhindern, haben alle Dateien und auch alle Verzeichnisse Eigentümer, die die Zugriffsrechte (Permissions) der anderen Benutzer bestimmen können.

Zur flexibleren Gestaltung dieser Regelung existieren neben dem Eigentümer noch zwei Benutzerkategorien: die Gruppe des Eigentümers und die übrigen Anwender. Die Gruppe wird jedem Benutzer durch einen Eintrag in der Paßwortdatei fest zugeordnet.

  
Figure:   Zugriffsrechte Datei


Figure:   Zugriffsrechte Verzeichnis

Die Rechte werden bei einem langen Listing mit ls -l (wie im Beispiel oben) im ersten Feld angezeigt. Dabei bedeuten:

r
(read) Leseberechtigung (bei Verzeichnissen Auflistbarkeit)
w
(write) Schreibberechtigung
x
(execute) Ausführberechtigung (bei Verzeichnissen die Möglichkeit, in dieses Verzeichnis zu wechseln.)

Die Abbildungen gif und gif zeigen typische Einträge für ein Verzeichnis und eine normale Datei.

Ein Verzeichnis ist durch den Typ d gekennzeichnet. In dem Beispiel hat der Eigentümer das Recht, in das Verzeichnis zu schreiben (das heißt Dateien darin anzulegen oder zu löschen), das Verzeichnis aufzulisten und auf die Dateien in dem Verzeichnis zuzugreifen. Die Gruppe und die anderen Systembenutzer können das Verzeichnis anzeigen und mit cd dorthin wechseln, sie können aber keine Datei in dem Verzeichnis anlegen oder eine Datei aus dem Verzeichnis löschen.

Die Datei in dem Beispiel kann von dem Eigentümer und der Gruppe gelesen und beschrieben (verändert) werden, während die anderen Benutzer die Datei nur lesen können.

Verzeichnisse erstellen und löschen

 

Mit dem mkdir (make directory) Kommando können Sie ein neues Verzeichnis anlegen, vorausgesetzt, Sie haben Schreibberechtigung für das Verzeichnis, in dem das neue Verzeichnis erstellt werden soll.

Das rmdir (remove directory) Kommando ist dazu da, Verzeichnisse zu löschen. Es können nur leere Verzeichnisse gelöscht werden.

Dateien erstellen, verschieben und löschen

 

Eine Datei wird von einem Programm als Resultat eines bestimmten Prozesses erstellt. Beispielsweise werden die Programme selbst vom C-Compiler gemacht. Textdateien können Sie einfach mit einem Editor wie zum Beispiel dem vi oder dem emacs erzeugen oder erweitern.

Es gibt aber auch andere Methoden, Dateien zu erzeugen. Beispielsweise können Sie die Kopie einer existierenden Datei mit dem cp (copy) Befehl anfertigen.

Vorausgesetzt, im aktuellen Verzeichnis existiert eine Datei namens Adressen und Sie haben Leserecht für die Datei und Schreibberechtigung für das Verzeichnis, erzeugt der Befehl

$ cp Adressen Telefonliste
$ _

eine genaue Kopie der Datei Adressen mit dem Namen Telefonliste. Die neue Datei Telefonliste ist genauso groß wie Adressen und enthält exakt die gleichen Zeichen. Sie belegt zusätzlichen Platz auf der Festplatte, und Veränderungen an der einen Datei sind in der anderen nicht zu sehen.

Das ist nicht selbstverständlich. Mit dem ln (link)  Kommando können Sie eine andere Art Kopie erzeugen, bei der dieselbe Datei ,,nur`` einen zusätzlichen Namen erhält. Zum Beispiel

$ ln Adressen Adressliste
$ _

erzeugt einen neuen Eintrag Adressliste im aktuellen Verzeichnis. Das Listing des Verzeichnisses zeigt beide Dateien mit der gleichen Größe, mit den gleichen Zugriffsrechten und mit der gleichen Zeitmarke an. Es ist dieselbe Datei, die einfach einen zweiten Namen bekommen hat. Wenn Sie auf die Daten zugreifen wollen, sei es zum Lesen oder Schreiben, macht es keinen Unterschied, unter welchem Namen Sie die Datei aufrufen.

Um eine Datei umzubenennen, können Sie den mv (move) Befehl   benutzen. Dieser Befehl verändert den Inhalt der Datei nicht. Es wird nur der Name im Verzeichnis geändert.

Zum Löschen von Dateien gibt es das rm (remove)   Kommando. Eine einmal gelöschte Datei ist verloren. Es gibt keinen Weg, wieder an die Daten gelöschter Dateien heranzukommen.gif Deshalb ist beim Umgang mit rm immer größte Sorgfalt geboten.

Für das Löschen einer Datei ist übrigens keine Schreibberechtigung für die Datei selbst notwendig. Die Schreibberechtigung auf das Verzeichnis ist hier das entscheidende Kriterium, denn die Löschfunktion (wie auch die zum Umbenennen oder Linken) greift nicht auf die Datei zu, sondern ,,nur`` auf den Eintrag im Verzeichnis.

Dateien anzeigen

 

In der Praxis werden Sie sich häufig Textdateien ansehen wollen. Wenn Sie vorhaben, die Datei zu verändern, werden Sie einen Editor, beispielsweise elvis, aufrufen. Um die Datei einfach nur zu lesen, ist ein Editor nicht besonders geeignet. Erstens sind die Editoren zum bloßen Lesen von Textdateien einfach zu aufwendig und zu langsam und zweitens besteht immer die Gefahr der versehentlichen Veränderung einer Textdatei.

Aus diesem Grund gibt es kleine, schnelle Programme, die allein den Inhalt einer Datei anzeigen. Die wichtigsten Programme dieser Gattung sind more und less, sogenannte Pager, mit denen Sie in einer Textdatei ,,blättern`` können. Das Vorwärtsblättern wird bei beiden Programmen durch ein Leerzeichen (Space) ausgelöst, das Zurückblättern durch den Buchstaben B (back). Das less-Programm muß ausdrücklich durch Drücken der Taste Q beendet werden, während more automatisch beendet, wenn das Dateiende erreicht wird. Eine ausführliche Beschreibung von more finden Sie hier.

Um eine kurze Datei auf den Bildschirm zu schreiben, kann auch das cat-Kommando verwendet werden.

$ cat Adressen
LunetIX   Donaustr. 16           12043 Berlin  030/6235787
FSF       675 Mass Ave           Cambridge,   MA 02139 USA
XeroxParc 3333 Coyote Hill Raod  Palo Alto,   CA 94304 USA
MIT       545 Technology Square  Cambridge,   MA 02139 USA
O'Reilly  632 Petaluma Avenue    Sebastopol,  CA 95472 USA
$ _

schreibt beispielsweise die Datei Adressen auf den Bildschirm. Wenn die Datei nicht auf einen Bildschirm paßt, werden die Zeilen einfach nach oben aus dem Bild geschoben, bis das Dateiende erreicht ist.



next up previous contents index
Next: Datenströme Up: Die ersten Schritte Previous: Die ersten Schritte



Linux Anwenderhandbuch -- Copyright 1993, 1994, 1995 S. Hetze, D. Hohndel, O. Kirch, M. Müller