使用“历史”命令来触发上次运行命令?

ajs*_*sie 2 linux debian bash ubuntu

如何使用“history”命令来触发上次运行命令?

Ign*_*ams 8

你不会。你会用!!.


img*_*x64 6

正如伊格纳西奥所说,使用!!, 但如果你坚持:

$(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)
Run Code Online (Sandbox Code Playgroud)

解释:

  • $() 执行里面的命令的输出
  • sed '$d' 删除最后一个命令,即 2001 $(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)
  • sed -n '$p' 只打印最后一行,即 2000 yourpreviouscommand
  • cut -d ' ' -f 3- 去掉前三个字段,用空格隔开,即 <space>2000<space>

我认为它可以变得更简洁和健壮,但它现在有效。

编辑:如果您想使用history而不是!!因为您使用的外壳没有!!,那么您就不走运了;history是一个内置的shell,而不是一个程序。如果没有!!. 例如,破折号不会:

imgx64@home:~$ dash
$ history
dash: history: not found
$ 
Run Code Online (Sandbox Code Playgroud)