zzxworld

Linux ln 命令使用指南

Linux ln 命令使用指南

ln 命令在 Linux 系统中用来建立文件之间的连接。在需要共用某些文件或目录的场合,通过创建这种文件连接可以方便管理。从某些方面来说,Linux 的文件连接有点类似于 Windows 系统下的快捷方式,但又不尽相同。

Linux 的连接分为两种类型:硬连接和软连接。

一个硬连接仅仅是一个文件名。一个文件可以有好几个文件名,只有将最后一个文件名从磁盘上删除,才能把这个文件删掉。所有的文件名都处于同一状态,也就没有「源名字」之说,有点类似于去中心化的分布式文件。乍一看,这和用来复制文件的 cp 命令有点像,但事实上存在本质区别。由 ln 命令创建的硬连接文件,修改任何一个文件内容,其他文件的内容都会随之改变。这种既能分身又能保持文件内容同步的能力 cp 命令是做不到的。

至于软连接(也称为符号连接),就又不一样了。它只是一个指向了目标文件的路径映射。删除一个软连接不会其指向的目标文件有任何影响,但如果删除了指向的目标文件,这个软连接也就没法访问了。

使用 ln 命令时,一定要先明确这两种连接类型的区别,然后根据情况来选择。大多数情况下,软连接就能满足需求。

ln 命令格式

ln [选项]... [-T] 目标 链接名
ln [选项]... 目标
ln [选项]... 目标... 目录
ln [选项]... -t 目录 目标...

如上所示,ln 有四种命令格式。在第一种格式中,创建具有指定「链接名」且指向指定「目标」的链接。在第二种格式中,在当前目录创建指向「目标」位置的链接。在第三和第四种格式中,在指定「目录」中创建指向指定「目标」的链接。

ln 命令示例

test.txt 文件建立一个名为 test-hard-link.txt 的硬连接文件:

ln test.txt test-hard-link.txt

建立一个软连接:

ln -s test.txt test-soft-link.txt

把指定目录建立为一个软连接:

ln -s test-folder test-folder-soft-link

更新已存在的软连接文件:

ln -sf new-test.txt test-soft-link.txt

ln 命令选项

缩写 完整名称 说明
-backup[=CONTROL] 为每个已存在的目标文件创建备份文件。
-b 类似--backup,但不接受任何参数。
-d, -F --directory 允许超级用户尝试创建指向目录的硬链接(注意:此操作可能因系统限制而失败)。
-f --force 强行删除任何已存在的目标文件。
-i --interactive 删除目标文件前进行确认。
-L --logical 如目标为符号链接,本次创建链接时将其解引用。
-n --no-dereference 如果给定链接名是一个链接至某目录的符号链接,将其作为普通文件处理。
-P --physical 创建直接指向符号链接文件的硬链接。
-r --relative 创建相对于链接位置的符号链接。
-s --symbolic 创建符号链接而非硬链接。
-S --suffix=后缀 自行指定备份文件的后缀。
-t --target-directory=目录 在指定目录中创建链接。
-T --no-target-directory 总是将给定的链接名当作普通文件。
-v --verbose 列出每个链接的文件名称。
--help 显示此帮助信息并退出。
--version 显示版本信息并退出。

在使用 ln 命令的备份选项 --backup 时,可以指定 CONTROL 版本控制参数。它有以下可用的参数:

参数名称 说明
numbered, t 备份文件加上数字进行排序。
existing, nil 若有数字的备份文件已经存在则使用数字,否则使用普通方式备份。
simple , never 使用普通方式备份。
none, off 不进行备份。

默认的备份文件后缀为 ~ 符号。如果想要自定义这个后缀,可以通过 --suffix 选项或是 SIMPLE_BACKUP_SUFFIX 环境变量来指定。