【文件类型】
之前在 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
的话,就能被执行,故而一个文件是否能被执行是与文件名无关的
但可以被执行和可以执行成功是不一样的,一个可执行文件能否执行成功,要看文件的内容。举例来说,一个权限为 -rwxrwxrwx
的 install.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,获得其文件名和目录名