文件类型
Unix/Linux对数据文件(.mp3、.bmp),程序文件(.c、.h、*.o),设备文件(LCD、触摸屏、鼠标),网络文件( socket ) 等的管理都抽象为文件,使用统一的方式方法管理。 Linux下一切皆文件。
在Unix/Linux操作系统中也必须区分文件类型,通过文件类型可以判断文件属于可执行文件、文本文件还是数据文件。在Unix/Linux系统中文件可以没有扩展名。
文件类型分类
通常,Unix/Linux系统中常用的文件类型有7种:普通文件、目录文件、设备文件、管道文件、链接文件和套接字。
1)普通文件
普通文件是计算机操作系统用于存放数据、程序等信息的文件,一般都长期存放于外存储器(磁盘、磁带等)中。普通文件一般包括文本文件、数据文件、可执行的二进制程序文件等。
在Unix/Linux中可以通过file命令来查看文件的类型。如果file文件后面携带文件名,则查看指定文件的类型,如果携带通配符“*”,则可以查看当前目录下的所有文件的类型。
2)目录文件
Unix/Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
目录文件只允许系统管理员对其进行修改,用户进程可以读取目录文件,但不能对它们进行修改。
每个目录文件至少包括两个条目,“…”表示上一级目录,“.”表示该目录本身。
3)设备文件
Unix/Linux系统把每个设备都映射成一个文件,这就是设备文件。它是用于向I/O设备提供连接的一种文件,分为字符设备和块设备文件。
字符设备的存取以一个字符为单位,块设备的存取以字符块为单位。每一种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器对应/dev/fd0。
deng@itcast:~/share$ echo "hello world" > /dev/pts/22 hello world
4)管道文件
管道文件也是Unix/Linux中较特殊的文件类型,这类文件多用于进程间的通信。
5)链接文件
似于 windows 下的快捷方式,链接又可以分为软链接(符号链接)和硬链接。
示例:
普通文件
deng@itcast:~/test$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2372 3月 21 22:48 /etc/passwd
目录文件
deng@itcast:~/test$ ls -ld /etc
drwxr-xr-x 134 root root 12288 5月 28 11:28 /etc
字符设备
deng@itcast:~/test$ ls -l /dev/input/mouse0
crw-rw---- 1 root input 13, 32 5月 26 17:01 /dev/input/mouse0
块设备
deng@itcast:~/test$ ls -l /dev/sda1
brw-rw---- 1 root disk 8, 1 5月 26 17:01 /dev/sda1
创建一个管道文件
deng@itcast:~/test$ mkfifo fifo
deng@itcast:~/test$ ls -l fifo
prw-rw-r-- 1 deng deng 0 5月 28 11:59 fifo
符号链接
deng@itcast:~/test$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 11月 17 2017 /bin/sh -> dash
deng@itcast:~/test$
套接字文件
deng@itcast:~/tmp/test$ ls -l /run/systemd/notify
srwxrwxrwx 1 root root 0 8月 8 11:00 /run/systemd/notify