符号链接目录和输出重定向

符号链接目录和输出重定向

当我运行以下命令时,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 -Psymlinked-dirrealpathrealpath symlinked-dir > tmp

答案2

正如所指出的,读取..目录对我们没有帮助,所以我们必须在符号路径级别解决这个问题。下面列出了其中一种方法:

cd symlinked-dir && echo $(pwd) >> $(realpath -s $(pwd)/../tmp) && cd .. && cat tmp

相关内容