当我键入ls -la
列出所有文件时,我看到:
11 Jul 9 12:04 libcrypto.so -> libcrypto.so.0
我试图更改 libcrypto 的名称:
mv libcryto.so libpmcrypto.so
现在它显示:
11 Jul 9 12:04 libpmcrypto.so -> libcrypto.so.0
这有什么影响吗?箭头是什么意思?
有问题的文件是一个符号链接。这在概念上类似于快捷方式的概念,但如果您使用它(打开、复制等),它似乎是真正的文件。符号链接是“指向”真实文件的另一个名称。当您这样做时ls -l
,它还会向您显示链接指向的文件。重命名链接对原始文件没有影响,但可能会破坏依赖链接名称的内容,就像任何其他文件名一样。删除链接只是删除指针,对原始文件没有影响。删除原始文件将使链接处于“断开状态”,其中链接指向任何内容。
编辑
您不能真正编辑符号链接指向的内容。您可以使用命令删除它们,rm
然后使用ln -s
命令重新创建它们。查看手册页以获取更多信息。
->
意味着 libpmcrypto.so 是一个符号链接,存储在 libcrypto.so.0 中的信息可通过 libpmcrypto.so 文件访问。
如何创建符号链接:
ln -s [TARGET DIRECTORY OR FILE] ./[SHORTCUT]
例如:
ln -s /usr/local/apache/logs /home/el/logs
如果您删除软链接本身(/home/el/logs),文件(/usr/local/apache/logs)仍然存在。
如何找到符号链接:
find ./ -type l
阅读man ln
有关链接的更多信息。
ls -la
将使用符号链接显示指向模块的文件
例如,在您的库目录中,您有指向 .so 文件(共享对象)的文件。
这意味着它不需要重新编译。您没有简单的方法来判断文件是如何链接的。
是的,这确实改变了一些东西,事实上你不应该改变共享库,因为当第 3 方程序试图调用libcryto.so 时,它不会再存在了。
但是,如果您确定要更改名称,我建议您在超级用户模式下调用 nautilus:
sudo nautilus /THE/FOLDER/WHERE/YOUR/FILE/IS
并通过将.0添加到符号链接名称的末尾来手动编辑它。您正在更改其名称的一部分,因此每当程序尝试调用它时,它都无法找到它。