.png)
我經常想更改檔案系統上某個檔案的目錄,但我不確定該檔案在哪裡。
我像這樣搜尋它:
find -type f -name "myfile.txt"
為了簡單起見,我們可以說這會回傳一個結果,例如。
/some/super/long/path/that/i dont/want/to/type/myfile.txt
然後我通常會輸入:
cd $(dirname $(!!))
要切換到我正在搜尋的檔案的目錄...
無論如何,是否可以將其放入 shell 腳本或別名中,這樣我基本上可以輸入:
cdlast
它運行:
cd $(dirname $(!!))
使用外殼的歷史記錄?我已經嘗試過了,bash 腳本中似乎缺少 shell 歷史記錄。
答案1
fc -s
再次運行之前的命令:
alias cdlast='cd "$(dirname "$(fc -s 2> /dev/null)")"'
或使用eval "$(history -p !!)"
:
alias cdlast='cd "$(dirname "$(eval "$(history -p !!)")")"'
答案2
您可以使用別名。
alias cdlast='cd "$(dirname "$(eval $(history -p !!))")"'
確保其中有雙引號。如果命令替換的結果有空格,則它們不會被分割成單獨的單字;如果命令替換的結果有特殊字元(如*
和 ) ,則它們會被解釋為通配符模式?
。
答案3
我會使用一個函數:
gotofile () { pushd "$(find . -name "$1" -printf "%h\n")"; }
改變 ”。”適當的某個目錄(也許是“~”)