Bash
符號連結目錄和輸出重定向
當我執行以下命令時,
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