Alex_McAvoy

想要成为渔夫的猎手

Linux 文件类型与扩展名

【文件类型】

之前在 Linux 文件属性 中介绍了使用 ls 命令显示出文件属性的第一列代表了文件类型和文件权限,下面详细介绍一下文件的类型

目录文件(Directory):代表一个目录,以 [d] 来标识

普通文件(Regular File):一般进行访问类型的文件,以 [-] 来标识

  • 纯文本文件(ASCII):内容为可直接读到的数据,是最多的一种文件类型,只要可以用来作为设置的文件都属于这种类型
  • 二进制文件(Binary):可执行文件
  • 数据格式文件(Data):某些程序运行过程时读取的某些特定格式的文件

连接文件(Link):类似 Windows 中的快捷方式,以 [l] 来标识

设备与设备文件(Device):与系统外设及存储相关的文件,通常集中在 /dev 目录下,其分为两种

  • 块设备文件(Block):是一些存储数据以提供系统随机访问的接口设备,可以随机地在硬盘的不同块读写,例如硬盘、软件等,以 [b] 来标识
  • 字符设备文件(Character):串行端口的接口设备,是一次性读取的,无法截断输出,例如键盘、鼠标等,以 [c] 来标识

套接字(Socket):数据接口文件,用于在网络上的数据连接,通常位于 /var/run 目录下,以 [s] 来标识

管道(Pipe,FIFO):用于解决多个程序同时访问一个文件所造成的错误问题,以 [p] 来标识

【文件扩展名】

在 Linux 中,一个文件能不能被执行,只于它第一列的文件类型和文件权限来决定,只要权限中具有 x 的话,就能被执行,故而一个文件是否能被执行是与文件名无关的

但可以被执行和可以执行成功是不一样的,一个可执行文件能否执行成功,要看文件的内容。举例来说,一个权限为 -rwxrwxrwxinstall.log 文件,其可以被执行,但其是一个文本文件,其内容没有可执行的数据

因此,在 Linux 中基本上是没有所谓的文件扩展名,但我们仍希望可以由扩展名来了解文件是什么东西,故而通常会以适当的扩展名来表示文件是什么种类的

常见的扩展名有:

  • *.sh:脚本或批处理文件
  • *Z、*.tar、*.tar.gz、*.zip、*.tgz:打包的压缩文件
  • *.html、*.php:网页相关文件
  • *.jpg:JPEG 图像文件
  • *.png:PNG 图像文件
  • *.pdf:PDF 文档
  • *.txt:文本文件
  • *.log:日志文件
  • *.conf:程序配置文件
  • *.lock:程序锁定文件,用于检测某个程序在执行或者某个设备或者资源正在使用
  • *.rpm:RedHat 的软件包管理器文件,用于安装软件

【文件名限制】

文件名限制

由于 Linux 在字符界面下的一些命令操作关系,一般来说,在设置 Linux 下的文件名时,最好避免以下在命令行界面下有特殊含义的字符:
*?<>;&![]|\'"(){}

同时,由于命令执行过程中,常会用到 -option 类的参数,因此也避免将文件名开头设置为 -+

此外,文件名开头为 . 时,代表这个文件为隐藏文件

文件名长度限制

在 Linux 中,使用默认的 Ext2/Ext3 系统时,针对文件的文件名限制为:

  • 单一文件或目录的最大容量为:255 个字符
  • 包含完整路径名称及目录的完整文件名的最大容量为:4096 个字符

【路径的文件名与目录名】

包含完整路径的文件名最长可达 4096 个字符,利用 / 可分辨文件名和路径名

在实际应用中,可以利用 basename 命令来取得文件名,利用 dirname 命令来取得目录名

实例:对于完整路径 /test/temp/test.txt,获得其文件名和目录名

感谢您对我的支持,让我继续努力分享有用的技术与知识点!