Linux文件类型

Linux中的文件分为:普通文件、目录文件、链接文件和设备文件。

1、普通文件
普通文件分为文本文件和二进制文件。

文本文件:以文本的ASCII码形式存储在计算机中。

二进制文件:以二进制形式存储在计算机中。

通过file命令可以用来判断文件类型。

举例:

file /bin/cp
/bin/cp: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

2、目录文件
目录文件主要的目的是用于管理和组织系统中的大量文件。它存储一组相关文件的位置、大小等与文件有关的信息。

3、链接文件
链接文件分为软链接和硬链接。

软链接又叫符号链接,这个文件指向另一个文件的文件名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接类似与windows中的快捷方式。删除一个软链接文件仅仅删除链接文件本身,不删除源文件。

硬链接指向源文件的inode节点,相当于两个指针指向同一块磁盘区域,如果删除了源文件,硬链接还保留了inode节点,文件还是存在的。

通过ln命令建立链接。

举例,现有一个test.txt文件:

ln -s test.txt test.lnk
ln test.txt test.hlk
ls -i
655513 -rw-r--r-- 2 root root     106 Sep  16 08:27 test.txt
655513 -rw-r--r-- 2 root root     106 Sep  16 08:27 test.txt.hlk
655512 lrwxrwxrwx 1 root root       8 Sep  16 08:29 test.txt.lnk -> test.txt


我们可以看到硬链接文件和源文件的inode是一样的,而软链接文件有自己的inode和文件大小。

4、设备文件
设备文件是Linux系统很重要的一个特色。Linux系统把每一个I/O设备都看成一个文件,与普通文件一样处理,这样可以使文件与设备的操作尽可能统一。从用户的角度来看,对I/O设备的使用和一般文件的使用一样,不必了解I/O设备的细节。设备文件分为块设备、字符设备、有名管道。

块设备的主要特点是可以随机读写,存取是以一个个字符块问单位的,它利用一块系统内存作缓冲区,对用户操作的数据进行缓存,减少实际的I/O操作。最常见的块设备就是磁盘,块设备文件一般存放在/dev/目录下。

字符设备的存取以单个字符为单位,不对数据进行缓存,当用户进程发出操作指定后,直接对硬件进行I/O操作。最常见的字符设备是打印机和终端,字符设备文件和块设备文件一样,一般也存放在/dev/目录下。

管道设备文件也被叫做FIFO文件(FIFO是先进先出),管道设备文件就是从一头流入,从另一头流出。有名管道是为了解决无名管道只能用于近亲进程之间通信的缺陷而设计的。有名管道是建立在实际的磁盘介质或文件系统(而不是只存在于内存中)上有自己名字的文件,任何进程可以在任何时间通过文件名或路径名与该文件建立联系。