Symlink
重新cd到目前目錄
我在一個符號連結的目錄中
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_a
to更改為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"
顯然,如果某個程序刪除了您所在的目錄,這將不起作用,因為不再有通往
..
根目錄的路徑。