Bash
cd 從已刪除的文件夾中取出
有沒有辦法
cd
退出剛剛刪除的目錄(上一層到仍然存在的上層文件夾?我經常會為某個文件夾打開一個控制台,然後我用我的臨時測試數據刪除該文件夾並創建另一個。
但是,當我嘗試離開已刪除的文件夾時,兩者
cd ..
都只cd $(pwd)/..
能讓我進入垃圾箱,而不是上層目錄。所以,目前的情況是:
$ mkdir -p /home/me/test/p1 $ cd /home/me/test/p1
現在我刪除文件夾 p1
$ cd .. me:~/.local/share/Trash/files$ ...
我現在正在尋找一種進入
/home/me/test/
而不是進入垃圾箱的方法。有這樣的命令嗎?
PWD 變數保存目前路徑定義。
上一層樓
cd $(dirname $PWD)
將擴大到
cd $(dirname /home/me/foo/bar/baz/deleteddirectory)
誰擴展到
cd /home/me/foo/bar/baz/
這假設您只刪除一級目錄。
shell 將目前工作目錄的路徑儲存在變數 中
PWD
。除非另有配置,否則這是指定給 shell 的路徑,即使目錄已被移動或涉及符號連結也是如此。因此,即使目錄的實際位置不同,您也可以使用它來更改目錄的明顯父級。例如,cd /foo/bar
設置PWD
為/foo/bar
即使bar
是符號連結(cd -P
使 shell 改為解析符號連結)並且PWD
即使隨後移動或刪除目錄也保持設置。
PWD
因此,您可以通過在最後一個斜杠之後取出並剝離部分來更改到明顯的父目錄:cd ${PWD%/*}
如果目錄路徑中有空格或萬用字元,則需要引號:
cd "${PWD%/*}"
在 zsh 中,這可以縮寫為
cd $PWD:h
您也可以使用更長但也許更難忘的
cd "$(dirname "$PWD")"
(如果目錄名稱中沒有空格或萬用字元,則不需要雙引號)。