Linux——文件种类与扩展名

文件种类

用『ls -l』看到第一栏那十个字符中,第一个字符为文件的类型。 除了常见的一般文件(-)与目录文件(d)外,还有以下文件种类:

1、正规文件(regular file )

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

  • 纯文本档(ASCII):这是 Linux 系统中最多的一种文件类型啰, 称为纯文本档是因为内容为我们人类可以直接读到的数据,例如数字、字母等等。 几乎只要我们可以用来做为设定的文件都属于这一种文件类型。 举例来说,你可以下达『 cat ~/.bashrc 』就可以看到该文件的内容。 (cat 是将一个文件内容读出来的指令)
  • 二进制文件(binary)Linux的可执行文件(scripts, 文字型批处理文件不算)就是这种格式~如下达指令 cat 就是一个binary file
  • 数据格式文件(data): 有些程序在运作的过程当中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件 (data file)。举例来说,我们的 Linux 在使用者登入时,都会将登录的数据记录在 /var/log/wtmp 那个文件内,该文件是一个 data file,他能够透过 last 这个指令读出来! 但是使cat 时,会读出乱码~因为他是属于一种特殊格式的文件。

2、目录(directory)

就是目录啰~第一个属性为 [ d ],例如 [drwxrwxrwx]

3、连结档(link)

就是类似 Windows 系统底下的快捷方式啦! 第一个属性为 [ l ](英文 L 的小写),例如 [lrwxrwxrwx]

4、设备与装置文件(device)

与系统周边及储存等相关的一些文件, 通常都集中在/dev 这个目录之下!通常又分为两种:

  • 区块(block)设备档 :就是一些储存数据, 以提供系统随机存取的接口设备,举例来说,硬盘与软盘等就是啦! 你可以随机的在硬盘的不同区块读写,这种装置就是成组设备啰!你可以自行查一下/dev/sda 看看, 会发现第一个属性为[ b ]喔!
  • 字符(character)设备文件:即一些串行端口的接口设备, 如键盘、鼠标等等!这些设备的特色就是『一次性读取』的,不能够截断输出。 举例来说,你不可能让鼠标『跳到』另一个画面, 而是『连续性滑动』到另一个地方啊!第一个属性为 [ c ]

5、资料接口文件(sockets)

既然被称为数据接口文件, 这种类型的文件通常被用在网络上的数据承接了。我们可以启动一个程序来监听客户端的要求, 而客户端就可以透过这个 socket 来进行数据的沟通了。第一个属性为 [ s ], 最常在/run /tmp 这些个目录中看到这种文件类型了。

6、数据输送文件(FIFO, pipe)

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

除了设备文件是系统中很重要的文件,最好不要随意修改之外(通常他也不会让你修改), 另一个比较有趣的文件就是连结档。如你常常将应用程序捉到桌面来的话,你就应该知道在Windows 底下有所谓的『快捷方式』。同样的,你可以将 linux 下的连结档简单的视为一个文件或目录的快捷方式。 至于 socket FIFO 文件比较难理解,因为这两个咚咚与程序(process)比较有关系, 这个等到未来你了解 process 之后,再回来查阅吧!此外, 你也可以透过 man fifo man socket 来查阅系统上的说明!

Linux 文件扩展名

基本上Linux 的文件是没有所谓『扩展名』的,一个 Linux 文件能不能被执行,与他的第一栏的十个属性有关,与文件名根本一点关系也没有。这个观念跟 Windows 的情况不相同喔!在 Windows 底下, 能被执行的文件扩展名通常是 .com .exe .bat 等等,而在 Linux 底下,只要你的权限当中具有 x 的话,例如[ -rwxr-xr-x ] 即代表这个文件具有可以被执行的能力喔

注意:具有『可执行的权限』以及『具有可执行的程序代码』是两回事!在 Linux 底下,可以让一个文本文件,例如我们之前写的 text.txt 具有『可执行的权限』 (加入 x 权限即可), 但是这个文件明显的无法执行,因为他不具备可执行的程序代码!而如果你将上面提到的 cat 这个可以执行的指令,将他的 x 拿掉, 那么 cat 将无法被你执行!不过,可以被执行跟可以执行成功是不一样的~如在 root 家目录下的 initial-setup-ks.cfg 是一个纯文本档,如果经由修改权限成为 -rwxrwxrwx 后,这个文件能够真的执行成功吗? 当然不行~ 因为他的内容根本就没有可以执行的数据。所以说,这个 x 代表这个文件具有可执行的能力, 但是能不能执行成功,当然就得要看该文件的内容啰~

虽然如此,不过我们仍然希望可以藉由扩展名来了解该文件是什么东西,所以, 通常我们还是会以适当的扩展名来表示该文件是什么种类的。底下有数种常用的扩展名:

  • *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用 shell 写成的,所以扩展名就编成 .sh  啰;
  • *Z, *.tar, *.tar.gz, *.zip, *.tgz: 经过打包的压缩文件。这是因为压缩软件分别为 gunzip, tar 等等的,由于不同的压缩软件,而取其相关的扩展名啰!
  • *.html, *.php:网页相关文件,分别代表 HTML 语法与 PHP 语法的网页文件啰! .html 的文件可使用网页浏览器来直接开启,至于 .php 的文件, 则可以透过 client 端的浏览器来 server 端浏览,以得到运算后的网页结果呢!

基本上,Linux 系统上的文件名真的只是让你了解该文件可能的用途而已,真正的执行与否仍然需要权限的规范才行!例如虽然有一个文件为可执行文件, 如常见的/bin/ls 这个显示文件属性的指令, 不过,如果这个文件的权限被修改成无法执行时, 那么 ls 就变成不能执行啰!

上述这种问题最常发生在文件传送的过程中。如在网络上下载一个可执行文件,但偏偏在你Linux 系统中就是无法执行!那么就是可能文件的属性被改变了!不要怀疑,从网络上传送到你的 Linux 系统中,文件的属性与权限确实是会被改变的喔!

Linux 文件长度限制

Linux下,使用传统的 Ext2/Ext3/Ext4 文件系统和被CentOS 7当作预设文件系统的 xfs而言,针对文件的档名长度限制为:

  • 单一文件或目录的最大容许文件名为 255bytes,以一个 ASCII 英文占用一个 bytes 来说,则大约可达 255个字符长度。若是以每个中文字占用 2bytes 来说, 最大档名就是大约在 128  个中文字之谱!

是相当长的档名喔!我们希望 Linux 的文件名可以一看就知道该文件在干嘛的, 所以档名通常是很长很长!而用惯了 Windows 的人可能会受不了,因为文件名通常真的都很长, 对于用惯 Windows 而导致打字速度不快的朋友来说,嗯!真的是很困扰。

Linux 文件名的限制

由于 Linux 在文字接口下的一些指令操作关系,一般来说,你在设定 Linux 底下的文件名时, 最好可以避免一些特殊字符比较好,因为这些符号在文字接口下,是有特殊意义的!例如:* ? > < ; & ! [ ] | \ ' " ` ( ) { }

注意:文件名的开头为小数点『.』时, 代表这个文件为『隐藏档』喔!同时,由于指令下达当中,常常会使用到 -option  之类的选项, 所以你最好也避免将文件档名的开头以 - 或 + 来命名啊!

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/106784404