Shell

進入通過連結連結的目錄

  • August 1, 2018

當我cd連結時,我的目前路徑以連結的路徑為前綴,而不是連結連結到的目錄的路徑。例如

~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic

~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic

~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$

我想將目前路徑更改為連結目錄的路徑,以便我也可以使用連結目錄的父目錄。除了ls找到連結目錄的連結,然後cd進入它,還有什麼更簡單的方法可以做到這一點?例如,cd進入連結後,如何將目前路徑更改為連結目錄的路徑?

使用 POSIX shell,您可以使用cd內置-P選項:

cd -P <link>

bash, 從man bash:

-P 選項表示使用物理目錄結構而不是遵循符號連結(另請參見 set 內置命令的 -P 選項)

類似 Korn 的 shell 跟踪目前目錄路徑中的符號連結(這稱為邏輯目前目錄跟踪)。如果要展開所有符號連結,請將選項傳遞-Pcd內置函式(用於物理目前目錄跟踪):

cd -P logic

如果您位於通過符號連結訪問的目錄中,並且想要將跟踪的目前目錄切換到擴展符號連結的路徑,請執行

cd -P .

如果要列印目前目錄的路徑並展開符號連結,請執行pwd -P. 在 bash 中,如果要關閉邏輯跟踪,請執行set -P; 在 zsh 中,執行set -wsetopt chase_links.

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