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


172

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

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

然后意识到您根本不想执行此操作。有没有一种方法可以通过一次或两次击键清除输入?

我最近一直在做的事情是在echo之前加上输入,并用引号(Ctrl + A echo ",Ctrl + E,")括起来,然后按Enter。有没有更快的方法?


或者,假设您粘贴了一条命令,并意识到它是错误的单行代码。约20个字符后,退格键确实会变旧!
bgStack15 '17

<kbd> Ctrl </ kbd>-<kbd> C </ kbd>,如果要保留历史记录,请参阅stackoverflow.com/a/9679852/6521116
Kris Roofe,2017年

Answers:


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

    (可选:按EndCtrl- E首先跳至输入的末尾。)

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


28
有一个警告:按Ctrl-C会杀死当前提示,启动一个新的提示,并设置返回代码为1
user716468

14
不习惯使用Ctrl-U。Ctrl-C在bash中还不错,但是如果您有一个mysql客户端提示符,例如Ctrl-C将断开与服务器的连接,这确实很烦人。
基督教徒

1
请注意,在许多系统上,到目前为止还存在一个终端“ kill”字符,该字符会终止输入。通常,这是control-X。您可以通过进行确认stty -a。它将与任何未主动修改终端控件的程序一起使用。
乔纳森·莱弗勒

Ctrl-A后跟Ctrl-K也可以。“杀死”的文本将被存储,您可以使用Ctrl-Y粘贴它。这些击键实际上来自读取行库:cnswww.cns.cwru.edu/php/chet/readline/rluserman.html ..因此,您可以在使用该库的用户界面的任何工具中找到它们(实际上是Emacs,bash,等等..)。您可以通过编辑.inputrc文件来自定义其行为(有关更多详细信息,请参见上面的链接)。
rkachach 2015年

93

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


7
谢谢,我几乎接受了这个答案。但是我发现它只清除光标之前的输入。在某些情况下,我正在编辑命令,因此,我宁愿记住Ctrl + C而不是Ctrl + U,因为它们只是“丢弃当前输入”。
user85509


21

Ctrl- UCtrl- K也能解决问题。

Ctrl- U删除从行首到光标的所有内容,Ctrl- K删除从光标到行尾的所有内容。(有时仅使用其中之一很有用。)


13

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

ctrl+ c-不管光标在哪里,这都会清除整行。

ctrl+ u-清除从光标位置到起点的直线。


2
“考虑到使用Cu(或Ce,然后是Cu)会将清除的内容存储在缓冲区中,以便以后可以使用Cy将其粘贴。” Markisisme一个更简单的命令是ctrl + _。 stackoverflow.com/questions/1056440/…由约翰·库格(John kug)回答了-刚开始时stackoverflow没有足够的分数来向您的答案添加评论。
vks

9

一个不错的快捷方式是按Esc#。它将添加一个#字符(从而使该行成为注释),然后按Enter。如果随后您确定仍然需要该命令,则您的历史记录中仍然会包含该命令:)


3
在大多数终端中,这也与Alt +#相同,这使它成为一次(和弦)击键。
Dolda2000

一个简单而又聪明的解决方案,我认为这是取消命令的一种更加用户友好的方式。恰好是我要搜索的内容:)
Cas

9

Esc加号Backspace在bash中将清除所有内容直至光标所在的位置。

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


3

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


3

如果您在vi模式下使用Bash (将其设置为set -o vi),请按Esc切换到vi的普通模式,然后键入dd以删除当前行!


3

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

评论专线并返回新提示

使用任一快捷键:

  • Esc#
  • Alt+#

哈希字符#将添加到该行的前面,从而将整行变成注释。它还将返回新的提示,就像用户按下Enter一样。例如

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

检索评论行

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

  • Up
  • Ctrl+p

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


快速哈希前缀删除

要删除该行的哈希#前缀,可以使用一些不同的选项:

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

  • Esc1Esc#
  • Alt+ -Alt+#

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

  • HomeDelete
  • Ctrl+ aCtrl+d

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.