Die Grundlagen: Verzeichnisse und Dateien

cd - Navigation durch die Verzeichnisse
ls - Verzeichnisinhalte betrachten
Weiter

Dateien dienen zum Speichern von Daten. Verzeichnisse gruppieren die Dateien in einer baumartigen Struktur. Ein Baum besitzt (falls er nicht gefällt wurde) eine Wurzel, also ist der Ursprung aller Verzeichnisse das Wurzelverzeichnis »/« (meist wird die Bezeichnung Root-Verzeichnis [root (engl.) = Wurzel] verwendet). Mit

user@sonne> cd /

wechseln Sie in das Wurzelverzeichnis cd - change directory, wo ein Listing (ls - list) auf den meisten Systemen die folgende Ausgabe liefern sollte:

user@sonne> ls /
bin         dev    home    mnt     proc    tmp
boot        etc    lib     msdos   root    usr
lost+found  opt    sbin    var

Shellvariablen dienen der Steuerung vieler Kommandos
echo - Inhalt von Shellvariablen betrachten
Zurück Anfang Weiter

Möchten Sie zurück in Ihr Heimatverzeichnis (»/home/Benutzer«) wechseln, genügt die Eingabe von:

user@sonne> cd

Das Kommando cd wertet im Falle fehlender Argumente (oft wird auch von Optionen gesprochen) die Shell-Variable »HOME« aus, die den Pfad zum entsprechenden Verzeichnis enthält. Den Inhalt einer Shell-Variable können Sie sich mittels des Aufrufes

user@sonne> echo $HOME
/home/user

zu Gemüte führen. Das $-Zeichen vor dem Variablennamen besagt, dass der Inhalt der Variablen gemeint ist; vergessen Sie dieses, würde »echo« nur den Variablennamen selbst auf die Ausgabe schreiben.

Weitere wichtige Shell-Variablen seien an dieser Stelle kurz erwähnt:

DISPLAY

Name des Displays der Standardausgabe

HOSTNAME

Name des Rechners

MANPATH

Suchpfade für Manual pages

PATH

Suchpfade für Programme

SHELL

Enthält den Namen der Shell (z.B. bash)

USER

Benutzerkennung

mkdir - Verzeichnis erstellen
rmdir - ein leeres Verzeichnis löschen
rm - Dateien oder Verzeichnisse löschen
Zurück Anfang Weiter


user@sonne> mkdir new_directory

erstellt ein neues Verzeichnis new_directory. Betrachten Sie dessen Inhalt:

user@sonne> ls -a new_directory
. ..

so endecken Sie die beiden Einträge ».« für das Verzeichnis selbst und »..«, was auf das übergeordnete Verzeichnis verweist. Der Punkt ist hilfreich, um sich explizit auf eine Datei des aktuellen Verzeichnisses beziehen zu können, ohne den kompletten Pfad, beginnend in der Wurzel, angeben zu müssen. Durch Angabe des Punktes werden die üblichen Regeln zur Lokalisierung einer Datei außer Kraft gesetzt.

Möchten Sie schließlich das Verzeichnis wieder löschen, so trommeln Sie

user@sonne> rmdir new_directory

auf die Tastatur und vermisst beim nächsten Listing das Verzeichnis, sofern dieses leer war! Das zum Löschen von Dateien gedachte Kommando rm - remove kann auch auf Verzeichnisse angewendet werden:

user@sonne> rm -r new_directory

Mit der Option »-r« (für rekursiv) entfernt »rm« auch alle Unterverzeichnisse und letztlich das Verzeichnis selbst. Gehen Sie behutsam mit diesem Kommando um - was in Linux einmal gelöscht wurde, ist ein für alle Male verloren (das stimmt so nicht ganz, aber das Vorgehen zum Retten von Daten ist mehr als komplex)!

pwd - Name des aktuellen Verzeichnisses anzeigen
Zurück Anfang Weiter

Ist Ihnen der Namen des aktuellen Verzeichnisses entfallen, so hilft

user@sonne> pwd

(print working directory), das den Bezeichner (mit Pfad) wiedergibt.

touch - Eine neue leere Datei erzeugen (das ist nicht der eigentliche Zweck von touch!) Zurück Anfang Weiter

Wenden wir uns nun den Dateien zu. Wie das Löschen funktioniert, haben Sie schon kennen gelernt: mit dem Kommando rm. Zum Erstellen neuer Dateien gibt es mehrere Möglichkeiten. Die Einfachste ist

user@sonne> touch Dateiname

das eine leere Datei anlegt, sofern der Dateiname noch nicht im aktuellen Verzeichnis existierte. Gab es sie bereits, ändert »touch« ihr letztes Änderungs- und Zugriffsdatum (und das ist die wahre Berufung des Kommandos;-); der Grund hierfür wird uns im Zusammenhang mit make klar werden.

Ausgaben von Kommandos in eine Datei umleiten Zurück Anfang Weiter

Ausgaben von Kommandos lassen sich in eine Datei umlenken, zum Beispiel legt

user@sonne> ls / > root_inhalt

eine Datei root_inhalt mit folgendem Inhalt an:

bin     dev     home        mnt     proc    tmp
boot    etc     lib         msdos   root    usr
cdrom   floppy  lost+found  opt     sbin    var

Eine eventuell existierende Datei root_inhalt wird dabei rigoros überschrieben (später werden wir auch die Umleitung der Eingaben für ein Kommando kennen lernen).

more, less - Pager dienen zum Betrachten von Dateiinhalten Zurück Anfang Weiter

Den Inhalt einer solchen Datei schauen Sie sich am besten mit einem so genannten Pager an:

user@sonne> more root_inhalt

oder mit

user@sonne> less root_inhalt

Pager haben gegenüber Editoren (diese behandeln wir später) den Vorteil, dass sie das versehentliche Ändern des Dateiinhalt ausschließen. Ob Sie more oder less bevorzugen, ist Geschmackssache; beide Pager unterscheiden sich nur geringfügig in der Bedienung (beide beenden Sie durch [Q]).

head, tail - Nur den Anfang/das Ende einer Datei betrachten Zurück Anfang Weiter

Bei sehr langen Dateien sind häufig nur die ersten/letzten Zeilen von Interesse (z.B. werden in »/var/log/messages« alle Systemmeldungen protokolliert, wobei der Grund für ein ungewöhnliches Systemverhalten sicher am Ende der Datei zu finden sein wird).

user@sonne> head Dateiname

zeigt die ersten (Voreinstellung 10) Zeilen der Datei »Dateiname« an,

user@sonne> tail Dateiname

dagegen die letzten (10) Zeilen.

cat - Verkettet seine Eingaben und schreibt das Ergebnis auf den Bildschirm Zurück Anfang Weiter

Für das Betrachten kurzer Dateien (deren gesamter Inhalt auf einer Bildschirmseite darstellbar ist) eignet sich auch folgendes Kommando:

user@sonne> cat /etc/passwd

cat schreibt in diesem Beispiel den Inhalt der Passwortdatei auf die Standardausgabe.

cp - Dateien physisch kopieren
cat und Ein/Ausgabe-Umleitung - Eine andere Art zu »kopieren«
Zurück Anfang Weiter

Es soll nützlich sein, Dateien unter Umständen kopieren zu können. Auch an ein solches Kommando haben die UNIX-Götter gedacht:

user@sonne> cp Quelle Ziel

»Quelle« und »Ziel« sind nun zwei Dateien mit identischem Inhalt.

Eine andere Möglichkeit zum Kopieren bietet die Umleitung von Ausgaben:

user@sonne> cat Quelle > Ziel

Der Unterschied in der Verwendung der Kommandos cp und »cat« besteht im Erhalt der Zugriffsrechte der Datei bei ersterem Kommando, während im Falle von »cat« die Zieldatei die durch umask voreingestellten Rechte erhält.

Aber warum sollten Sie Dateien mit gleichem Inhalt mehrfach speichern? Häufigster Grund hierfür wird doch nur der Zugriff auf dieselbe Datei aus verschiedenen Verzeichnissen heraus sein. Jedoch wird hiermit Speicherplatz verschwendet. Abhilfe schaffen hier so genannte Links, also Verweise auf Dateien/Verzeichnisse.

user@sonne> ln Quelle Ziel
user@sonne> ln -s Quelle Ziel2

In der ersten Zeile wird ein so genannter statischer (fester, harter) Link angelegt. »Ziel« ist jetzt nur ein anderer Name für »Quelle«; eine Änderung von »Ziel« ändert auch den Inhalt von »Quelle«. Wird einer der Dateinamen gelöscht, kann über den anderen Namen weiter auf den Inhalt zugegriffen werden.

Anders verhält sich der Link der zweiten Zeile, ein so genannter symbolischer Link. Im Unterschied zum statischen Link, wo ein neuer Verzeichniseintrag auf den Verwaltungseintrag (Inode) der Ursprungsdatei erzeugt wird, speichert der symbolische Link in einem neuen Inode den vollständigen Zugriffspfad der originalen Datei. Würde nun »Quelle« gelöscht werden, so würde »Ziel2« weiter existieren, aber ins »Nichts« (auf eine nicht mehr existierende Datei) zeigen. »Ziel2« wäre sozusagen unbrauchbar geworden. Der Vorteil symbolischer Links besteht in der Möglichkeit, sie auch über Partitionsgrenzen hinweg anwenden zu können.

mv - Dateien umbenennen oder verschieben Zurück Anfang

Das Umbenennen bzw. Verschieben von Dateien erfolgt mit dem Kommando mv - move:

user@sonne> mv Quelle Ziel

Die Datei »Quelle« erhält den neuen Namen »Ziel«, falls »Ziel« nicht existierte oder es sich um eine normale Datei handelt (dann wird der ursprüngliche Inhalt überschrieben). Ist »Ziel« ein Verzeichnis, so wird »Quelle« in dieses verschoben. Mehrere Dateien lassen sich mit »mv« gleichzeitig verschieben. Eine einzelne Datei kann in einem Schritt verschoben und umbenannt werden:

# Mehrere Dateien verschieben; Ziel muss ein Verzeichnis sein
user@sonne> mv Quelle1 Quelle2 QuelleN Ziel

# Datei in ein Verzeichnis unter einem anderen Namen verschieben
user@sonne> mv Quelle Ziel/neuer_name