记录一下如何在Ubuntu系统中链接文件和目录。
使用ln
命令
命令说明
ln
命令用于创建指向文件和目录的链接;- 链接分为硬链接(hard link)和符号链接(symbolic link),符号链接也被称为软链接;
-
硬链接:
- 硬链接和源文件指向同一索引节点(inode,index node),允许同一文件拥有多个有效路径;
- 只有删除源文件和所有硬链接之后才会彻底删除数据,防止误删重要文件;
- 不能跨文件系统,不能链接目录;
-
符号链接:
- 符号链接和源文件指向不同索引节点,符号链接包含源文件的路径信息,类似于Windows系统中的快捷方式;
- 删除源文件或目录会导致符号链接失效,删除符号链接不影响源文件或目录;
-
语法说明:
ln [OPTION]... [-T] TARGET LINK_NAME (1st form) ln [OPTION]... TARGET (2nd form) ln [OPTION]... TARGET... DIRECTORY (3rd form) ln [OPTION]... -t DIRECTORY TARGET... (4th form)
常用语法
-
创建指向文件或目录的符号链接,要求目标符号链接不存在:
ln -s path/to/file_or_directory path/to/symlink
-
覆盖已有的符号链接,将其指向其他文件:
ln -sf path/to/new_file path/to/symlink
-
创建指向文件的硬链接:
ln path/to/file path/to/hardlink
使用update-alternatives
命令
命令说明
update-alternatives
命令用于维护命令默认的符号链接;- 常用于管理不同版本的软件,通过符号链接指定默认使用的版本;
-
语法说明:
update-alternatives [<option> ...] <command>
常用语法
-
添加符号链接:
sudo update-alternatives --install path/to/symlink command_name path/to/command_binary priority
-
配置符号链接:
sudo update-alternatives --config command_name
-
删除符号链接:
# 删除指定命令的单个符号链接 sudo update-alternatives --remove command_name path/to/command_binary # 删除指定命令的所有符号链接 sudo update-alternatives --remove-all command_name
-
显示指定命令的符号链接:
update-alternatives --display command_name
-
显示所有命令的符号链接:
update-alternatives --get-selections
-
按照优先级自动选择指定命令的符号链接:
sudo update-alternatives --auto command_name
使用readlink
命令
命令说明
readlink
命令用于查看符号链接信息;-
语法说明:
readlink [OPTION]... FILE...
常用语法
-
查看符号链接指向的文件:
readlink path/to/file
-
递归查看符号链接指向的文件,要求除了最后一个组件外其余组件必须存在:
readlink -f path/to/file readlink --canonicalize path/to/file
-
递归查看符号链接指向的文件,要求所有组件必须存在:
readlink -e path/to/file readlink --canonicalize-existing path/to/file
-
递归查看符号链接指向的文件,不要求组件存在:
readlink -m path/to/file readlink --canonicalize-missing path/to/file