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

Dao*_*Lam 5 bash symlink ls

当我输入ls -la列出所有文件时,我看到:

11 Jul  9 12:04 libcrypto.so -> libcrypto.so.0
Run Code Online (Sandbox Code Playgroud)

我试图更改libcrypto的名称:

mv libcryto.so libpmcrypto.so
Run Code Online (Sandbox Code Playgroud)

现在它显示:

11 Jul  9 12:04 libpmcrypto.so -> libcrypto.so.0
Run Code Online (Sandbox Code Playgroud)

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

Ian*_*ird 11

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

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


Ami*_*mit 10

-> 表示libpmcrypto.so是一个符号链接,存储在libcrypto.so.0中的信息可以通过libpmcrypto.so文件访问.

如何创建符号链接:

ln -s [TARGET DIRECTORY OR FILE] ./[SHORTCUT]
Run Code Online (Sandbox Code Playgroud)

例如:

ln -s /usr/local/apache/logs /home/el/logs
Run Code Online (Sandbox Code Playgroud)

如果删除软链接本身(/ home/el/logs),文件(/ usr/local/apache/logs)仍然存在.

如何找到符号链接:

find ./ -type l
Run Code Online (Sandbox Code Playgroud)

阅读man ln有关链接的更多信息.