我该如何回忆前一个bash命令的参数?


Answers:


562

您可以使用$_!$调用上一个命令的最后一个参数。

Alt + .可以用于调用任何先前命令的最后一个参数。


121
另外,如果您想使用任意参数,则可以使用!!:1!!:2等等(这!!:0是上一个命令本身。)请参阅gnu.org/software/bash/manual/bashref.html#History-Interaction
janmoesen 2010年

41
与相似 !$,您使用!^第一个参数。
威尔

13
嗯... * nix ...你
真是个

我们如何引用上一个命令的倒数第二个参数?例如,如果我给了echo tiger rabbit,我tiger该如何参考以下命令?
灿金

3
Alt + .在vi模式下不起作用。仅供参考,对于在此感到困惑的其他人。
布莱恩·麦卡顿

160

如果前面的命令有两个参数,像这样

ls a.txt b.txt

而您想要第一个,您可以输入

!:1

给予

a.txt

或者,如果您俩都想要,则可以输入

!:1-2

给予

a.txt b.txt

您可以将其扩展为任意数量的参数,例如:

!:10-12

@RNA,我只是再次尝试以确保没有输入错字,您能否提供更多细节(例如ubuntu命令行,cygwin for Windows?错误消息?上一行?)
Robert Gowland

我正在使用GNU bash版本3.2.51(1)-发行版(x86_64-apple-darwin13)版权所有(C)2007自由软件基金会,公司。错误消息是-bash: :1-2: bad word specifier
RNA

2
如果上一行中没有两个参数,我会得到相同的结果。例如。1号ls a.txt线2 号线ll !:1-2
罗伯特·高兰

你是对的。那是我犯的一个愚蠢的错误。谢谢!
RNA

同样,为了获得所有参数,!:^-$可以使用数字,当然也可以使用类似的代码。
816-8055 2015年

88

!!:n这里n是你想要的参数的从零开始的位置。

例如:

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

echo !!:2
# "two"

!前缀用于访问先前的命令。

其他有用的命令:

  • !$ -上一个命令的最后一个参数
  • !^ -上一个命令的第一个参数(在程序/内置/脚本之后)
  • !! -先前的命令(通常发音为“ bang bang”)
  • !n- n来自的命令号history
  • !pattern -最新命令匹配 pattern
  • !!:s/find/replace-最后一个命令,findreplace

有关命令历史记录的更多信息


7
相反!!:s/find/replace,您也可以^find^replace
大McLargeHuge

另外:!* -上一个命令的所有参数(在程序/内置/脚本之后)。例如: ls *.tmp *.cache rm !*
Aphoid

68

在命令行中,您可以按esc- .alt+.

它循环显示先前命令的最后一个参数


我一直都发现键也能正常工作。

@Bucket键去虽然前面的命令,而由Antonio提供的解决方案允许经过先前的参数(每个先前命令的最后一个参数只)
everyonesdesign

30

如果您知道特定命令在历史记录中给出的数字,则可以使用以下术语在该命令中使用几乎任何参数。

使用以下命令从历史记录中的第三个命令获取第二个参数,

!3:2

使用以下命令从历史记录中的倒数第五个命令中提取第三个参数,

!-5:3

使用减号,您要求它从历史记录的最后一个命令开始遍历。


19

!*使用先前的所有参数运行一个新命令。

ls /tmp
cd !*
#you are now in /tmp

这在OSX上对我不起作用-必须使用$_
迈克W

16

是的,您可以用来调!$出前一个命令的最后一个参数。


请注意关键字“ last”,尤其是在您的命令包含多个参数的情况下。
存储桶
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.