Bash

cd 從已刪除的文件夾中取出

  • March 27, 2016

有沒有辦法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")"

(如果目錄名稱中沒有空格或萬用字元,則不需要雙引號)。

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