如何使用“历史记录”命令来触发上次运行的命令?
答案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
重新执行最后一条命令
。......