2016-05-17 52 views
4

如果你在一個交互式shell,並鍵入類似:如何在命令行獲得先前命令的第n個參數?

echo this is it 

後來的後來,你可以展開第一個參數:

echo !^ #=> echo this 

或者你可以展開最後一個參數:

echo !$ #=> echo it 

但現在我想知道:

我該怎麼交流請問第一個參數是n?我通過a related bash question看了看,但是好像只有工作在一個腳本時,因爲!n剛剛經過我的命令歷史記錄(而不是我的論點歷史) - 例如

echo !1 #=> echo ls 

這是有道理的,因爲

history | grep -E '^\s+1 ' #=> 1 ls 

,但我要的是echo !(some correct index) #=> echo is

回答

9

這樣:

~ $ echo this is it 
~ $ echo !!:2 
echo is 
is 

!!:n是第n ARG
!!:n-$是從第n個參數傳遞給持續

注:!!擴展到最後一個命令


作爲每OPS的EDIT( moved):

第二個參數第二個到最後一個命令:

~ $ echo foo bar baz # This one is the target 
foo bar baz 
~ $ echo catz ratz batz 
catz ratz batz 
~ $ echo !-2:2 
echo bar 
bar 

!-n擴展爲'n'麻痹的命令當前命令之前的命令。

注意:!-1!!是相同的。