Linux:命令ls -la显示指向另一个文件的文件。那是什么意思?

时间:2013-07-09 20:24:17

标签: bash symlink ls

当我输入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

这会影响什么吗?箭头是什么意思?

4 个答案:

答案 0 :(得分:10)

有问题的文件是符号链接。这在概念上类似于快捷方式的想法,但如果您使用它,它似乎是真实的文件(打开它,复制它等)。符号链接是另一个“指向”真实文件的名称。执行ls -l时,它还会显示链接指向的文件。重命名链接对原始文件没有影响,但可能会破坏依赖于链接名称的内容,就像使用任何其他文件名一样。删除链接只会删除指针,并且不会影响原始文件。删除原始文件会使链接处于“已损坏状态”,其中链接指向任何内容。

修改 的 您无法真正编辑符号链接指向的内容。您可以使用rm删除它们,然后使用ln -s命令重新创建它们。请查看手册页以获取更多信息。

答案 1 :(得分:9)

->表示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了解有关链接的更多信息。

答案 2 :(得分:1)

ls -la将使用符号链接显示指向模块的文件

例如,在您的库目录中,您有指向.so文件(共享对象)的文件。

这意味着它不需要重新编译。你没有简单的方法来告诉文件是如何链接的。

答案 3 :(得分:1)

是的,确实会改变某些内容,实际上您不应该更改共享库,因为当第三方程序尝试调用 libcryto.so 时,它将不再存在。

但如果您确定要更改名称,我建议您以超级用户模式呼叫nautilus:

sudo nautilus /THE/FOLDER/WHERE/YOUR/FILE/IS

通过将 .0 添加到符号链接名称的末尾,手动编辑它。您正在更改其名称的一部分,因此每当程序尝试调用它时,它都无法找到它。