每天一个Linux命令(21):文件类型与扩展名

文件类型和文件名是两个不同的概念。通过一般应用程序创建的文件,比如file.txt、file.tar.gz ,这些虽然要用不同的程序来打开,但放在Linux文件类型中,大多是常规文件(也被称为普通文件)。

一. 文件类型

常见的Linux文件类型有:普通文件、目录文件、字符设备文件、块设备文件、符号链接文件等。

1. 普通文件

我们用ls -lh来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意的是第一个符号是 - ,这样的文件在Linux中就是普通文件。这些文件一般是用一些相关的应用程序创建,比如图像工具、文档工具、归档工具… …. 或 cp工具等,用rm删除这类文件。依照文件内容,普通文件大致可分为:

纯文本文件(ASCII)

这是Linux系统中最多的一种文件类型,其内容为我们人类可直接读取的数据,例如数字、字母等,几乎所有设定的文件都属于这种文件类型。例如,你可以用cat ~/.bashrc 查看该文件内容。

二进制文件(binary)

Linux系统仅识别二进制文件(binary file),可执行文件(scripts, 文字型批处理文件不算)就是这种格式的文件,cat就是一个binary file。

数据格式文件(data)

在运行的过程中,有些程序会读取某些特定格式的文件,这被称为数据文件 (data file)。举例来说,我们在登录Linux时,系统会将登录的数据记录在 /var/log/wtmp,该文件是一个data file,我们通过last读出来。但是使用cat时,会出现乱码,这是因为它是一种特殊格式的文件。

2. 目录文件

当我们在某个目录下执行ls -l,可以看到类似drwxr-xr-x的文件,这就是目录,它的第一个字符是d。我们用mkdir 创建目录 ,用cp复制目录,用rm或rmdir删除目录。

3. 字符设备或块设备文件

当进入/dev目录,列出文件:

# ls -al /dev/tty

crw-rw-rw- 1 root tty 5, 0 11-03 15:11 /dev/tty

# ls -la /dev/sda1

brw-r----- 1 root disk 8, 1 11-03 07:11 /dev/sda1

我们看到/dev/tty的属性是 crw-rw-rw- ,注意前面第一个字符是 c ,这表示字符设备文件。比如猫等串口设备。我们看到 /dev/sda1 的属性是 brw-r—– ,注意前面的第一个字符是b,这表示块设备,比如硬盘,光驱等设备。

这个种类的文件,是用mknode来创建,用rm来删除。目前在最新的Linux发行版本中,我们一般不用自己来创建设备文件,因为这些文件是和内核相关联的。

与系统周边及储存相关的一些文件,通常都集中在/dev下,分为两种:

区块(block)设备文件

提供系统随机存取的接口设备,如硬盘、软盘等。你可以随机地在硬盘的不同区块读写,这种装置就是组设备。你可以用`ls -l查看/dev/sda下的文件,会发现第一个属性为[b]。

字符(character)设备文件:

即一些串行端口的接口设备, 例如键盘、鼠标等。这些设备的特点是一次性读取,不能截断输出。举例来说,你不可能让鼠标跳到另一个画面,而是滑动到另一个地方。你可以用`ls -l查看/dev/sda下的文件,会发现第一个属性为[c]。

4. 数据接口文件(sockets)

数据接口文件(或者:套接字文件),这类文件通常被用于网络数据的承接。我们可以启动一个程序来监听客户端,通过socket,客户端可以进行数据交换。在/var/run目录下,我们看到这种文件类型,它的第一个属性为 [ s ]

当我们启动MySQL服务时,会产生一个mysql.sock文件。

# ls -lh /var/lib/mysql/mysql.sock 
srwxrwxrwx 1 mysql mysql 0 04-19 11:12 /var/lib/mysql/mysql.sock

它的第一个字符是 s。

5. 符号链接文件

当我们查看文件属性时,会看到类似 lrwxrwxrwx的属性,属性的第一个字符是l,这类文件是链接文件。通过ln -s 源文件 新文件 。软链接文件与Windows操作系统中的快捷方式有点相似。

# ls -lh log2012.log

-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

# ln -s log2012.log  linklog.log

# ls -lh *.log

lrwxrwxrwx 1 root root   11 11-22 06:58 linklog.log -> log2012.log
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

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

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

二. 文件扩展名

1. 扩展名类型

通常我们会以适当的扩展名来表示该文件是什么种类的。底下有数种常用的扩展名:

  • *.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系统中却无法执行,可能文件的属性就被改变了。

2. 文件名的长度限制

在Linux底下,使用预设的Ext2/Ext3文件系统时,针对文件名长度限制为:

  • 单一文件或目录的最大容许文件名为 255 个字符

  • 包含完整路径名称及目录 (/) 之完整档名为 4096 个字符

3. 文件名的字符限制

一般而言,你在设定Linux底下的文件名时, 最好避免一些特殊的字符,如下:

* ? > < ; & ! [ ] | \ ' " ` ( ) { }

因为在CMD下,这些符号是有特殊意义的。另外,文件名以小数点“.”开头时,代表这个文件为隐藏文件。由于执行命令时,常常会使用到-option之类的选项, 所以文件最好避免以 - 或 + 开头。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值