e_mam106 Asked: 2019-08-31 07:49:35 +0800 CST2019-08-31 07:49:35 +0800 CST 2019-08-31 07:49:35 +0800 CST 正确取消链接硬链接 772 我有一个像这样的脚本 ln /myfile /dev/${uniquename}/myfile 我想删除链接/dev/somename/myfile以减少链接数。 我该怎么做呢? hard-link 4 个回答 Voted Best Answer houninym 2019-08-31T08:03:59+08:002019-08-31T08:03:59+08:00 TL;DR ...只需删除您不想要的文件名(使用rm)。 如果您创建一个硬链接(这是您上面的命令正在执行的操作),您将有两个名称指向同一个存储区域。您可以在不影响另一个名称或存储的情况下删除其中一个名称——只有当姓氏被删除时,存储区域才会被释放。 将此与软链接进行比较...创建与ln -s- 那里的链接不同,它是指向原始名称的指针而不是指向存储的指针。如果您删除原始命名文件,则软链接指向已删除的内容,因此链接仍然存在但已损坏。 user4556274 2019-08-31T08:06:08+08:002019-08-31T08:06:08+08:00 删除硬链接的命令是rm. 从手册页rm: Remove (unlink) the FILE(s). WGroleau 2019-08-31T19:16:16+08:002019-08-31T19:16:16+08:00 我有点不确定你的意思,但我认为你的脚本创建/myfile为硬链接/dev/…/myfile,然后你想删除后者。 如果这是正确的,而不是链接然后删除链接,您可以只移动文件,在单个命令 (mv) 而不是两个命令 (ln 和 rm) 中产生相同的结果: mv /dev/…/myfile / juhist 2019-09-01T02:07:27+08:002019-09-01T02:07:27+08:00 大多数现有答案都提倡使用rm. 这是完全正确的,因为您没有删除文件:您删除了链接(当指向它的最后一个链接被删除并且最后一个打开的文件描述符被关闭时,文件被删除)。 但是,您也应该知道另一个实用程序,unlink. 它缺少 的选项rm,并且总是有隐式-f选项(有点——它会在丢失的文件上失败,不过)。好处是您可以删除以破折号开头的文件,至少在理论上... ...除非你不能,如果你使用 Linux 系统,因为 GNUunlink通过添加命令行选项支持削弱了该实用程序!所以unlink -t不会删除-t在 Linux 系统或任何其他使用 GNU coreutils 的系统上命名的文件。 (是的,我知道rm -- -t或unlink -- -t有效,无需对此发表评论。)
TL;DR ...只需删除您不想要的文件名(使用
rm
)。如果您创建一个硬链接(这是您上面的命令正在执行的操作),您将有两个名称指向同一个存储区域。您可以在不影响另一个名称或存储的情况下删除其中一个名称——只有当姓氏被删除时,存储区域才会被释放。
将此与软链接进行比较...创建与
ln -s
- 那里的链接不同,它是指向原始名称的指针而不是指向存储的指针。如果您删除原始命名文件,则软链接指向已删除的内容,因此链接仍然存在但已损坏。删除硬链接的命令是
rm
.从手册页
rm
:我有点不确定你的意思,但我认为你的脚本创建
/myfile
为硬链接/dev/…/myfile
,然后你想删除后者。如果这是正确的,而不是链接然后删除链接,您可以只移动文件,在单个命令 (mv) 而不是两个命令 (ln 和 rm) 中产生相同的结果:
大多数现有答案都提倡使用
rm
. 这是完全正确的,因为您没有删除文件:您删除了链接(当指向它的最后一个链接被删除并且最后一个打开的文件描述符被关闭时,文件被删除)。但是,您也应该知道另一个实用程序,
unlink
. 它缺少 的选项rm
,并且总是有隐式-f
选项(有点——它会在丢失的文件上失败,不过)。好处是您可以删除以破折号开头的文件,至少在理论上......除非你不能,如果你使用 Linux 系统,因为 GNU
unlink
通过添加命令行选项支持削弱了该实用程序!所以unlink -t
不会删除-t
在 Linux 系统或任何其他使用 GNU coreutils 的系统上命名的文件。(是的,我知道
rm -- -t
或unlink -- -t
有效,无需对此发表评论。)