将命令保存到历史记录而不在 bash 中执行

将命令保存到历史记录而不在 bash 中执行

有没有办法将命令保存在 bash 历史记录中而不执行它?例如

$ cmd [a long list of arguments] 

现在打字的时候我想起我想先做点别的事。我可以做点什么吗

$ cmd [a long list of arguments][some-key-strokes]

这实际上并没有执行,而是进入了 bash 历史记录,以便我以后可以使用它?

答案1

可能有更好的方法,但您可以使用历史扩展的:p修饰符来打印当前注释行而不执行。 !#是当前行,它%本身不匹配任何内容

$ cmd [arguments] !#%:p

答案2

使用-shistory命令的选项:

history -s cmd arg1 arg2

对自身的调用history -s很方便地没有被添加到命令历史记录中,因此在您的历史记录中,它看起来就像您执行了cmd但实际上并没有执行。

答案3

我认为您想要的“一些按键”是 Ctrl-U 和 Ctr-Y,它们将一行存储到 kill-ring 中,然后稍后将其拉出。它不会进入历史记录,但我认为它不应该,因为您没有这样做。

Readline 终止命令

杀戮与猛拉

我几年前就学过这个,后来忘了,也去寻找那些按键。

这里也讨论了:https://unix.stackexchange.com/questions/140741/how-to-save-a-command-you-entered-without-executing-it

答案4

通常这是通过

echo 'cmd [a long list of arguments]' >> /home/you/bash_history

请注意,历史记录的名称可能因系统而异。因此,您可以使用环境HISTFILE变量

是什么使得:

echo 'cmd [a long list of arguments]' >> "$HISTFILE"

相关内容