Linux

Bash,插入目前命令的最後使用參數

  • February 7, 2015

我知道你可以回憶上一個命令的最後一個參數,!$也可以循環使用以前的參數,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 參考手冊。你甚至可以將它與histverifyshell 選項結合起來,讓你有機會在命令執行之前檢查它,這讓你接近基於鍵盤互動式歷史的完成。

歷史擴展可以在任何地方使用;所以例如

lastechoargs="!echo:*"

將最後一個echo命令的所有參數儲存在lastechoargs變數中。

這也適用於完整的命令;例如,你已經制定了一個複雜的git命令,並且你想將它保存在一個文件中:

echo !git > mygitcommand

或者你想歸檔一些目錄,但你決定先刪除幾個文件:

ls dir1 dir2
rm dir2/somefile
tar cpzf archive.tar.gz !ls:*

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