在 bash 中,如何清除当前输入?

假设在 bash 中开始编写如下命令:

$ rm -rf /foo/bar/really/long/path/here

然后意识到你根本不想执行它。有没有办法用一次或两次击键来清除输入?

我最近一直在做的是在 echo 前面加上引号(Ctrl + A,echo ",Ctrl + E,") ,然后按回车键。有更快的方法吗?

46581 次浏览
  1. Ctrl-美国删除光标之前的所有内容。已删除的命令将存储在缓冲区中。按 Ctrl-为什么粘贴已删除的命令。

    (可选: 按 Ctrl-E先跳到输入端)

  2. 或者,按 < kbd > Ctrl -< kbd > C 终止您正在键入的内容。

尝试 Ctrl + 美国。这样可以清除输入线。

寻找的时候,在 http://www.ice2o.com/bash_quick_ref.html找到了一个简短的参考。

Ctrl + 你好(如果不在行的末尾)加上 Ctrl + 就可以了。

有两个选择

Ctrl + C-这将清除整个行,无论光标在哪里。

Ctrl + -这样可以清除从光标位置到开始的直线。

考虑使用 Ctrl-美国(或者 Ctrl-E,然后是 Ctrl-美国)将把您清除的内容存储在一个缓冲区中,以便稍后可以使用 Ctrl-为什么粘贴它。

要删除当前行,请尝试:

Ctrl-X Ctrl-美国

作为替代方案,你可以使用:

埃斯克-D

在 ~/. inputrc 中要求:

"\ed": kill-whole-line

见: http://codesnippets.joyent.com/posts/show/1690

在 bash 中按 埃斯克退格将清除所有到光标位置的内容。

(在 Cygwin 中,这将清除直到下一个单词的输入。单词由空格、下划线、 ... 分隔。)

Ctrl-美国Ctrl-K也有同样的效果。

Ctrl-美国删除从行首到游标的所有内容,Ctrl-K删除从游标到行尾的所有内容。(有时候只使用其中一个是有用的。)

一个不错的快捷键是按 埃斯克#。它将预先添加一个 #字符(从而使该行成为注释) ,然后按 Enter。如果您然后决定您仍然需要该命令,那么它仍然在您的历史记录中:)

如果在 Vi 模式中使用 Bash (使用 set -o vi设置) ,那么按 埃斯克切换到 vi 的正常模式,然后键入 dd删除当前行!

这是 编织的答案的一个扩展,它通过前缀散列将该行存储在控制台历史记录中。克服剪贴板的缺点,如意外覆盖或无法查看剪贴线作为参考。

注释行和返回新提示符

使用任何一个快捷键:

  • 埃斯克#
  • Alt + #

一个散列字符 #将被添加到这一行,从而将整个行变成一个注释。它还将返回一个新的提示符,就像用户按了 Enter 键一样。例如:。

$ #rm -rf /foo/bar/really/long/path/here
$

检索评论行

要从控制台历史记录中恢复旧行,请使用下列快捷方式之一:

  • 起来
  • Ctrl + P

重复键快捷键,直到出现所需的行。


快速删除哈希前缀

要删除行的 hash #前缀,有几个不同的选项:

删除第一个字符并立即执行命令:

  • 埃斯克1埃斯克#
  • Alt + -Alt + #

移动光标以开始和删除第一个字符,而不执行命令:

  • 回家删除
  • Ctrl + Ctrl + D