UNIX中的链接是指向文件的指针。像任何编程语言中的指针一样, UNIX中的链接是指向文件或目录的指针。创建链接是一种访问文件的快捷方式。链接允许多个文件名引用其他位置的同一文件。
链接有两种类型:
- 软链接或符号链接
- 硬链接
当链接的源(链接的对象)被移动或删除时, 这些链接的行为有所不同。符号链接不会更新(它们仅包含一个字符串, 该字符串是其目标的路径名);硬链接始终引用源, 即使被移动或删除也是如此。
例如, 如果我们有一个文件a.txt。如果我们创建到文件的硬链接然后删除文件, 我们仍然可以使用硬链接访问文件。但是, 如果我们创建文件的软链接然后删除文件, 则无法通过软链接访问该文件, 并且软链接会悬空。基本上, 硬链接会增加位置的引用计数, 而软链接则充当快捷方式(例如在Windows中)
1.硬链接
- 每个硬链接文件都被分配了与原始文件相同的Inode值, 因此它们引用了相同的物理文件位置。硬链接更加灵活, 即使原始文件或链接的文件在整个文件系统中移动, 硬链接仍然保持链接, 尽管硬链接无法跨不同的文件系统。
- ls -l命令显示所有链接, 而link列显示链接数。
- 链接具有实际文件内容
- 删除任何链接只会减少链接数, 但不会影响其他链接。
- 我们无法为目录创建硬链接以避免递归循环。
- 如果原始文件被删除, 则该链接仍将显示文件的内容。
- 创建硬链接的命令是:
$ ln [original filename] [link name]
2.软链接
- 软链接类似于Windows操作系统中使用的文件快捷方式功能。每个软链接文件都包含一个指向原始文件的单独的Inode值。与硬链接类似, 对任何一个文件中数据的任何更改都会反映在另一个文件中。软链接可以跨不同的文件系统链接, 尽管如果删除或移动了原始文件, 则软链接文件将无法正常工作(称为挂起链接)。
- ls -l命令显示所有具有第一列值l的链接?链接指向原始文件。
- 软链接包含原始文件的路径, 而不包含内容。
- 删除软链接对删除原始文件没有任何影响, 但该链接变为"悬空"链接, 指向不存在的文件。
- 软链接可以链接到目录。
- 跨文件系统链接:如果要跨文件系统链接文件, 则只能使用符号链接/软链接。
- 创建软链接的命令是:
$ ln -s [original filename] [link name]
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。