2010-07-30 23 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 
相关问题