Eine reguläre Datei ist ein Dateityp, der in einem Dateisystem gespeichert ist. Es wird hauptsächlich als “normal” bezeichnet, um es von anderen speziellen Dateitypen zu unterscheiden.
Die meisten Dateien, die direkt von einem menschlichen Benutzer verwendet werden, sind normale Dateien. Beispielsweise sind ausführbare Dateien, Textdateien und Bilddateien normale Dateien.
Wenn Daten aus einer regulären Datei gelesen oder in eine reguläre Datei geschrieben werden, führt der Kernel diese Aktion gemäß den Regeln des Dateisystems aus. Zum Beispiel können Schreibvorgänge verzögert, aufgezeichnet oder anderen speziellen Operationen unterzogen werden.
Linux-Dateitypen
Im Linux-Kernel werden Dateitypen in der Header-Datei sys/stat.h deklariert. Der Typname, der symbolische Name und die Bitmaske für jeden Linux-Dateityp sind unten aufgeführt.
Modellname | Symbolischer Name | Bitmaske |
---|---|---|
Steckdose | S_IFSOCK | 0140000 |
Symbolischer Link | S_IFLNK | 0120000 |
Normale Datei | S_IFREG | 0100000 |
Spezielle Datei blockieren | S_IFBLK | 0060000 |
Verzeichnis | S_IFDIR | 0040000 |
Zeichengerät | S_IFCHR | 0020000 |
FIFO (benannte Pipe) | S_IFIFO | 0010000 |
Wie kann ich feststellen, ob eine Datei regulär ist?
In Bash gibt der Befehl “test -f file” einen Exit-Status von 0 zurück, wenn file eine reguläre Datei ist. Es gibt 1 zurück, wenn die Datei einen anderen Typ hat oder nicht existiert.
test -f /etc/passwd; echo $? # check for regular file, echo exit status of test
0
test -f /etc; echo $? # directories are not regular files, so test fails
1
file="/etc/passwd"; # assign filename, enclosed in "", to variable named file if test -f "$file"; # reference its value with $. Enclose expansion in "" then # this part will run if test returns 0 echo "$file is a regular file."; else # this part will run if test returns anything else echo "$file is not a regular file, or does not exist."; fi
/etc/passwd is a regular file.
Sie können den Typ einer Datei auch mit stat überprüfen:
stat /etc/passwd
File: /etc/passwd Size: 2234 Blocks: 8 IO Block: 4096 regular file Device: 801h/2049d Inode: 132814 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-07-06 08:45:49.960000000 -0400 Modify: 2018-03-14 23:46:25.048004001 -0400 Change: 2018-03-14 23:46:25.052004001 -0400 Birth: -
Inode, Betriebssystembegriffe, Standardeingabe (stdin), Standardausgabe (stdout)