按 ctrl+c 之前存储命令,之后恢复

按 ctrl+c 之前存储命令,之后恢复

有时,我在命令提示符中键入一个冗长的命令,然后注意到在实际按回车键并执行该命令之前我需要检查一些内容。我按ctrl+c,执行新命令,然后再次输入取消的命令并执行它。

有没有办法“保存”我要取消的命令ctrl+c,并在完成“检查某些内容”命令后恢复它?

请注意,我不想打开另一个终端,因为我通过 ssh 在远程服务器上。

炮弹射击:

$ git commit -am 'FOO-123: fix issue with dorks around bars'^C
$ git status
# On branch foo
modified: foo.php
$ git commit -am 'FOO-123: fix issue with dorks around bars'
1 file changed, 46 deletions(-)
$ 

答案1

在 Unix 中,您可以使用命令行编辑器来完成这样的事情。我通常使用以下命令运行set -o emacs,以便可以直接在命令行上使用以下 Emacs 键:

  1. 显示你的命令行
  2. Ctrl-A- 转到命令行的开头
  3. Ctrl-K- 将整个命令行剪切到内部缓冲区中
  4. ...在这里完成所有需要的工作...
  5. Ctrl-Y- 将命令从缓冲区粘贴到命令行中

您还可以set -o vi使用vi快捷方式来完成此类操作。

答案2

我总是做的就是#在命令前面放置一个注释标记。我可以稍后在历史记录中调用它,删除注释标记,然后执行该命令。

答案3

移动到行首并执行以下操作,而不是按 ctrl-c:

$ history -s "git commit -am 'FOO-123: fix issue with dorks around bars'"

按回车键。它不会执行,但它现在是历史记录中的最后一行。不确定这是否是 bash 特定的。

答案4

与 Goldilocks 的建议类似,移至行首(Emacs 行为为 Ctrl-A)并在前面添加“#”。这会将您的命令变成注释而不是执行它。您用来调用命令(例如 Ctrl-R 或历史记录)的任何技巧都将能够调用该命令,然后您可以移至开头并删除 #。

相关内容