- Unix/Linux 初学者指南
- Unix/Linux - 首页
- Unix/Linux - 什么是Linux?
- Unix/Linux - 入门指南
- Unix/Linux - 文件管理
- Unix/Linux - 目录
- Unix/Linux - 文件权限
- Unix/Linux - 环境变量
- Unix/Linux - 基本实用程序
- Unix/Linux - 管道与过滤器
- Unix/Linux - 进程
- Unix/Linux - 通信
- Unix/Linux - vi 编辑器
- Unix/Linux Shell 编程
- Unix/Linux - Shell 脚本
- Unix/Linux - 什么是Shell?
- Unix/Linux - 使用变量
- Unix/Linux - 特殊变量
- Unix/Linux - 使用数组
- Unix/Linux - 基本运算符
- Unix/Linux - 决策语句
- Unix/Linux - Shell 循环
- Unix/Linux - 循环控制
- Unix/Linux - Shell 替换
- Unix/Linux - 引号机制
- Unix/Linux - I/O 重定向
- Unix/Linux - Shell 函数
- Unix/Linux - 手册页帮助
- 高级 Unix/Linux
- Unix/Linux - 标准 I/O 流
- Unix/Linux - 文件链接
- Unix/Linux - 正则表达式
- Unix/Linux - 文件系统基础
- Unix/Linux - 用户管理
- Unix/Linux - 系统性能
- Unix/Linux - 系统日志
- Unix/Linux - 信号和陷阱
Linux 文件链接
什么是 Linux 中的文件链接?
Linux 链接提供了一种机制,可以为现有文件或目录创建快捷方式或替代名称,这意味着您可以为 Linux 中的同一文件或目录创建多个名称,以便根据您的需求轻松访问和使用它们。
Linux/Unix 提供两种类型的链接
- 软链接或符号链接
- 硬链接
符号链接
Linux 中的符号链接也称为软链接或符号链接。这是 Linux 中的一种特殊文件,它指向另一个文件或目录。这个原始文件或目录可以位于同一个文件系统或不同的文件系统上。符号链接就像 Windows 中的快捷方式,它包含原始文件的路径,而不是内容。
您可以使用此文件上的任何可用的符号链接访问原始文件数据,删除符号链接不会影响目标文件。但是,如果您删除了原始文件,则此文件上的所有符号链接都将断开,并且您的数据将无法再访问。
如何创建符号链接
以下是为现有文件创建符号链接的语法:
$ ln -s file/directory symlink
此处文件或目录可以是完整的 文件路径或目录,symlink 将是符号链接的名称,它将指向该文件或目录。
首先,让我们创建一个简单的文件 **file.txt**,如下所示:
$ echo 'Hello, World!' > file.txt
现在,我们可以使用以下命令为此文件创建一个软链接:
$ ln -s file.txt soft-link $ ls -l total 4 -rw-r--r-- 1 root root 14 May 1 20:11 file.txt lrwxrwxrwx 1 root root 8 May 1 20:11 soft-link -> file.txt
请注意权限字符串 **lrwxrwxrwx** 的第一个字符 **l**,这意味着该文件是一个符号链接。现在您可以使用 **soft-link** 访问文件 **file.txt** 的内容并更新其内容,这将反映在原始 file.txt 中。
如何删除符号链接
您可以使用 unlink 或 rm 命令删除现有的符号链接。只要您删除的是符号链接,它就不会影响原始文件,但如果您删除了原始文件,则它将在该文件上创建损坏的符号链接。
以下命令将删除我们在上一节中创建的 soft-link:
$ unlink soft-link $
查找损坏的符号链接
您可以使用以下 find 命令查找所有损坏的符号链接:
$ find /path/to/directory -xtype l
这将列出 /path/to/directory 目录中的所有损坏的符号链接。您可以使用 **-delete** 选项删除找到的损坏链接。
$ find /path/to/directory -xtype l -delete
硬链接
硬链接也是文件的快捷方式,但不能为不同文件系统上的文件夹或文件创建硬链接。
硬链接是原始文件的镜像副本。删除原始文件不会影响任何内容,因为硬链接文件将充当原始文件的镜像副本。
如何创建硬链接
以下是为现有文件创建硬链接的语法:
$ ln filepath hardlink
此处 **filepath** 可以是原始文件的完整文件路径,**hardlink** 将是硬链接的名称,它将指向该文件。让我们使用以下命令为 **file.txt** 文件创建一个硬链接:
$ ln file.txt hard-link $ ls -li total 8 72744984 -rw-r--r-- 2 root root 14 May 1 20:11 file.txt 72744984 -rw-r--r-- 2 root root 14 May 1 20:11 hard-link
请注意 inode 号码 **72744984**,它对这两个文件都相同。权限字符串后的数字是 2,这意味着存在两个相同文件的副本。如果您将为此文件 file.txt 创建另一个硬链接,则此数字将变为 3。
现在您可以使用 **hard-link** 访问文件 **file.txt** 的内容并更新其内容,这将反映在 file.txt 中。
如何删除硬链接
您可以使用 **unlink** 或 **rm** 命令删除现有的硬链接。删除硬链接或原始链接不会影响另一个文件,因为硬链接创建了原始文件的镜像副本。
以下命令将删除我们在上一节中创建的 soft-link:
$ unlink hard-link $ ls -li total 4 72744984 -rw-r--r-- 1 root root 14 May 1 20:11 file.txt
符号链接与硬链接
Linux 文件系统链接的两种类型是硬链接和软链接。这两种链接之间的区别很大,我们已在此处列出。
符号链接可以创建在目录和文件上,而硬链接只能创建在文件上,不能创建在目录上。
即使符号链接位于不同的文件系统上,也可以为文件或目录创建符号链接,而硬链接只能在同一文件系统上创建。
符号链接不会从原始文件继承原始权限。这意味着对原始文件进行的任何权限更改都不会反映在符号链接中。硬链接在一起的文件共享相同的 inode 号码。当对一个文件进行更改时,另一个文件会反映这些更改以及权限、链接计数、所有权和时间戳。尽管在这两种情况下,所有链接文件的内容都完全相同。
符号链接的大小非常小,因为它们只是指向原始内容的指针,而不是原始文件的镜像,其大小只是构成文件或目录名称所需的字节数。而硬链接则会占用更多空间,因为它们会创建原始文件的镜像副本。