Menu Content/Inhalt
Home arrow Grundlagen arrow Pfade durch Verzeichnisgestrüpp
Pfade durch Verzeichnisgestrüpp PDF Drucken E-Mail

Verzeichnisse

Wir bedienen uns zur besseren Illustration des ls-Befehls, der im Anschluss näher beschrieben wird!
user@host:~> ls
"ls" steht für das englische Wort listing. Dieser Befehl listet Ihnen also den Inhalt von Verzeichnissen auf. Der Inhalt eines Verzeichnisses ist entweder ein anderes Verzeichnis oder eine Datei.

Ohne Angabe einer Option bzw. eines Parameters, wird jenes Verzeichnis simpel aufgelistet, in dem Sie sich gerade befinden!
Aber wo befinden Sie sich gerade?
Erinnern Sie sich, wir haben schon den Befehl pwd kennengelernt und es ist an der Zeit, ihn hier einzusetzen ...

user@host:~> pwd
/home/user
user@host:~>
"pwd" steht für "print working directory - Gib das aktuelle Arbeitsverzeichnis aus!". Die Ausgabe dieses Befehls ergibt immer eine Absolute Pfadangabe. /home/user ist das sogenannte "Home-Verzeichnis" des Benutzers namens "user".

In GNU/Linux, Unix und/oder anderen Unix-Derivaten (z.B. FreeBSD) wird das Home-Verzeichnis des users mit ˜ (=Tilde) abgekürzt! Deshalb sehen Sie auch im Eingabeprompt als Absolute Pfadangabe anstelle von /home/user eben dieses ˜-Zeichen ausgegeben.

Was Ihnen bei der Ausgabe von pwd völlig (als Linux-Neuling) abgehen wird ist die Angabe eines Laufwerksbuchstabens als oberste Hierarchiestufe!

Sie werden C:> oder D:> gewohnt sein, das von den Microsoft-Leuten eingeführt wurde.

Absolute Pfadangabe bedeutet, dass die Pfadangabe vom obersten Hierarchiepunkt ausgehend bis zum aktuellen bzw. gewünschten Verzeichnisnamen reicht. Später werden wir auch noch die Relative Pfadangabe kennenlernen.
Jede Absolute Pfadangabe unter GNU/Linux beginnt mit einem "/" (Slash). Der Slash ist der "Verzeichnistrenner", und das ist ganz wichtig sich zu merken!
Der Slash trennt zwei Verzeichnisse voneinander ab, das bedeutet, dass JEDER Verzeichnisname bei einer Pfadangabe am Anfang und am Ende einen Slash stehen haben kann. Der Slash vor dem Verzeichnisnamen MUSS sein, der nach dem Verzeichnisnamen ist genau dann optional, wenn kein weiterer Verzeichnis- oder Dateinamen angegeben werden muss, weil der letzte Verzeichnisname das "Zielverzeichnis" der Absoluten oder Relativen Pfadangabe benennt (also das, wo Sie final hin wollten) bzw. der letzte Name die von Ihnen angepeilte (Ziel)Datei darstellt. Das mit dem Slash ist wichtig und sollte sich jeder einprägen. Am Anfang sicher gewöhnungsbedürftig.

Der Bereich links vom allerersten Slash ist die root-Partition. Root ist das englische Wort für Wurzel (in unserem Fall passte auch die Übersetzung "Ur-Grund") und eine Partition ist ein Teilbereich der Festplatte! Jedes GNU/Linux-System hat eine root-Partition. Ohne einer solchen geht nichts! Man könnte es mit einem Plafond vergleichen, in dem Haken eingeschraubt wurden. Der Plafond ist die root-Partition. Die angeschraubten Haken sind die mit jeweils einem Namen versehenen und mit jeweils einem Slash von der Root-Partition getrennten "Mountpoints". Ein solcher "Haken" kann nun weitere Verzeichnisse am Haken haben, oder Dateien, einen Luster oder eine andere Partition, die in diesen Haken eingehängt wurde! Was immer er am Haken hat, wird auch durch einen Slash getrennt. Der Haken an dieser Geschichte ist, dass es keinen gibt! Wir werden uns später mit diesem Thema ernst auseinandersetzen! Grundsätzlich haben Sie aber das Bild vom Plafond mit seinen Haken und Ösen verstanden, oder?

Um nun alle im Plafond angebrachten Hakennamen sich anzeigen zu lassen, tippen Sie den ls-Befehl gefolgt vom allerersten Verzeichnistrenner, der die obersten Verzeichnisse von der root-Partition trennt.
user@host:~> ls /
bin dev fs lib lost+found misc mtp opt root usr work srv
boot etc home local media mnt work-local proc sbin tmp var
user@host:~> _
Die meisten dieser Namen sind nicht rein zufäallig gewählt worden, und Sie werden sich schon gefragt haben, was diese zu bedeuten haben.

Root-Verzeichnis. Der namenlose Bereich links vom ersten Slash, Ist der Beginn des Verzeichnisbaumes
/bin/ enthält wichtige Befehle, die auch zum Hochfahren des Systems benötigt werden sind hier abgelegt (bash, ls, mount ...)
/boot/ enthält statische files für den Boot-Loader (z.B. vmlinuz)
/dev/ Gerätedateien (device-files), die Hardware-Komponenten repräsentieren.
/etc/ wichtige Dateien zur Systemkonfiguration, die auch beim Booten des Rechners Beachtung finden
/home/ Die (privaten) Verzeichnisse der Benutzer
/lib/ enthält "shared libraries" für dynamisch gelinkte Programme und die Kernel-Module
/opt/ optionale Software (KDE, GNOME, Netscape ...)
/proc/ Das Prozessdateisystem - bietet ein "Sicht-Fenster in den Kernel"
/root/ Home-Verzeichnis vom Superuser (/root/ NICHT mit root-partition verwechseln!)
/sbin/ enthält wichtige "System"-Kommandos, die dem Superuser gehören
/tmp/ Temporäre Dateien --- jeder user darf temporäre files in diesen Ordner legen
/usr/ Ist ein Basisverzeichnis für Anwendungsprogramme, Bibliotheken, Dokumentationen ...
/usr/bin/ Allgemein zugängliche Kommandos
/usr/local/ Lokale, von der Distribution unabhängige Erweiterungen
/usr/sbin/ Erneut Kommandos, die dem Superuser gehören
/usr/include/ Header-Dateien für den C-Compiler
/usr/share/doc/ Verschiedene Dokumentationsdateien
/usr/share/man/ Die Manual-Pages (Hilfetexte)
/usr/src/ Quelltexte der Systemsoftware
/usr/src/linux/ Der symbolische link zu den Kernelquellen (falls installiert)
/var/ Variable Daten: Mail und printer-spooler, log-files, pid-files, lock-files
/var/tmp/ Weitere Ablagemöglichkeit für temporäre Dateie

Bitte lassen Sie sich nicht dadurch verunsichern, dass Ihre Ausgabe am Bildschirm nicht deckungsgleich mit der hier gebotenen ist. Es ist alles okay mit Ihrem Computer!
Ich habe nur die wichtigsten aufgezählt. Sie werden wahrscheinlich auch ein sys oder ein media sehen, oder sogar ein work und mnt und vielleicht noch was anderes dazu... die oben aufgezählten waren mir am wichtigsten.

Was könnte es für einen Sinn haben, dass man weltweit diesen Standard etabliert hat, an den sich alle Distributoren mehr oder weniger brav halten?
Einerseits wird es für Sie als user oder superuser leichter sein, Dateien bzw. Verzeichnisse zu finden, weil ein xyz.conf file mit sehr hoher Wahrscheinlichkeit in /etc/ zu finden sein wird. Diese Vereinbarung dient einer besseren Orientierung durch das filesystem.
Andererseits wird es für Software-Entwickler so erst möglich, Programme (für GNU/Linux-Systeme) zu entwickeln.

Alle Linux-Distributoren halten sich an das Grundgerüst des "File-Hierarchy-Standards" (FHS)!

Für weiterführende Infos über den FHS besuchen Sie die Seite

http://www.pathname.com/fhs/pub/fhs-2.3.html

oder Sie laden sich den Inhalt als .txt-file oder pdf-file vom "Internet" auf Ihre Festplatte runter, indem Sie eines der files (txt, pdf, ...) auf der Seite http://www.pathname.com/fhs/pub/ auswählen.

Das sind also mögliche Verzeichnis- oder Dateinamen gewesen (wir wissen das jetzt noch nicht) , die sich unmittelbar unterhalb der obersten Hierarchie - der root-Partition - befinden. Aus Gründen der Übersichtlichkeit sollten hier keine Dateien abgelegt werden!
Dateien in dieser Ebene wären sehr unüblich und unerwünscht! Ausser den im FHS angeführten Verzeichnissen können Sie auch andere Ihrer Wahl anlegen - je mehr, desto unübersichtlicher!
Der "bin" Haken ist also von der root-Partition und von seinem Gehalt mittels eines Slashes abgetrennt. Listen Sie doch einmal auf, was "bin" beinhaltet! (Die folgende Ausgabe beginnt unterhalb des Eingabeprompts und endet oberhalb des nächsten Eingabeprompts "a Stückl weida unten")

user@host:~> ls /bin/
Mail arch ash awk
bash bunzip2 bzcat bzip2
bzip2recover cat chgrp chmod
chown compress cp cpio
csh cut date dd
df dialog dircolors dmesg
dnsdomainname domainname du echo
ed egrep false fgrep
free ftp gawk gawk-3.1.4
getopt getoptprog grep gunzip
gzip head hostname ipmask
kill killall ksh ln
loadkeys login ls lsmod
lsmod.old mail mkdir mkfifo
mknod more mount mt
mt-GNU mt-st mv netstat
nisdomainname ping ping6 ps
pwd red rksh rm
rmdir rpm rzip sed
setterm sh shred sleep
sln stty su sulogin
sync tar tar-1.13 tar-1.15.1
tcsh telnet touch true
umount uname which ypdomainname
zcat zsh zsh-4.2.1
user@host:~>
Die Ausgabe muss bei Ihnen nicht exakt so aussehen. Es hängt nämlich der Inhalt der obigen Ausgabe auch vom Satz an Programmpaketen ab, welche auf Ihrem Computersystem lokal installiert wurden.

... oder das Verzeichnis /home/

user@host:~> ls /home/
...
...
user@host:~>

Unsere Eingabe (Keyboard) kommt über Kanal 0, und die Ausgabe auf dem Bildschirm kommt über Kanal 1.
Jeder Befehl hat nach seiner Ausführung einen Rückgabewert, der uns Auskunft darüber gibt, ob der Befehl erfolgreich ausgeführt wurde, oder nicht. Dieser Rückgabewert hat zwei Zustände: "OK" oder "NICHT OK" (true oder false). Bei erfolgreicher Ausführung ist der Rückgabewert 0 (=OK, true). Ansonsten (=NICHT OK, false) von 0 verschieden, z.B. 1, 13, 255 ...
Die Befehlsfolge zur Ausgabe des Rückgabewertes lautet:

user@host:~> echo $?
0
user@host:~>
Dieser Rückgabewert bezieht sich immer nur auf den unmittelbar zuvor ausgeführten Befehl! In unserem Beispiel also "ls /home/". Lassen Sie uns bewußt (oder unbewußt, weil Sie schon am einschlafen sind) einen Fehler produzieren, indem wir um die Ausgabe des Inhaltes eines Verzeichnisses bitten, das es gar nicht gibt:
user@host:~> ls /xyz/
ls: /xyz: No such file or directory
user@host:~> _
Das ist also eine Fehlermeldung, die uns vom System über Kanal 2 "ausgespuckt" wurde. Und was sagt uns das? Den Luster(haken) namens xyz gibt es nicht, oder den hat es gar nie gegeben. Die Abfrage des Rückgabewertes wird den Fehlschlag bestätigen ...
user@host:~> echo $?
1
user@host:~>

Sie sehen - der Rückgabewert des zuletzt eingetippten Befehls ist 1, für uns gleichbedeutend mit "Fehlschlag".

Der Befehl echo wird gerne zur Ausgabe von Texten auf den Bildschirm eingesetzt, und wir werden immer wieder "echo" einsetzen..

user@host:~> echo Hallo
Hallo
user@host:~> echo $?
0
user@host:~> echo Alea iacta est!
Alea iacta est!
user@host:~> _

Wieder schön zu beobachten:
Die Eingabe erfolgt übers Keyboard durch Kanal 0, die Eingabe erscheint uns am Ausgabegerät (Monitor, Braillezeile) quasi als Konrolle des Getippten, was über Kanal 1 kam, genauso wie die Ausgabe des echo-Befehls auch über Kanal 1 ans Ausgabegerät geliefert wird. Es schadet überhaupt nicht, sich das immer wieder ins Gedächtnis zurück zu rufen!

Letzte Aktualisierung ( Monday, 7. May 2007 )
 

Scroll-news

Mailingliste:
http://mlists.in-berlin.de/mailman/listinfo/lieo-mlists.in-berlin.de 

 

Das Forum ist online gegangen

 


Who's Online

Aktuell 112 Gäste online

Google AdSense