Bash

符號連結目錄和輸出重定向

  • October 9, 2019

當我執行以下命令時,symlinked-dir就在哪裡 - 到另一個目錄的符號連結,cat抱怨沒有這樣的文件。實際上,沒有這樣的文件——它是在真實路徑的父目錄中創建的,它包含通過 symlink 輸出的符號連結的路徑,pwd因此至少知道它們在哪裡,連結方式。我也希望重定向知道它。cd``pwd

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

那麼,我應該進行哪些修改才能使上述命令正常工作?

編輯:外殼是 Debian 或 Gentoo 上的 Bash(兩者的工作方式相同)。

只是:

(cd symlinked-dir && pwd) >> tmp && cat tmp

我們cd在子shell中執行的地方,因此它只會影響該子shell並在子shell之外執行重定向(甚至在創建子shell之前)。

如果您想要pwd. 雖然如果你有一個命令,那麼你可以簡單地用.pwd -P``symlinked-dir``realpath``realpath symlinked-dir > tmp

正如所指出的,讀取..目錄對我們沒有幫助,所以我們必須在符號路徑級別解決這個問題。下面列出了其中一種方法:

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

引用自:https://unix.stackexchange.com/questions/545653