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.
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 /.
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.
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.
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.
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, -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 $ _
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 Verzeichnis
Die Rechte werden bei einem langen Listing mit ls -l (wie im Beispiel oben) im ersten Feld angezeigt. Dabei bedeuten:
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.
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.
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. 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.
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.