`cat ../ test`找不到文件。如何强制`cat`不解析符号链接?

时间:2018-10-30 13:19:35

标签: bash path symlink

我将此文件创建为:

$ echo "ABC" > /home/kes/test

我可以cd回家并离开它:

kes@work ~/s $ cd ..
kes@work ~ $ cat test
ABC
kes@work ~ $ cd s
kes@work ~/s $ 

~/s是软链接:

kes@work ~/s $ pwd
/home/kes/s
kes@work ~/s $ pwd -P
/home/kes/work/projects/safevpn/repo2

但是当我使用相对路径时,它不起作用:

kes@work ~/s $ cat ../test
cat: ../test: No such file or directory

但是

我不希望cat尝试在父目录中打开文件(解析符号链接),因为cd不能解决该问题:

$ rm /home/kes/test
$ mkdir /home/kes/test
$ cd ~/s
$ cd ../test
$ pwd
/home/kes/test

如何使这些命令保持一致?

1 个答案:

答案 0 :(得分:3)

如果您阅读cd的手册页,则会看到cd可以或不能解析软链接,具体取决于您提供的选项(-L或{{ 1}})。如果未提供任何选项,则-P使用默认的cd,这意味着不解析软链接。

  

如果同时指定了-L和-P选项,则这些选项中的最后一个   应使用
         其他所有人都忽略了。如果既未指定-L也未指定-P,则操作数应为
         逻辑上处理点对点;

  

-L逻辑上处理操作数点-点;符号链接   组件应
                   在处理点-点组件之前无法解析(请参阅步骤8。
                   和9.在Description中)。