有没有办法将命令保存在 bash 历史记录中而不执行它?例如
$ cmd [a long list of arguments]
现在打字的时候我想起我想先做点别的事。我可以做点什么吗
$ cmd [a long list of arguments][some-key-strokes]
这实际上并没有执行,而是进入了 bash 历史记录,以便我以后可以使用它?
答案1
可能有更好的方法,但您可以使用历史扩展的:p
修饰符来打印当前注释行而不执行。 !#
是当前行,它%
本身不匹配任何内容
$ cmd [arguments] !#%:p
答案2
使用-s
该history
命令的选项:
history -s cmd arg1 arg2
对自身的调用history -s
很方便地没有被添加到命令历史记录中,因此在您的历史记录中,它看起来就像您执行了cmd
但实际上并没有执行。
答案3
我认为您想要的“一些按键”是 Ctrl-U 和 Ctr-Y,它们将一行存储到 kill-ring 中,然后稍后将其拉出。它不会进入历史记录,但我认为它不应该,因为您没有这样做。
我几年前就学过这个,后来忘了,也去寻找那些按键。
答案4
通常这是通过
echo 'cmd [a long list of arguments]' >> /home/you/bash_history
请注意,历史记录的名称可能因系统而异。因此,您可以使用环境HISTFILE
变量
是什么使得:
echo 'cmd [a long list of arguments]' >> "$HISTFILE"