Unix 文件类型

17 Mar 2025 | 4 分钟阅读

在 Unix 操作系统中,所有数据都组织成文件。每个文件都组织在目录中,这些目录又以树状结构组织,称为文件系统。

Unix 中的文件类型如下:

  1. 普通文件
  2. 目录
  3. 特殊文件
  4. 管道
  5. 套接字 (Sockets)
  6. 符号链接
Types of Files in Unix

1. 普通文件

普通文件是 Unix 中的文件,包括程序指令、文本和数据。

  • 普通文件中不包含其他文件。
  • 普通文件总是放置在目录文件之下。
  • 普通文件用于存储我们的信息,如需要书写的文本或需要绘制的图片。这是我们主要操作的文件类型。
  • 在 `ls -l` 命令的长格式输出中,使用 "-" 符号来指定此类文件。

2. 目录

目录存储特殊文件和普通文件。对于熟悉 Mac 或 Windows 操作系统的用户来说,Unix 目录等同于文件夹。目录文件包含其包含的每个文件和子目录的条目。如果一个目录中有 5 个文件,那么该目录中将有 5 个条目。每个条目包含 2 个组件。

  1. 文件的名称。
  2. 一个 inode 号,这是文件或目录的唯一标识号。
  • 分层树中的分支点。
  • 我们使用它来组织文件集合。
  • 它包含特殊文件、普通文件或其他目录。
  • 它不包含我们会操作的“真实”信息,如文本。主要用于组织文件。
  • 每个文件都是位于树顶的根目录(名为 /)的后代。

在 `ls -l` 命令的长格式输出中,我们使用 "d" 符号来指定此类文件。

3. 特殊文件

我们使用特殊文件来表示真实的物理设备,如终端、磁带驱动器和打印机,也用于输入/输出 (I/O) 操作。在 Linux 和 Unix 系统上,特殊文件或设备用于输入/输出 (I/O)。它们在文件系统中看起来与普通文件或目录相似。

Unix 系统中,每个设备主要有两种特殊文件:块特殊文件和字符特殊文件。

  • 如果我们将块特殊文件用于设备输入/输出 (I/O),数据将以较高固定大小的块进行移动。这种访问方式称为块设备访问。

对于终端设备,它一次处理一个字符。但是,对于磁盘设备,直接访问意味着读取或写入整个数据块,这些数据块是磁盘原生的。

  • 在 `ls -l` 命令的长格式输出中,使用 "c" 符号来区分标记的字符文件。
  • 在 `ls -l` 命令的长格式输出中,使用 "b" 符号来区分标记的块文件。

4. 管道 (Pipes)

在 Unix 中,通过管道,我们可以将命令链接在一起。管道类似于一个临时文件,它仅用于存储一个命令的数据,直到被另一个命令读取。Unix 管道提供单向数据流。第一个命令的输出序列用作下一个命令序列的输入。为了创建管道,需要在命令行的两个命令之间放置竖线 (|)。例如:`who | wc -l`

在 `ls -l` 命令的长格式输出中,被称为管道的文件用 "p" 符号标记。

5. 套接字 (Sockets)

Unix 套接字是一种文件类型,支持高级进程间通信。它也称为进程间通信套接字。在客户端-服务器应用程序的框架中,会使用 Unix 套接字。它本质上是一个数据流,与网络流和网络套接字相同,只是每个事务都局限于文件系统。

在 `ls -l` 命令的长格式输出中,使用 "s" 符号标记 Unix 套接字。

6. 符号链接 (Symbolic Link)

符号链接用于引用文件系统中的另一个文件。为了引用文件系统中的另一个文件,我们使用符号链接。它包含指向它引用的文件的路径的文本表示。对最终用户而言,符号链接似乎有自己的名称,但当我们向该文件写入或读取数据时,它会将这些任务转发到它指向的文件。如果我们删除软链接本身,数据文件仍然会存在。如果源文件被删除或移动到其他位置,符号文件将无法工作。

在 `ls -l` 命令的长格式输出中,使用 "l" 符号标记符号链接。


下一个主题Linux Daemons