目录
什么是链接?
链接:指向同一文件的多个文件名。这些文件名称为链接。
链接有哪些类型?
你可以创建两种类型的链接:硬链接和软链接(符号链接)。每种方法各有利弊。
硬链接
如何理解硬链接?
硬链接就像是一个指向实际文件的标记或指向牌,它允许你在不同的位置引用同一个文件(不能指向目录),而不需要复制文件内容。这样既可以节省存储空间,又能方便地管理文件,并确保文件的一致性。
示例:假设你有一个名为
notes.txt
的文件,你希望在不同的目录下都能访问这个文件,但又不想复制它。你可以创建一个硬链接work_notes.txt
,让它指向notes.txt
。当你在桌面上创建一个硬链接
desk_notes.txt
指向notes.txt
时,这三个文件名都指向同一个文件内容。这意味着无论你在哪里编辑这个文件,所有指向它的文件名都会显示最新的内容。
如何创建硬链接?
使用 ln
命令创建硬链接:
ln file.text file_link(file.text的硬链接)
- 使用 ls -l 命令来查看文件所具有的硬链接数量。
- 使用 ls -il 命令来查看两个文件是否被硬链接。该命令列出每个文件的inode(索引节点编号)。如果文件位于同一文件系统上,并且他们的索引节点编号相同,那么这两个文件就是指向同一数据的硬链接。
- 使用 df 命令来判断文件是否位于同一文件系统。
即使原始文件被删除,只要还存在至少一个硬链接,该文件的内容就依然可用。只有最后一个硬链接被删除时,数据才会从存储中删除,从而使任何硬链接都不会引用文件内容。
硬链接的局限性
- 只能将硬链接用于常规文件。无法使用ln命令来创建指向目录或特殊文件的硬链接。
- 只有当两个文件位于同一文件系统上时,才能使用硬链接。
符号链接(软连接)
如何理解符号链接?
与硬链接类似。
符号链接相比硬链接的优势
- 符号链接可以链接位于不同文件系统上的两个文件。
- 符号链接可以指向目录或特殊文件,而不仅限于 常规文件。
如何创建符号链接?
使用 ln -s
命令创建符号链接:
ln -s file.text file_sym_link(file.text的软链接)
- a2.text 文件的长列表的第一个字符是 l 而不是 - ,表示该文件是符号链接而不是常规文件(硬链接)。
- 当原始常规文件被删除后,符号链接依然会指向该文件,但目标已消失。指向缺失文件的符号链接被称为“悬空符号链接”。
- “悬空符号链接”有一个副作用:如果你稍后创建了一个与已删除文件同名的新文件,那么符号链接将不再“悬空”,而是指向这个新文件。(硬链接却不是这样,当原始文件被删除后,创建同名的新文件不会影响原来的硬链接。原来的硬链接将变为无效,并且不再指向新的文件内容。如果你希望原来的硬链接指向新的文件,需要重新创建硬链接。)
- 符号链接可以指向目录,发挥和目录一样的作用。可以使用cd命令更改符号链接,则当前目录将变为链接的目录。
- 默认情况下,cd 将使用符号链接的名称(而非实际目录的名称)来更新当前工作的目录。如果要使用实际目录的名称更新当前工作目录,则可以使用 -P 选项。