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

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

如何使用“历史记录”命令来触发上次运行的命令?

答案1

你不会。你会使用!!

答案2

正如 Ignacio 所说,使用!!,但如果你坚持:

$(history | sed '$d' | sed -n '$p' | cut -d ' ' -f 3-)

解释:

  • $()执行里面命令的输出
  • 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而不是 ,!!因为您使用的 shell 没有!!,那么您就没那么幸运了;history是内置的 shell,而不是程序。如果没有 ,简单的 shell 就不太可能有它!!。例如,dash 没有:

imgx64@home:~$ dash
$ history
dash: history: not found
$ 

答案3

在 Bash 中,该fc命令可能会执行您要查找的操作。

man bash

...
在第二种形式中,每次用 rep 替换 pat 后,都会重新执行命令。与此一起使用的一个有用别名是 r="fc -s",这样就可以输入r cc运行最后一条以cc并输入r重新执行最后一条命令
。......

相关内容