首先祝大家新年快乐!我对 UNIX\Linux 非常陌生,并且错误地创建了以下符号链接:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/phpmyadmin.confservice
正确的方法是什么删除它及其背后的逻辑是什么?:
我知道我应该unlink ***something***
在文件夹内执行命令/etc/apache2/conf-enabled/
,然后导航到它......因此我问:
为什么删除操作是基于第二条路径而不是在第一个路径中完成......?
一般情况下,除了文件名之外,还需要写什么吗?
- 我害怕造成伤害,所以我问这个......
答案1
从man rm
:
rm 实用程序删除符号链接,而不是链接引用的文件。
所以就这样做吧rm /etc/apache2/conf-enabled/phpmyadmin.confservice
。
在提出问题之前,您应该学习使用man
任何实用程序,就像一般建议一样。这会节省你的时间,而且你会学到很多东西。
我害怕造成伤害,所以我问这个......
我绝对理解这种感觉,当我做一些不太理解的新事情时也是如此!解决方案是制作一些可以使用的测试文件。事实上,某些命令甚至有一个“空运行”选项,使它们向您显示它们将执行哪些步骤,而无需实际执行它们。
一般情况下,除了文件名之外,还需要写什么吗?
写在哪里---在符号链接中?符号链接实际上只包含它所指向的文件的路径(以文本格式)。您可以通过执行以下操作来打印符号链接的内容readlink my_link
。
答案2
符号链接通常创建为(从页面man
):
ln -s target link_name
这里,target
是一个已经存在的实体(例如文件或目录);link_name
是目标文件的(符号)链接(指针或快捷方式,如果你可以这么说的话)的名称。
在你的例子中,/etc/phpmyadmin/apache.conf
目标是——看起来像是 PHP 的一些配置文件。而 是/etc/apache2/conf-enabled/phpmyadmin.confservice
您正在创建的符号链接。
说到删除问题,通常会删除link_name
提供给 的第二条路径ln
,但不会删除target
.这样做会保留原来链接的文件;它只是“取消链接”创建的新名称。在您的情况下,删除/etc/apache2/conf-enabled/phpmyadmin.confservice
将保留原始配置文件/etc/phpmyadmin/apache.conf
。如果需要,您可以创建另一个指向相关目标的符号链接。
最后,如果在创建符号链接后删除target
,则会形成“损坏的链接”。如果这样做ls -l
,符号链接将以红色突出显示。请注意,删除符号链接的目标与禁止的操作完全不同——它只是不是典型的用例。
答案3
如果您想要详细信息,请点击评论中的链接,但对您的问题的简单回答是,符号链接就像其他内容的快捷方式。 (第二条路是这里的符号链接)
所以如果你删除快捷方式,它不会对原来的东西造成任何损害
您可以为快捷方式命名任何您想要的名称。