In letzter Zeit bin ich auf einige Linux-Befehle gestoßen, während ich mich bei meinem Kunden eingeloggt habe, um die Aktivitätsprotokolldatei abzurufen, und ich habe auch einige der Linux-Dateitypen studiert, und einen einfachen Befehl, um zu wissen, was die Dateitypen unter Linux Operating System sind.
Linux verwendet vier grundlegende Dateitypen:
- gewöhnliche Dateien
- Verzeichnisse
- symbolische Links
- Block- und Zeichengerätedateien
Den Typ einer Datei bestimmt man, indem man den Befehl ls -l ausführt und das erste Zeichen jeder Zeile der Ausgabe liest.
Die typische Ausgabe des ls-Befehls sieht wie folgt aus:
$ ls -l
insgesamt 8
-rw-r-r- 1 root root 22 Oct 6 15:33 anormalfile
brw-rw– 2 root disk 41, 0 Mai 5 1998 blockdev
crw-rw-rw- 2 root root 5, 0 Mai 5 1998 characterdev
drwxr-xr-x 2 root root 4096 Okt 6 15:33 subdir
lrwxrwxrwx 1 root root 11 Oct 6 15:35 symbolic -> anormalfile
Ordinäre Dateien beginnen mit einem Bindestrich (-), Verzeichnisse beginnen mit d, symbolische Links beginnen mit dem Buchstaben l, Blockdevices werden mit dem Buchstaben b eingeleitet, und Characterdevices beginnen mit dem Buchstaben c.
Gewöhnliche Dateien
Eine gewöhnliche Datei kann aus jeder Art von Daten bestehen, einschließlich ausführbarer Programme. Die meisten Dateien im Linux-Dateisystem sind von diesem Typ.
Verzeichnisse
Ein Verzeichnis ist eine Datei, die andere Dateien und Verzeichnisse enthält und Zeiger auf sie bereitstellt.
Es erfüllt eine ähnliche Funktion wie ein Ordner in einem Aktenschrank, indem es Ihnen ermöglicht, zusammengehörige Dateien in einer organisierten Weise zu gruppieren. Während Ordner jedoch normalerweise nur Dateien enthalten können, können Verzeichnisse zusätzliche Verzeichnisse enthalten, die oft als Unterverzeichnisse bezeichnet werden.
Symbolische Links
Ein symbolischer – oder weicher – Link verweist auf den Namen und den Ort einer völlig separaten Datei. Wenn Sie also den Link öffnen, kopieren, verschieben oder anderweitig darauf verweisen, wird die Operation tatsächlich an der referenzierten Datei durchgeführt. Diese Unterscheidung ist für den Benutzer normalerweise nicht sichtbar. Wenn die referenzierte Datei entfernt oder umbenannt wird, ist die Verknüpfung unterbrochen und es tritt ein Fehler auf, wenn Sie versuchen, sie zu öffnen.
Sie können auch harte Verknüpfungen erstellen. Ein Hardlink verweist auf die tatsächlichen Daten in einer Datei, genau wie eine normale Datei. Abgesehen vom Namen gibt es also keinen Unterschied zwischen der Originaldatei und einem Hardlink, der auf dieselben Daten verweist, und beide können als normale Dateien betrachtet werden. Sie können einen Hardlink von jeder anderen normalen Datei nur durch die Anzahl der Links unterscheiden, die jeder hat. Die Anzahl der Links wird im zweiten Feld einer ls -l Auflistung angezeigt. Wenn diese Zahl größer als eins ist, dann wissen Sie, dass es zusätzliche harte Links zu den Daten gibt.
Gerätedateien
Alle physischen Geräte, die Linux verwendet, werden durch Gerätedateien repräsentiert.
Gerätedateien können als zeichenspezifische oder blockspezifische Dateien klassifiziert werden. Zeichenspezifische Dateien repräsentieren Geräte, die mit Linux auf einer Zeichen-für-Zeichen- oder seriellen Basis interagieren. Drucker und Terminals sind Beispiele für diese Art von Geräten. Blockspezialdateien stehen für Geräte wie Festplatten, Disketten und CD-ROMs, die mit Linux auf der Basis von Datenblöcken interagieren.
Alle Gerätedateien befinden sich im Verzeichnis /dev – die Datei, die dem ersten Diskettenlaufwerk des Systems zugeordnet ist, heißt beispielsweise /dev/fd0.
Gerätedateien sind extrem leistungsfähig, da sie den Benutzern den Zugriff auf Hardwaregeräte wie Festplatten, Modems und Drucker ermöglichen, als wären es Datendateien. Daher können Sie Daten zwischen solchen Geräten einfach verschieben, kopieren und übertragen, oft ohne spezielle Befehle oder Syntax verwenden zu müssen.
Dateinamen und Pfadnamen
Jeder Datei wird ein Dateiname zugewiesen, der bis zu 256 Zeichen lang sein kann. Dieser Name kann aus einer Mischung aus Groß- und Kleinbuchstaben, Zahlen und bestimmten Interpunktionszeichen wie Punkt, Bindestrich oder Unterstrich bestehen.
Bestimmte Zeichen können in Dateinamen nicht verwendet werden. Sie können zum Beispiel keine Zeichen verwenden, die ein Feldtrennzeichen darstellen – wie ein Komma – oder andere Sonderzeichen, die für die Shell eine besondere Bedeutung haben. Die Sonderzeichen, die Sie nicht verwenden können, sind
! @ # $ % ^ & * ( ) { } ‚ “ \ / | ; < > ‚
Pfadnamen
Sie können auf der Kommandozeile zwischen Verzeichnissen navigieren, indem Sie Pfadnamen verwenden. Um Pfadnamen zu verwenden, müssen Sie die Verzeichnisstruktur des Linux-Dateisystems verstehen. Das oberste Verzeichnis im Linux-Dateisystem ist das Stammverzeichnis, das durch einen Schrägstrich (/) dargestellt wird. Unterhalb des Stammverzeichnisses befinden sich die Verzeichnisse der obersten Ebene, gefolgt von einer oder mehreren Unterverzeichnisebenen.
Dateistruktur eines Linux-Dateisystems
Sie können sich zwischen Verzeichnissen mit relativen oder absoluten Pfadnamen bewegen.
Ein relativer Pfadname beginnt mit Ihrem aktuellen Verzeichnis. Wenn Sie zum Beispiel von Ihrem Heimatverzeichnis aus in das Ausgabenverzeichnis wechseln wollen, geben Sie ein
cd Ausgaben
Relative Pfadnamen können mit dem Namen einer Datei oder eines Verzeichnisses beginnen oder mit symbolischen Verweisen auf das aktuelle Verzeichnis (.) oder das übergeordnete Verzeichnis (..) beginnen, aber niemals mit einem Schrägstrich.
Ein einfaches Beispiel für ein Linux-Dateisystem
Ein absoluter Pfadname zeigt den vollständigen Pfadnamen vom Stammverzeichnis (/) an. Mit dem folgenden Befehl können Sie zum Beispiel von Ihrem aktuellen Verzeichnis direkt in das Unterverzeichnis applic im Verzeichnis usr wechseln, das sich unter dem Stammverzeichnis befindet:
cd /usr/applic
Inodes, Blöcke und spezielle Dateien
Inodes
Jeder Datei ist eine eindeutige Inode-Nummer zugeordnet. Ein Inode ist eine Struktur, die den Speicherort und die Attribute der Datei definiert. Sie können die Inode-Nummer einer Datei mit der Option -i des Befehls ls überprüfen. Sie können die Informationen, die der Inode einer Datei enthält, mit der Syntax stat filename anzeigen. Diese Befehlsausgabe (stat results) zeigt die Informationen über die Inode der Datei „results“ an.
$ stat results
Datei: „results“
Größe: 8
Dateityp: Regular file
Mode: (0644/-rw-r–r–)
Uid: ( 0/ root)
Gid: ( 0/ root)
Device: 3,7 Inode: 123256 Links: 1
Zugriff: Tue Jul 25 16:45:00 2000 (00072.18:31:07)
Modify: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
Ändern: Thu Jul 20 12:35:20 2000 (00077.22:40:47)
In diesem Beispiel werden unter anderem der Dateityp, die Dateigröße, die Benutzer-ID (UID) des Eigentümers, die Anzahl der mit der Datei verknüpften Hardlinks sowie die Erstellungs-, Zugriffs- und Änderungszeiten der Datei angezeigt.
Eine Inode speichert nicht den Namen einer Datei. Dateinamen werden in Verzeichnissen mit ihren zugehörigen Inode-Nummern gespeichert. Im Beispiel des stat-Befehls wird der Name der Datei aus dem von Ihnen eingegebenen Parameter filename ermittelt.
Blöcke
Im Linux-Dateisystem werden Dateien in Blöcken gespeichert, d.h. in gleich großen Segmenten des Festplattenplatzes. Im Allgemeinen variiert die Größe eines Blocks zwischen 512 Byte und 32 KB, je nach Linux-Installation. Die maximale Größe einer Datei hängt von der im Dateisystem verwendeten Blockgröße ab. Beispielsweise beträgt die maximale Dateigröße für ein ext2-Dateisystem 2 GB, wenn es 512-Byte-Blöcke verwendet.
Datenträgersysteme rufen Daten in blockgroßen Abschnitten ab, d. h. je größer die Blockgröße, desto effizienter der Zugriff. Das Problem bei der Erstellung großer Blöcke ist, dass sie Speicherplatz verschwenden können. Wenn die Blockgröße z. B. 4 KB beträgt und die meisten Dateien nur wenige Bytes an Daten enthalten, wird der meiste der 4096 Bytes an Speicherplatz für jede Datei verschwendet. Wenn Sie jedoch die Blockgrößen klein halten, ist der Plattenzugriff relativ weniger effizient.
Einige Befehle, wie z.B. df, geben Platteninformationen in 1 KB-Blöcken aus, auch wenn die Installation Dateien in einer anderen Blockgröße speichert. Eine einfache Möglichkeit, die Blockgröße Ihres Systems zu überprüfen, ist die Verwendung des Befehls du, um die Festplattennutzung anzuzeigen. In diesem Beispiel wird die Festplattennutzung für alle Dateien, die mit „m“ beginnen, angezeigt.
$ du -h m*
36k mail
4.0k mail.rc
12k mailcap
12k mailcap.vga
4.0k man.config
4.0k mc.global
148k midi
40k mime-magic
104k mime-magic.dat
8.0k mime.types
4.0k minicom.users
0 motd
4.0k mtab
In diesem Beispiel zeigt die Ausgabe des du-Befehls die Dateigrößen auf der Festplatte in Schritten der Blockgröße an, die in diesem Fall 4,0 KB beträgt. Eine Ausnahme von dieser Regel ist, wenn Null angezeigt wird, was bedeutet, dass die Datei vollständig leer ist.
Spezialdateien
Neben anderen Dateitypen verwendet Linux auch Spezialdateien, d. h. systemdefinierte Dateien, die beim Zugriff einzigartige Funktionen ausführen.
Spezialdateien und ihre Funktionen
Wenn Sie zum Beispiel unerwünschte Ausgaben eines Befehls loswerden wollen, können Sie die Ausgabe in die Datei /dev/null umleiten. In diesem Beispiel werden alle Fehler, die durch den Befehl find erzeugt werden, von stderr nach /dev/null umgeleitet.
$ find / -n myfile 2> /dev/null