目录
一、Linux 文件属性初印象
当你在 Linux 系统的终端中输入ls -l命令,看到那一串串看似复杂的字符、数字和名字时,你就正在与 Linux 文件属性打交道。比如下面这样的输出:
-rw-r--r-- 1 user user 1024 Feb 14 10:30 example.txt
这一行信息,每一部分都包含着关于这个文件的重要属性。开头的-代表这是一个普通文件;rw-r--r--则是文件的权限信息,后面我们会详细展开讲解;第一个user是文件的所有者,第二个user是文件所属的组;1024表示文件大小为 1024 字节;Feb 14 10:30是文件的最后修改时间;最后的example.txt就是文件名啦。
文件属性是 Linux 系统管理文件的关键,通过了解这些属性,我们可以知道文件的类型、谁可以访问和修改文件、文件的大小和创建 / 修改时间等重要信息,这对于系统的安全性、文件管理的高效性都至关重要 。接下来,就让我们深入探究 Linux 文件属性的各个方面。
二、Linux 文件类型大揭秘
(一)常见文件类型
普通文件:这是 Linux 系统中最常见的文件类型,就像我们日常生活中各种装满东西的箱子。它包含了文本文件、二进制文件和可执行文件等 。比如我们编写的 C 语言代码文件(.c)就是文本文件,经过编译后生成的可执行文件则是二进制文件。普通文件以字节流的形式存储数据,可以通过编辑器(如 vi、nano)或终端命令进行查看和编辑。例如,使用cat命令可以查看文本文件的内容,./可执行文件名可以运行可执行文件。
目录文件:可以把目录文件想象成一个大型的文件柜,它用于存储其他文件和目录的列表。每个目录文件中包含了一系列的文件和目录项,每个项都包含了文件名和指向相应文件的指针。它充当了文件系统的 “索引”,用于组织和管理文件。在 Linux 系统中,目录文件的名称通常以 “/” 结尾,使用ls命令查看目录内容,cd命令可以进入某个目录。
链接文件:链接文件类似于 Windows 系统中的快捷方式,是一个指向其他文件或目录的特殊文件 。在 Linux 下,链接又分为硬链接和软链接(符号链接)。硬链接可以理解为同一个文件的不同别名,它们共享同一个 inode(索引节点),即底层是同一个文件,只是有多个链接指向它。软链接则更像是一个真正的快捷方式,它有自己独立的 inode,指向的是源文件的路径。比如我们想要快速访问一个位于深层目录的重要文件,就可以为它创建一个软链接放在常用目录下。
设备文件:设备文件用于与计算机的硬件设备进行通信,是 Linux 系统与外部设备交互的桥梁。它分为块设备文件和字符设备文件 。块设备文件用于与存储设备(如硬盘、闪存)进行交互,按照固定大小的块进行读写操作,每个块的大小通常为 512 字节或更大;字符设备文件用于与字符设备(如键盘、鼠标、串口)进行交互,以字符流的形式进行读写操作,每个字符的大小为一个字节。设备文件通常位于/dev目录下。
套接字文件:套接字文件用于实现进程间的网络通信,就像是进程之间通过网络进行对话的 “电话线路”。在 Linux 系统中,它允许进程通过网络传输和接收数据,通常用于实现客户端和服务器之间的通信,常见于网络编程中。
管道文件:管道文件用于进程间的单向通信,是进程间传递数据的 “单向通道”。当两个进程需要进行数据或信息传递时,可以使用管道文件,一个进程将需要传递的数据或信息写入管道的一端,另一进程从管道的另一端取得所需要的数据或信息 ,通常管道是建立在高速缓存中。在命令行中,我们可以使用|符号来使用管道,例如ls -l | grep "txt",就是将ls -l的输出作为grep "txt"的输入。
(二)文件类型的识别方法
通过文件的第一个字符识别:在使用ls -l命令查看文件列表时,最左边的第一个字符就代表了文件的类型。
-
- 表示普通文件。例如:-rw-r--r-- 1 user user 1024 Feb 14 10:30 example.txt,这里开头的-表明example.txt是普通文件。
-
d 表示目录文件。如:drwxr-xr-x 2 user user 4096 Feb 14 10:31 testdir,开头的d说明testdir是一个目录。
-
l 表示链接文件(软链接)。例如:lrwxrwxrwx 1 user user 10 Feb 14 10:32 linkfile -> targetfile,l代表这是一个软链接文件,linkfile是链接名,->后面的targetfile是它所指向的目标文件。
-
b 表示块设备文件。比如:brw-rw---- 1 root disk 8, 0 Feb 14 10:33 /dev/sda,b说明/dev/sda是块设备文件 。
-
c 表示字符设备文件。例如:crw-rw---- 1 root tty 4, 0 Feb 14 10:34 /dev/tty0,c表明/dev/tty0是字符设备文件。
使用 file 命令识别:file命令可以更详细地识别文件类型,它会分析文件的内容来判断类型,而不仅仅依赖于文件的属性标志。比如对于一个文件mysteryfile,我们不确定它