如何在Linux中删除(删除)符号链接

时间:2020-03-05 15:27:28  来源:igfitidea点击:

符号链接,也称为符号链接,是一种指向另一文件或者目录的特殊类型的文件。
这有点像Windows中的快捷方式。
符号链接可以指向相同或者不同文件系统或者分区上的文件或者目录。

在本教程中,我们将向我们展示如何使用'rm','unlink'和'find'命令在Linux/UNIX系统中删除(删除)符号链接。

在你开始之前

要删除符号链接,我们需要对包含符号链接的目录具有写权限。
否则,将出现“Operation not permitted 不允许操作”错误。

删除符号链接时,它指向的文件不受影响。

使用“ ls -l”命令检查给定文件是否为符号链接,并查找符号链接指向的文件或者目录。

ls -l /usr/bin/python
lrwxrwxrwx 1 root root 9 Apr 16  2016 /usr/bin/python -> python2.7

第一个字符“ l”表示文件是符号链接。
“->”符号显示符号链接指向的文件。

删除带有“ rm”的符号链接

“ rm”命令删除给定的文件和目录。

要删除符号链接,请调用“ rm”命令,后跟符号链接名称作为参数:

rm symlink_name

成功后,命令以零退出,不显示任何输出。

使用“ rm”,我们可以一次删除多个符号链接。
为此,将符号链接的名称作为参数传递,并用空格分隔:

rm symlink1 symlink2

要在删除符号链接之前得到提示,请使用“ -i”选项:

rm -i symlink_name

要确认,请键入“ y”,然后按“ Enter”。

rm: remove symbolic link 'symlink_name'?

如果符号链接指向目录,请不要在末尾添加“ /”尾部斜杠。
否则,我们将得到一个错误:

rm symlink_to_dir/
rm: cannot remove 'symlink_to_dir/': Is a directory

如果参数的名称以'/'结尾,则'rm'命令假定该文件是目录。
发生该错误的原因是,如果不使用'-d'或者'-r'选项,则'rm'无法删除目录。

为了安全起见,在删除带有'rm'的符号链接时,请勿使用'-r'选项。
例如,如果我们键入:

rm -f symlink_to_dir/

目标目录的内容将被删除。

使用“取消链接”删除符号链接

'unlink'命令删除一个给定的文件。

与'rm'不同,'unlink'仅接受一个参数。

要删除符号链接,请运行“ unlink”命令,后跟符号链接名称作为参数:

unlink symlink_name

如果命令成功执行,则不显示任何输出。

不要在符号链接名称的末尾添加'/'末尾斜杠,因为'unlink'无法删除目录。

查找和删除损坏的符号链接

如果我们将源文件删除或者移动到其他位置,则符号文件将悬垂(损坏)。

要查找给定目录下所有断开的符号链接,请运行以下命令:

find /path/to/directory -xtype l
/path/to/directory/symlink1
/path/to/directory/subdir/symlink2

该命令将列出目录及其子目录下的所有断开的链接。

如果要排除包含在子目录中的符号链接,请将'-maxdepth 1'选项设置为'find':

find /path/to/directory -maxdepth 1 -xtype l
/path/to/directory/symlink1

找到损坏的符号链接后,可以使用'rm'或者'unlink'手动将其删除,也可以使用'find'命令的'-delete'选项:

find /path/to/directory -xtype l -delete