Linux
Bash,插入目前命令的最後使用參數
我知道你可以回憶上一個命令的最後一個參數,
!$
也可以循環使用以前的參數,ALT + .
但是你能回憶起用於目前正在使用的命令的最後一個參數嗎?例如,
root@chip:/# echo peckahs root@chip:/# *_stuffthatdoesntmatter_* root@chip:/# *_stuffthatdoesntmatter_* root@chip:/# *_stuffthatdoesntmatter_* root@chip:/# echo peckahs < used key shortcut to recall 'peckahs' the last used argument for echo
使用 bash,您幾乎可以像這樣完成您的要求:
echo !echo:$
所以當你這樣做時
echo This is fun ls echo !echo:$
最後一行輸出
fun
。*
而不是$
產生匹配命令的所有參數;所以echo This is fun ls echo !echo:*
再次輸出
This is fun
;但你也可以這樣做!echo
在這種情況下。
這不僅限於使用相同的命令重複命令的參數:
printf !echo:*
有關詳細資訊,請參閱bash 參考手冊。你甚至可以將它與
histverify
shell 選項結合起來,讓你有機會在命令執行之前檢查它,這讓你接近基於鍵盤互動式歷史的完成。歷史擴展可以在任何地方使用;所以例如
lastechoargs="!echo:*"
將最後一個
echo
命令的所有參數儲存在lastechoargs
變數中。這也適用於完整的命令;例如,你已經制定了一個複雜的
git
命令,並且你想將它保存在一個文件中:echo !git > mygitcommand
或者你想歸檔一些目錄,但你決定先刪除幾個文件:
ls dir1 dir2 rm dir2/somefile tar cpzf archive.tar.gz !ls:*