ln 命令 #
ln
命令用于在文件之间创建链接。在 Linux 中,链接有两种类型:硬链接和符号(软)链接。硬链接是指向文件系统中文件的另一个引用,而符号链接是指向另一个文件路径的特殊文件。
语法 #
ln [选项] 目标 [链接名]
ln [选项] 目标... 目录
常用选项 #
选项 | 描述 |
---|---|
-s, --symbolic |
创建符号链接而不是硬链接 |
-f, --force |
强制创建链接,如有必要则删除已存在的目标文件 |
-i, --interactive |
覆盖前提示 |
-n, --no-dereference |
如果目标是指向目录的符号链接,则将其视为普通文件 |
-r, --relative |
创建相对符号链接 |
-b, --backup |
为每个已存在的目标文件创建备份 |
-v, --verbose |
显示每个链接的名称 |
-t, --target-directory=目录 |
指定创建链接的目录 |
常见用法 #
1. 创建硬链接 #
ln 源文件 链接名
例如:
ln file.txt hardlink.txt
这将创建一个指向 file.txt
的硬链接 hardlink.txt
。
2. 创建符号链接(软链接) #
ln -s 源文件或目录 链接名
例如:
ln -s file.txt symlink.txt
ln -s /path/to/directory symlink_dir
这将创建指向 file.txt
的符号链接 symlink.txt
和指向目录的符号链接 symlink_dir
。
3. 强制创建链接(覆盖已存在的文件) #
ln -sf 源文件 链接名
4. 创建相对符号链接 #
ln -sr 源文件 链接名
这将创建一个相对路径的符号链接,这在移动目录结构时很有用。
5. 在指定目录中创建链接 #
ln -s 源文件 目标目录/
或者使用 -t
选项:
ln -s -t 目标目录/ 源文件
6. 创建多个链接到一个目录 #
ln -s 文件1 文件2 文件3 目标目录/
硬链接与符号链接的区别 #
硬链接 #
- 只能链接到文件,不能链接到目录
- 不能跨文件系统
- 删除源文件不会影响硬链接
- 所有硬链接都有相同的 inode 号
- 更新任何一个硬链接都会更新所有链接
符号链接 #
- 可以链接到文件或目录
- 可以跨文件系统
- 删除源文件会导致符号链接失效(成为"断开的链接")
- 符号链接有自己的 inode 号
- 本质上是一个包含目标路径的特殊文件
实用示例 #
1. 为常用命令创建快捷方式 #
ln -s /usr/bin/python3 ~/bin/python
这将在 ~/bin
目录中创建一个指向 python3
的符号链接,命名为 python
。
2. 为配置文件创建备份链接 #
ln ~/.bashrc ~/.bashrc.backup
这将创建 .bashrc
文件的硬链接备份。
3. 创建指向目录的符号链接 #
ln -s /var/www/html ~/web
这将创建一个指向 /var/www/html
的符号链接 ~/web
。
4. 使用相对路径创建符号链接 #
ln -sr ../shared/config.ini ./config.ini
这将创建一个使用相对路径的符号链接。
5. 更新符号链接 #
ln -sf /new/path/file.txt existing_link
这将更新现有的符号链接 existing_link
指向新的路径。
提示 #
- 使用
ls -l
命令可以查看文件的链接信息 - 符号链接以
l
开头显示在ls -l
的输出中 - 使用
readlink
命令可以查看符号链接指向的目标 - 创建符号链接时,最好使用绝对路径以避免链接断开
- 如果需要移动链接结构,使用相对符号链接(
-r
选项) - 硬链接共享相同的 inode 和数据块,因此节省磁盘空间
- 符号链接占用少量额外空间来存储目标路径