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

时间:2009-06-29 03:04:24

标签: bash input

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

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

然后意识到你毕竟不想执行这个。有没有办法通过一次或两次击键来清除输入?

我最近一直在做的是在回显前面并将输入括在引号中(Ctrl + A,echo ",Ctrl + E,")然后点击回车。有更快的方法吗?

11 个答案:

答案 0 :(得分:273)

  1. Ctrl - U 删除光标前的所有内容。删除的命令将存储在缓冲区中。按 Ctrl - Y 粘贴已删除的命令。

    (可选:按结束 Ctrl - E 首先跳转到输入的末尾。)

  2. 或者,按 Ctrl - C 中止您输入的内容。

答案 1 :(得分:93)

尝试 Ctrl + U 。这清除了输入行。

答案 2 :(得分:30)

http://www.ice2o.com/bash_quick_ref.htmlsearching找到简短参考。

ctrl + e (如果不在行尾)加 ctrl + u 会做它

答案 3 :(得分:21)

Ctrl - U Ctrl - K 也可以解决问题。

Ctrl - U 删除从行开头到光标的所有内容, Ctrl - K 删除从光标到行尾的所有内容。 (有时只使用其中一个。)

答案 4 :(得分:13)

有两种方法可以做到这一点

ctrl + c - 无论光标在哪里,都会清除整行。

ctrl + u - 这清除了从光标位置到开头的行。

答案 5 :(得分:9)

在bash中按 Esc Backspace 将清除光标所在位置的所有内容。

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

答案 6 :(得分:9)

一个很好的捷径是按 Esc 。它将添加#字符(从而使该行成为注释),然后按Enter键。如果您确定仍然需要命令,那么您的历史记录仍然存在:)

答案 7 :(得分:3)

考虑使用 Ctrl - U (或 Ctrl - E 然后 Ctrl - U )会将您清除的内容存储在缓冲区中,以便稍后使用 Ctrl - Y 将其粘贴。

答案 8 :(得分:2)

要删除当前行,请尝试:

Ctrl - X Ctrl - U

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

Esc - D

需要〜/ .inputrc:

"\ed": kill-whole-line 

请参阅:http://codesnippets.joyent.com/posts/show/1690

答案 9 :(得分:2)

如果您在vi mode中使用Bash(使用set -o vi设置),请按 Esc 切换到vi的正常模式,然后键入{{1}删除当前行!

答案 10 :(得分:2)

这是knittl's answer的扩展,它通过添加哈希前缀来存储控制台历史记录中的行。克服剪贴板的缺点,例如意外覆盖或无法查看切割线以供参考。

评论专线&返回新提示

使用任一键快捷键:

  • ESC
  • 替代 +

哈希字符#将被添加到该行,从而将整行转换为注释。它还将返回一个新提示,就像用户按下了enter一样。 e.g。

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

检索注释行

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

  • Up
  • Ctrl + p

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

快速哈希前缀删除

要删除行的哈希#前缀,可以使用以下几种选项:

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

  • ESC 1 ESC
  • Alt + - Alt +

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

  • 主页删除
  • Ctrl + a Ctrl + d