当我需要在命令行上完成某件事时,我经常从默认的 $> 提示符开始。我这样做是为了在迭代复杂命令时能够快速获得反馈。但是,更多的时候,命令对于命令行来说会变得很大而且难以处理。此外,如果我证明我输入的命令序列已经过验证(它可以工作),我喜欢将该输入序列保存到文件中,以便我可以扩展和抽象它的部分以供以后重新使用。我如何获取该特定历史记录条目的内容?
也许我可以将history -a
所有历史记录输出到外部文件,grep
然后将其传输到输出文件。
理想的情况是使用一个特殊的运算符来!<#>
实际执行命令,但在这种情况下,它不是执行,而是将实际的命令序列作为文本返回,以便我输出到文件中。
我有什么选择?
答案1
echo !<#>
<#>
您的 bash 历史记录中的命令的行号在哪里。
如果您输入history <#>
一个<#>
整数,定义输出行数的限制,那么您就会得到 bash 历史记录。
运行命令和命令选项,grep
其中history 100 | grep "command command-options"
命令和命令选项就是您要查找的内容。现在您可以看到符合 grep 搜索条件的命令列表。
如果历史记录中的行号是 502,您只需输入echo !502
并获取该条目。然后可以将其传输到输出文件中。
echo !502 > myscriptfile