有时,我在命令提示符中键入一个冗长的命令,然后注意到在实际按回车键并执行该命令之前我需要检查一些内容。我按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 键:
- 显示你的命令行
Ctrl-A
- 转到命令行的开头Ctrl-K
- 将整个命令行剪切到内部缓冲区中- ...在这里完成所有需要的工作...
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 或历史记录)的任何技巧都将能够调用该命令,然后您可以移至开头并删除 #。