菜鸟教程
常用命令
1.创建软链接
ln -s /path/to/source /path/to/link
参数说明:
ln:链接命令-s:创建软链接(符号链接),没有此参数则创建硬链接- 第一个参数:源文件/目录路径
- 第二个参数:要创建的软链接路径
示例
# 为文件创建软链接
ln -s /home/user/data/config.txt /home/user/config_link# 为目录创建软链接
ln -s /var/www/html /home/user/webroot# 使用相对路径创建(推荐,便于移动)
ln -s ../data/file.txt ./current_file
2. 查看软链接信息(显示链接指向)
ls -l link_name
输出解释
lrwxrwxrwx 1 user group 20 Jan 1 10:00 link_name -> /path/to/source
- 首字母l:表示这是一个软链接
- 后续权限rwxrwxrwx:软链接本身的权限(通常显示777,但实际权限由源文件决定)
- 数字20:软链接文件的大小(存储路径的字节数)
- link_name -> /path/to/source:明确显示链接指向
其他查看方法
# 显示文件类型
file link_name
# 输出:link_name: symbolic link to '/path/to/source'# 查看inode信息
ls -i link_name
# 输出软链接的inode号# 查看源文件inode
ls -i /path/to/source
# 比较两个inode号,软链接的inode与源文件不同
3.查找特定文件的软链接
find ~ -lname file_name
参数说明
- find:文件查找命令
- ~:搜索范围,这里是用户家目录,可以是任何路径
- -lname:按链接名查找,只查找软链接指向的文件名匹配的
- file_name:要匹配的文件名模式
示例
# 查找指向特定文件的所有软链接
find ~ -lname "config.txt"# 查找指向某路径的所有软链接
find ~ -lname "/home/user/data/*"# 使用通配符
find / -lname "*.conf" 2>/dev/null
# 2>/dev/null 忽略权限错误信息
高级用法
# 查找并显示详细信息
find ~ -lname "config.txt" -exec ls -l {} \;# 查找指向不存在的文件的软链接(死链接)
find ~ -type l ! -exec test -e {} \; -print
4.查找所有软链接
find ~ -type l -ls
参数说明
- -type l:只查找软链接(符号链接)类型
- -ls:以详细格式显示找到的文件
等效命令
# 简化版
find ~ -type l# 显示更详细的信息
find ~ -type l -exec ls -l {} \;# 统计软链接数量
find ~ -type l | wc -l
示例输出
123456 0 lrwxrwxrwx 1 user group 12 Jan 1 10:00 /home/user/link1
123457 0 lrwxrwxrwx 1 user group 15 Jan 1 10:00 /home/user/link2
5.强制覆盖已存在的软链接
ln -sf new_source existing_link
参数说明
- -f或 --force:强制覆盖已存在的软链接文件
- 此参数在创建软链接时,如果目标已存在,会删除旧链接后创建新链接
使用场景
# 更新已存在的软链接指向
ln -sf /new/path/file.txt /old/link# 批量创建/更新时强制覆盖
ln -sf /source/dir/* /link/dir/
注意
# 如果目标不是软链接而是普通文件,-f 会删除该文件并创建软链接
# 可能导致数据丢失,使用时需谨慎
安全做法:先检查
if [ -L "/path/to/link" ]; then
ln -sf new_source /path/to/link
else
echo "目标不是软链接,谨慎操作!"
fi
6.其他操作
1.删除软链接
# 正确删除软链接
rm link_name
# 注意:不要使用 rm link_name/ (最后的斜杠),这会被解释为删除目录内容# 或
unlink link_name
