符号链接指向看似无效的位置,但它却有效

符号链接指向看似无效的位置,但它却有效

假设我正在使用的根文件夹是frameworks/av,并且该文件夹具有以下内容:

-rw-rw-r--  1 <user> <user>    94 Mar 21 14:34 Android.bp
drwxrwxr-x  8 <user> <user>  4096 Mar 21 14:34 camera/
-rw-rw-r--  1 <user> <user>  5394 Jul 16  2018 CleanSpec.mk
drwxrwxr-x  4 <user> <user>  4096 Jul 16  2018 cmds/
drwxrwxr-x  8 <user> <user>  4096 Jul 16  2018 drm/
drwxrwxr-x  2 <user> <user>  4096 Mar 26 21:30 .git/
drwxrwxr-x  8 <user> <user>  4096 Mar 21 14:34 include/
drwxrwxr-x 25 <user> <user>  4096 Mar 21 14:34 media/
-rw-rw-r--  1 <user> <user>     0 Mar  2  2018 MODULE_LICENSE_APACHE2
-rw-rw-r--  1 <user> <user> 17680 Mar  2  2018 NOTICE
-rw-rw-r--  1 <user> <user>    76 Jul 16  2018 OWNERS
drwxrwxr-x  3 <user> <user>  4096 Mar 21 14:34 packages/
drwxrwxr-x 14 <user> <user>  4096 Mar 21 14:34 services/
drwxrwxr-x  2 <user> <user>  4096 Jul 16  2018 soundtrigger/
drwxrwxr-x  3 <user> <user>  4096 Mar 21 14:34 tools/

在 中frameworks/av/include/media/stagefright,我找到了这个链接foundation,根据其描述,它应该指向frameworks/av/foundation/...

lrwxrwxrwx 1 <user> <user> 57 Jul 16 2018 foundation -> ../../../foundation/include/media/stagefright/foundation//

foundation真正让我困惑的是中没有文件夹frameworks/av,但我却可以正常点击链接。 给出的真正目标readlink -f foundationframeworks/av/media/libstagefright/foundation/include/media/stagefright/foundation

这是怎么回事?怎么会foundation神奇地转化为media/libstagefright/foundation

答案1

当你进入时,frameworks/av/include/media/stagefright至少有一个符号链接要经过。实际上,逻辑路径是这样的,frameworks/av/include/media/stagefright但物理路径不是。

然后,有问题的符号链接会向上移动三层 ( ../../../),并且会进一步移动,但这会使用您显然不知道的物理目录结构。不过,您的 shell 可能仍会跟踪逻辑路径。

比较为什么ls ..当我位于符号链接目录中时会显示真实的父内容?

相关内容