Linux dosya türleri ve dosya isimleri
From Lapis Wiki
Dateiarten und Dateinamen
Unter Unix existieren drei Dateiarten:
Directories d Inhaltsverzeichnisse Normale Dateien - können Daten aller Art enthalten Spezielle Dateien Gerätedateien c charakter-orientierte Gerätedateien b block-orientierte Gerätedateien p named pipes für die Prozesskommunikation
Die mittlere Spalte zeigt für den entsprechenden Dateityp den Kennbuchstaben, der bei einem ausführlichen Directory-Listing ausgegeben wird. Das Kommando dazu lautet ls -l.
rrzc2> ls -l -rw-r--r-- 1 puw09523 rz 4 Oct 11 1996 hugo -rw-r--r-- 1 puw09523 rz 33 Oct 11 1996 rudi lrwxrwxrwx 1 puw09523 rz 4 Oct 11 1996 sara -> hugo
Die einzelnen Spalten der Ausgabe haben folgende Bedeutung:
-rw-r--r-- das erste Bit dokumentiert den Typ der Datei, in den neun folgenden Bits ist der Zugriffsschutz gespeichert 1 Anzahl der Hardlinks auf die Datei puw09523 Datei-Eigentümer rz Zuordnung zu einer Gruppe (i.d.R. die Login-group) 4 Grösse der Datei in Bytes Oct 11 1996 Datum der letzten Modifikation hugo Dateiname
Als Hardlink versteht man einen Verweis von einer Datei auf eine andere Datei. Die Dateinamen können unterschiedlich sein. Der Inhalt dagegen ist identisch. Hardlinks können nur zwischen Dateien des gleichen Filesystems geschlossen werden. Zeigt kein Verweis auf eine Datei, so ist die Anzahl der Hardlinks dieser Datei gleich 1. Hardlinks werden mit dem Kommando ln vorhandene_Datei neue_Datei angelegt.
Es gibt noch eine andere Art von Verweisen: Symbolic Links. Bei Symbolic Links erscheint als Typkennzeichnung ein l im Directory-Listing (siehe oben). Mit Symbolic Links können sowohl Verweise zu Dateien als auch zu Directories geschlossen werden. Im Gegensatz zu den Hardlinks können Symbolic Links auch über die Grenzen von Filesystemen hinausreichen. Symbolic Links werden erzeugt mit dem Kommando ln -s Ziel Quelle.
Dateinamen dürfen unter Unix aus maximal 256 Zeichen bestehen. Es sind grundsätzlich alle Zeichen erlaubt auch Sonder- und Kontrollzeichen. Auf Dateinamen mit nicht darstellbaren Zeichen sollte allerdings verzichtet werden.
Beispiele:
'1 2 345' 'Heute ist Dienstag' 'X' 'g*:8' 'ha.ha.ha.ha' 'programm'
In obiger Liste ist der Dateiname jeweils von Hochkommas eingeschlossen. Eine Aufteilung in Dateiname und Dateiextension, wie unter DOS, gibt es nicht.
Achtung: Auch bei Dateinamen gilt: UNIX unterscheidet Gross- und Kleinschreibung !!!
Die freie Wahl von Dateinamen hat natürlich dort seine Grenzen, wo für bestimmte Zwecke Dateinamen-Konventionen bestehen. So werden z.B. C-Quelldateien mit der Endung .c gekennzeichnet, Fortran-Quellen enden mit .f und Objektdateien mit .o. Ferner gibt es unter Unix eine Reihe von Dateien, die mit einem Punkt beginnen (sog. Dot-files). Diese Dot-files werden auch ``hidden files`` genannt und fungieren primär als setup-files (.login, .cshrc). Sie sind mit dem Kommando ls -a aufzulisten. In der Dateihierarchie können Dateien und Directories sowohl absolut als auch relativ benannt werden. So bezeichnet /home/rrzc1/stud/otto/briefe/hugo.txt den absoluten, briefe/hugo.txt bzw. ./briefe/hugo.txt den relativen Pfad zur Datei hugo.txt.
Anhand einiger Beispiele soll im folgenden die Dateinamen-Expandierung mittels Metazeichen demonstriert werden. Diese Spezialzeichen und ihre Wirkung wurden bereits in Abschnitt 2.6 vorgestellt. Als Ausgangspunkt wird ein Subdirectory namens text und in diesem Subdirectory die Dateien alfred, berta, c1, c2, c3, christa, g*:8 und zorro erzeugt. Als Kommando wird das Auflisten mit ls verwendet.
rrzc2> ls -l c* alle Dateien, die mit c beginnen rrzc2> ls -l ??r* alle Dateien, die als dritten Buchstaben ein r besitzen rrzc2> ls -l ????? alle Dateien, die genau aus 5 Zeichen bestehen rrzc2> ls -l [ab]* alle Dateien, die mit a oder b beginnen rrzc2> ls -l c[13]* die Dateien c1 und c3 rrzc2> ls -l [c-z]* alle Dateien, deren erster Buchstabe zwischen c und z liegt rrzc2> ls -l ?[e-h]* alle Dateien, deren zweiter Buchstabe zwischen e und h liegt rrzc2> ls -l ?[*]* alle Dateien, deren zweiter Buchstabe ein * ist rrzc2> ls -l ?\** alle Dateien, deren zweiter Buchstabe ein * ist rrzc2> ls -al ~ alle Dateien im HOME-Directory rrzc2> ls -l *{red,sta} alle Dateien, die mit den strings red und sta enden rrzc2> ls -l . alle Dateien im aktuellen Directory rrzc2> ls -l .. alle Dateien im übergeordneten Directory
Zum Knobeln: Wie müsste der ls-Befehl aussehen, wenn man damit alle Dateien auflisten wollte, die als zweites Zeichen ein Leerzeichen besitzen?
