如何在不执行命令的情况下将命令添加到Bash历史记录?


32

时不时地将一个命令直接添加到Bash的历史记录中而不实际执行它会很有用。到目前为止,我发现关闭的东西是#在其前面添加一个并单击return。有更好的方法吗?

Answers:


39

history -s 命令


从不知道该功能。我想不起来马上使用它,但是很高兴知道。
道格·哈里斯

7
您知道是否可以通过脚本运行与此类似的命令吗?我有一个脚本./resize-images.sh,该脚本的最后一行指示您应运行以撤消更改的命令,如果脚本可以将该命令添加到我的历史记录中,那么它将非常有用,因此up-enter如果需要撤消操作,我会直接点击该按钮
Ben Page

1
@BenPage:在此处查看两个答案:unix.stackexchange.com/questions/112354/…
RustyTheBoyRobot

9

history -s 命令

您甚至可以绑定击键为您完成此操作。您可以在Bash提示符下输入以下内容:

bind '"\C-q": "\C-a history -s \C-j"'

或将其添加到您的~/.inputrc

"\C-q": "\C-a history -s \C-j"

然后您可以输入内容并按Ctrl- q,它将被添加到历史记录中,而无需执行。如果您的变量包含或,则“ history”前的空格会导致history命令本身不会添加到历史记录HISTCONTROL中。可以选择另一个按键而不是“ \ Cq”。ignorespaceignoreboth


3

很难提出比一个字符短的“命令”,因此我们确实需要进入按键级别。使用我的bash设置和美国键盘,您现在要做的是:

  1. 转到行首CTRLA:+1条指令,+ 2次按键
  2. #(需要SHIFT):+1指令,+2按键
  3. 使用ENTER+1指令,+ 1按键将其附加到历史记录

因此共有3条指令,5次按键。

使用ALT#不相同的1个指令,2个按键。

YMMV取决于您的键盘布局和bash配置。


3
问题不在于按键数,而是“ #command”存储在历史记录中,而不是预期的“ command”中。
Grumbel

1
最好将“ #command”存储在历史记录文件中,因为它使您知道该命令实际上并未执行。如果您以后想查看输入的命令以找出问题,这可能会很好。
Marnix A. van Ammers,2010年

2
@ Grumbel,@ Marnix:同意,我没有回答这封信的问题,但展示了如何使他现在做的更快。就我个人而言,我认为使用#command方法比起来要快history -s command,而且如果您history-search-backward/-forward正确映射,也非常易于使用。但这是一个品味问题。
本杰明·班尼尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.