当我运行以下命令时,symlinked-dir
只是那个 - 到另一个目录的符号链接,cat
抱怨没有这样的文件。事实上,不存在这样的文件 - 它是在真实的路径代替,但它包含通过 输出的符号链接的路径pwd
,因此至少cd
知道pwd
它们在链接方面的位置。我希望重定向也知道这一点。
cd symlinked-dir && echo $(pwd) >> ../tmp && cd .. && cat tmp
那么,我应该进行哪些修改才能使上述命令正常工作?
编辑:Debian 或 Gentoo 上的 shell 是 Bash(两者工作方式相同)。
答案1
只是:
(cd symlinked-dir && pwd) >> tmp && cat tmp
我们在子 shell 中运行,cd
因此它只影响该子 shell 并在子 shell 之外(甚至在创建子 shell 之前)执行重定向。
如果您想要 .txt 文件的规范(无符号链接)绝对路径,请替换pwd
为。不过,如果您有命令,那么您可以简单地使用 来完成。pwd -P
symlinked-dir
realpath
realpath symlinked-dir > tmp
答案2
正如所指出的,读取..
目录对我们没有帮助,所以我们必须在符号路径级别解决这个问题。下面列出了其中一种方法:
cd symlinked-dir && echo $(pwd) >> $(realpath -s $(pwd)/../tmp) && cd .. && cat tmp