首先要牢牢记住一个概念:任何设备在Linux下面都是文件, 不仅如此,连数据沟通的接口也有专属的文件在负责,之前也有说过,ls -l查看文件,-rw-r–r– 第一个字符代表文件的类型。一般文件(-)与目录文件(d),都是之前见过的。
文件种类:
正规文件(regular file )(一般进行存取的文件,-rw-r–r–第一个字符为 [ - ]):
- 纯文本文件(ASCII):这是Linux系统中最多的一种文件类型, 称为纯文本文件是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。
- 二进制(binary):机器可以识别执行的文件,有0和1组成。
- 数据格式文件(data):有些程序在运行的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。Linux在使用者登陆时,都会将登录的数据记录在 /var/log/wtmp那个文件内,该文件是一个data file,他能够通过last这个指令读出来! 但是使用cat时,会读出乱码~因为他是属于一种特殊格式的文件。
目录(directory): 第一个属性为 [ d ],例如 [drwxrwxrwx]。
链接文件(link): 类似Windows系统下面的快捷方式, 第一个属性为 l(L小写) ,例如 [lrwxrwxrwx] ;
设备与设备文件(device): 与系统周边及储存等相关的一些文件, 通常都集中在/dev这个目录之下,通常又分为两种:
- 区块(block)设备文件 :就是一些储存数据, 举例来说,硬盘与软盘等就是, 你可以随机的在硬盘的不同区块读写,这种设备就是区块设备,你可以自行查一下/dev/sda看看, 会发现第一个属性为[ b ]!
- 字符(character)设备文件: 例如键盘、鼠标等等,这些设备的特色就是“一次性读取”的,不能够截断输出。 第一个属性为 [ c]。
数据接口文件(sockets): 既然被称为数据接口文件,这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听用户端的要求, 而用户端就可以通过这个socket来进行数据的沟通了。第一个属性为 [ s ], 最常在/run或/tmp这些个目录中看到这种文件类型了。
数据输送档(FIFO, pipe): FIFO也是一种特殊的文件类型,他主要的目的在解决多个程序同时存取一个文件所造成的错误问题。 FIFO是first-in-first-out的缩写。第一个属性为[p] 。
Linux文件扩展名:
在windows系统,可以根据后缀名exe来判断文件是否为可执行程序,但是在linux中,并没有扩展名,比如文件是否可执行,只需判断第一栏的10个字符是否有x来决定,我也可以写一个可执行程序用png来作为扩展名,linux上的扩展名并不能决定他是什么类型。当然在linux上还是会有适当的扩展名来说明该文件是什么东西。
- *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成的,所以扩展名就编成 .sh 啰;
- Z, .tar, .tar.gz, .zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar等等的,由于不同的压缩软件,而取其相关的扩展名!
- .html, .php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件。
Linux文件长度限制:在Linux下面,使用传统的Ext2/Ext3/Ext4文件系统以及近来被 CentOS 7 当作默认文件系统的
xfs 而言,针对文件的文件名长度限制为:单一文件或目录的最大容许文件名为 255Bytes,以一个 ASCII 英文占用一个 Bytes 来说,则大约可达 255 个字符长度。若是以每个中文字占用 2Bytes 来说, 最大文件名就是大约在 128 个中文字。
Linux文件名称的限制:由于Linux在命令行下的一些指令操作关系,一般来说,你在设置Linux下面的文件名称时,
最好可以避免一些特殊字符比较好比如.,如果将.放到文件名的首位表示该文件为隐藏文件。
