Symlink

重新cd到目前目錄

  • September 30, 2022

我在一個符號連結的目錄中

me@hostname:/home/me$ ls -al
the_link -> actual_a
actual_a
actual_b
actual_c
me@hostname:/home/me$ cd the_link
me@hostname:/home/me/the_link$

現在,當我打開 shell 時,其他一些程序將符號連結從the_link -> actual_ato更改為the_link -> actual_b,甚至可能更改為rm -rf actual_a. 如果我在我的 shell 中執行一個命令,它會做一些奇怪的事情。有沒有辦法告訴cd“re-cd”進入我所在的目錄?

顯然我可以

me@hostname:/home/me/the_link$ cd ..
me@hostname:/home/me$ cd the_link

但我可以在一個命令中完成嗎?

cd .

可能對你有用。如果沒有,那當然有

cd ../folder

它將上升一個文件夾並進入命名文件夾。

一些 shell 有一個內置版本,pwd通過執行cd. 另一方面,該/bin/pwd命令通過從目前點遍歷文件系統到根節點來確定您在文件系統中的真實位置,同時生成目錄路徑。

您可以使用它來獲取目前位置的目錄路徑,然後您可以強制更改目錄以匹配新的現實

cd "$(/bin/pwd)"

例子

mkdir /tmp/x
cd /tmp/x


   # In another terminal
   mkdir /tmp/y
   mv /tmp/x /tmp/y/z


pwd                 # "/tmp/x"   - where the shell thinks you are
/bin/pwd            # "/tmp/y/z" - where you actually are

cd "$(/bin/pwd)"
pwd                 # "/tmp/y/z"

顯然,如果某個程序刪除了您所在的目錄,這將不起作用,因為不再有通往..根目錄的路徑。

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