2010-07-30 56 views
195

在Bash中有沒有辦法回憶前一個命令的論點?我該如何回憶前一個bash命令的參數?

我通常做vi file.c其次是gcc file.c

在Bash中有沒有辦法回憶上一個命令的論點?

+2

可能重複:http://stackoverflow.com/questions/4009412/bash-first-argument-of-the-previous-command – eugenevd 2013-07-11 14:25:11

回答

350

您可以使用$_!$來調用上一個命令的最後一個參數。

也可以使用Alt + .回憶任何前面的命令的最後一個參數。

+75

另外,如果你想要一個任意參數,您可以用'! :1','!!:2'等('!!:0'是前一​​個命令本身。)請參見http://www.gnu.org/software/bash/manual/bashref.html#History-交互 – janmoesen 2010-07-30 12:21:54

+17

與'!$'類似,您使用'!^'作爲第一個參數。 – Will 2015-10-26 21:22:26

+2

ahh ... * nix ...你是一個美麗的東西...每天我更愛你 – jx12345 2017-05-26 12:36:42

14

是的,您可以使用!$回憶上一個命令的最後一個參數。

111

如果前面的命令有兩個參數,這樣

ls a.txt b.txt 

,你想第一個,您可以鍵入

!:1 

a.txt 

或者,如果你想兩者,你都可以輸入

!:1-2 

a.txt b.txt 

可以將此擴展到任意數量的參數,如:

!:10-12 
+0

'!:1-2'對我不起作用 – RNA 2014-02-14 06:16:49

+0

@RNA,我只是再次嘗試一次以確保我沒有包含錯別字,能否提供更多的細節(例如,ubuntu命令行,cygwin for windows ?錯誤信息?上一行?) – 2014-02-14 14:59:11

+0

我正在使用GNU bash,版本3.2.51(1) - 釋放(x86_64-apple-darwin13) 錯誤消息是'-bash ::1-2:壞詞說明符' – RNA 2014-02-14 18:21:50

49

在命令行中,你可以按ESC - alt +

它循環使用以前的參數。

20

如果您知道特定命令的歷史記錄中給出的數字,則可以使用以下術語幾乎在該命令中使用任何參數。

使用下面從歷史中的第三個命令把第二個參數,

!3:2

使用以下采取的第三個參數從第五最後的命令歷史記錄,

!-5:3

使用減號,您要求它從歷史記錄的最後一個命令開始遍歷。

29

!!:n其中n是您想要的參數的基於0的位置。

例如:

echo 'one' 'two' 
# "one two" 

echo !!:2 
# "two" 

!前綴用於訪問先前的命令。

其他有用的命令:

  • !$ - 第一個參數(程序/內置/腳本之後)從以前的命令
  • !! - - 前一個命令(從以前的命令
  • !^最後一個參數通常發音爲「砰砰」)
  • !n - 命令號碼nhistory
  • !pattern - 最近的命令匹配pattern
  • !!:s/find/replace - 最後一條命令,替換findreplace

More info on command history

+1

而不是'!!:s/find/replace',你也可以'^ find^replace'。 – 2017-04-16 18:28:09

+0

非常niiiice !!! – smarber 2018-02-21 15:05:40

3

*運行與以前的所有參數的新命令!

ls /tmp 
cd !* 
#you are now in /tmp 
相關問題