理解Linux中的文件种类和扩展名

文件种类

任何设备在Linux下面都是文件, 不仅如此,连数据沟通的接口也有专属的文件在负责。文件种类除了一般文件(-)和目录文件(d)的文件还有哪些?可以分为几下几类。

  • 正规文件(regular file):就是一般我们在进行存取的类型的文件,在由 ls -al 所显示出来的属性方面,第一个字符为 [ - ],例如 [-rwxrwxrwx ]。另外,依照文件的内容,又大略可以分为:

    • 纯文本文件(ASCII):内容为人类可以直接读到的数据,例如数字字母等等。
    • 二进制文件(binary):操作系统仅仅可以认识和执行的二进制文件。例如vimcat等常见命令都是对应二进制文件。
    • 数据格式文件(data file):有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的Linux在使用者登陆时,都会将登录的数据记录在 /var/log/wtmp那个文件内,该文件是一个data file,他能够通过last这个指令读出来。 但是使用cat时,会读出乱码,因为它是属于一种特殊格式的文件。
  • 目录(directory):目录。第一个属性为 [ d ],例如 [drwxrwxrwx]。

  • 链接文件(link): linux下的链接,分为硬链接和软链接,软链接类似Windows系统下面的快捷方式。 第一个属性为 [ l ],例如 [lrwxrwxrwx] ;

  • 设备与设备文件(device): 与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下!通常又分为两种:
    • 区块(block)设备文件 :就是一些储存数据, 以提供系统随机存取的周边设备,例如硬盘与软盘等就是这种。 可以随机的在硬盘的不同区块读写,这种设备就是区块设备。查一下/dev/sda看看, 会发现第一个属性为[ b ]Screen Shot 2018-10-04 at 1.57.09 PM
    • 字符(character)设备文件:亦即是一些序列埠的周边设备, 例如键盘、鼠标等等。这些设备的特点就是“一次性读取”的,不能够截断输出。 举例来说,你不可能让鼠标“跳到”另一个画面,而是“连续性滑动”到另一个地方。第一个属性为 [ c ]。
  • 数据接口文件:这种类型的文件通常被用在网络上的数据承接。我们可以启动一个程序来监听用户端的要求, 而用户端就可以通过这个socket来进行数据的沟通了。第一个属性为 [ s ], 最常在/run或/tmp这些个目录中看到这种文件类型了。

  • 数据输送档(FIFO, pipe): FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p] 。

文件扩展名

我们知道了Linux下的文件是通过x字段来判断是否可执行,那么文件扩展名例如xx.shxx.tar.gz又有何作用?

答案是没有作用。Linux下的文件扩展名与Windows下的文件扩展名不同,它没有任何实际意义,仅仅是用于表示该文件的种类,即使去掉扩展名,也不会影响它的功能。