文章目录
在 Linux 中,创建硬链接和软链接的命令是 ln
,但它们的格式和选项有所不同。以下是详细的命令格式和示例说明:
1. 创建硬链接
命令格式
ln 源文件 硬链接文件名
参数说明
- 源文件:需要创建硬链接的目标文件。
- 硬链接文件名:新创建的硬链接文件的名称。
示例
# 创建文件
echo "Hello, Hard Link" > file.txt
# 创建硬链接
ln file.txt hardlink.txt
# 查看 inode 和链接数
ls -li file.txt hardlink.txt
# 输出示例:
# 1050000 -rw-r--r-- 2 user group 17 Jan 1 10:00 file.txt
# 1050000 -rw-r--r-- 2 user group 17 Jan 1 10:00 hardlink.txt
- 说明:
file.txt
和hardlink.txt
的 inode 相同(1050000
),且链接数变为2
。- 删除
file.txt
后,hardlink.txt
仍然可以访问数据。
2. 创建软链接
命令格式
ln -s 目标文件或目录 软链接文件名
参数说明
-s
:表示创建软链接(符号链接)。- 目标文件或目录:软链接指向的目标文件或目录。
- 软链接文件名:新创建的软链接文件的名称。
示例
# 创建文件
echo "Hello, Symbolic Link" > target.txt
# 创建软链接
ln -s target.txt softlink.txt
# 查看软链接
ls -l softlink.txt
# 输出示例:
# lrwxrwxrwx 1 user group 10 Jan 1 10:00 softlink.txt -> target.txt
- 说明:
softlink.txt
是一个独立的文件,文件类型为l
(链接),内容为目标路径target.txt
。- 删除
target.txt
后,softlink.txt
会失效(悬空链接)。
3. 创建目录的软链接
软链接可以指向目录,而硬链接通常不支持目录(避免目录树循环)。
示例
# 创建目录
mkdir mydir
# 创建目录的软链接
ln -s mydir dirlink
# 查看软链接
ls -l dirlink
# 输出示例:
# lrwxrwxrwx 1 user group 5 Jan 1 10:00 dirlink -> mydir
4. 硬链接与软链接的对比示例
创建文件与链接
# 创建原文件
echo "This is a test file" > original.txt
# 创建硬链接
ln original.txt hardlink.txt
# 创建软链接
ln -s original.txt softlink.txt
查看文件信息
ls -li original.txt hardlink.txt softlink.txt
# 输出示例:
# 1050000 -rw-r--r-- 2 user group 20 Jan 1 10:00 original.txt
# 1050000 -rw-r--r-- 2 user group 20 Jan 1 10:00 hardlink.txt
# 1050001 lrwxrwxrwx 1 user group 12 Jan 1 10:00 softlink.txt -> original.txt
删除原文件后的表现
# 删除原文件
rm original.txt
# 硬链接仍可访问数据
cat hardlink.txt # 输出 "This is a test file"
# 软链接失效
cat softlink.txt # 报错:No such file or directory
5. 常用选项
-
-v
:显示详细的创建过程。ln -sv target.txt softlink.txt # 输出:softlink.txt -> target.txt
-
-f
:强制覆盖已存在的链接文件。ln -sf new_target.txt softlink.txt
-
-i
:在覆盖文件前提示确认。ln -si target.txt softlink.txt
6. 总结
命令 | 格式 | 用途 |
---|---|---|
创建硬链接 | ln 源文件 硬链接文件名 | 创建共享 inode 的硬链接 |
创建软链接 | ln -s 目标文件或目录 软链接文件名 | 创建指向目标路径的软链接 |
创建目录软链接 | ln -s 目标目录 软链接目录名 | 创建指向目录的软链接 |
通过 ln
命令,可以灵活地创建硬链接和软链接,满足不同的文件管理和使用需求。