如何在Linux中删除Linux中的符号链接

时间:2020-03-05 15:29:16  来源:igfitidea点击:

符号链接或者软链接就像指向另一个文件的指针。
请注意,硬盘上只有一个实际文件的副本,以这种方式,我们可以通过简单地创建与它的链接来节省有价值的硬盘空间。

删除符号链接与删除真实文件或者目录相同。

符号链接是指文件名称的链接。

它最重要的优势是它可以用来引用任何地方的文件,即使在世界另一边的计算机上也是如此。
符号链接仍然会起作用。
然而,最大的缺点是符号链接自然依赖于原始文件。
有一些符号链接的属性

  • 链接具有不同的inode号码:每个Linux文件或者目录(从技术角度来看,它们之间没有实际差异)具有inode,此inode包含所有文件的元数据(即,读取所需的所有管理数据文件存储在其inode中)
  • ls -l命令显示所有与第二列值1和链接指向原始文件的链接。
  • 链接包含原始文件的路径,而不是内容。
  • 删除软链接不会影响任何内容,但在删除原始文件时,链接将成为指向不存在文件的悬空链接。

rm和删除命令以删除符号链接

可以使用两个命令删除符号链接:RM并取消链接。
我们可以使用以下命令中的任何一个来删除符号链接。

  • RM:是终端命令,用于删除每个给定文件,包括符号链接。由于符号链接被视为Linux上的文件,因此可以使用RM命令删除它。
# rm linkfile
  • 取消链接:删除单个指定的文件名,包括符号链接。
# unlink linkfile

要删除符号链接文件,我们应该将其列出如下所示的ls -l命令

# ls -l pac
lrwxrwxrwx 1 root root 9 Jan 18 01:57 pac -> /root/pac

pac - >/root/pac显示了原始文件的路径,它是"/root/pac""和"第二列上的"1"值"表示该文件是符号链接文件。

Warning: The command rm and unlink delete files so should be used carefully, make sure you have a proper backup before proceeding.

删除符号链接文件 - 示例

要查看我们如何删除符号链接文件,我们将首先在下面创建一个软链接a

# ln -s /root/script /home/papso

要列出软链接的外观:

# ls -l script
lrwxrwxrwx 1 root root 12 Jan 18 02:32 script -> /root/script

要删除符号链接,可以使用其相对或者绝对路径,但要限制错误,我建议我们使用相对路径。

我们有绝对的道路

# rm /home/papso/script

或者你可以做

# unlink /home/papso/script

我们可以查看以下

# ls -l /home/papso/script
ls: cannot access script: No such file or directory

使用相对路径,我们首先需要移动到符号链接文件目录

# cd /home/papso

现在,我们可以使用上面的一个命令

# unlink script

并检查

# ls -l script
ls: cannot access script: No such file or directory

使用unlink命令时要小心,因为它可以删除常规文件。
如果编写现有的常规文件名而不是符号链接文件名,则将删除常规文件。
见下文

# ls -l file1
-rw-r--r-- 1 root root 0 Jan 18 02:51 file1

我们可以看到File1不是符号链接。
现在我们将使用unlink命令,我们将看到结果。

# unlink file1
# ls -l file1
ls: cannot access file1: No such file or directory

我们看到文件1不存在。
它已被删除

删除符号链接目录 - 示例

要删除符号链接目录,我们将使用与上述相同的过程。
我们将创建一个软链接:

# ls -ld pac
drwxr-xr-x 2 root root 4096 Apr 6 22:54 pac

PAC是将用于测试的文件夹。

# ln -s /root/pac /home/papso/test

查看

# ls -l /home/papso/test/pac
lrwxrwxrwx 1 root root 9 Jan 18 03:00 /home/papso/test/pac -> /root/pac

现在要删除测试符号链接目录,我们将使用相对路径。
我们已经搬到了/home/papso/test文件夹

# rm pac

或者

# unlink pac

我们现在将使用绝对路径检查

# ls -l /home/papso/test/pac
ls: cannot access /home/papso/test/pac: No such file or directory

Unlink命令和没有-r选项的RM命令不会删除常规目录。
两个命令从目录中删除符号链接,因为它被视为文件所以,何时使用rm或者unlink命令从目录中删除符号链接时,请确保不使用/字符结束目标,因为这将是创建错误。

见下文

$mkdir dirfoo
$ln -s dirfoo lnfoo

让我们检查

# ls -l lnfoo
lrwxrwxrwx 1 root root 6 Jan 18 03:16 lnfoo -> dirfoo

现在让我们尝试删除符号链接

# rm lnfoo/
rm cannot remove directory ‘lnfoo/’ : Is a directory

因为/最后表示目录,所以命令不起作用

# unlink lnfoo/
unlink: cannot unlink ‘lnfoo/’: Not a directory

现在让我们尝试没有文件名结束时的'/`字符

# unlink lnfoo

现在让我们检查文件存在

# ls -l lnfoo
ls: cannot access lnfoo: No such file or directory

我们可以看到符号链接已被删除