在bash中,如何清除当前的input?

假设你在bash中开始写一个命令,如:

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

然后意识到你毕竟不想执行这个。 有一种方法可以用一两个按键清除input吗?

我最近做的事情是预先设置回声,并用引号(Ctrl + A, echo " ,Ctrl + E " )括住input,然后按回车。 有更快的方法吗?

  1. CtrlU删除光标前的所有内容。 已删除的命令将被存储到缓冲区中。 按CtrlY来粘贴已删除的命令。

    (可选:按EndCtrlE首先跳转到input的结尾。)

  2. 或者,按CtrlC放弃您input的内容。

尝试Ctrl + U。 清除input行。

search时在http://www.ice2o.com/bash_quick_ref.htmlfind一个简短的参考。;

Ctrl + E (如果不是在行的末尾)加上Ctrl + U将做到这一点。

CtrlUCtrlK也可以做到这一点。

CtrlU删除从行首到光标的所有内容, CtrlK删除光标到行尾的所有内容。 (有时只使用其中的一个是有用的。)

有两个选项可以做到这一点

ctrl + c – 这将清除整个行,不pipe光标在哪里。

ctrl + u – 清除从光标位置开始的行。

一个很好的快捷方式是按Esc 。 它会预先设置一个#字符(因此使该行成为注释),然后按回车。 如果你然后决定你仍然需要命令,你仍然有它的历史:)

在bash中按EscBackspace将清除所有的一切,直到光标的位置。

(在Cygwin中,这将清除input到下一个单词,单词之间用空格,下划线,…分隔)

考虑使用CtrlU (或CtrlE ,然后按CtrlU )将存储您清除缓冲区,以便您可以稍后粘贴它使用CtrlY。

要删除当前行,请尝试:

CtrlXCtrlU

作为替代,您可以使用:

EscD

这需要〜/ .inputrc:

 "\ed": kill-whole-line 

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

如果在vi模式下使用Bash(使用set -o vi ),然后按Esc切换到vi的正常模式,然后inputdd删除当前行!

这是knittl的答案的一个扩展, 它通过用一个哈希值作为前缀将该行存储在控制台历史logging中。 克服剪贴板的缺点,如意外覆盖或无法查看剪切线以供参考。

注释行和返回新的提示

使用任一键快捷方式:

  • Esc
  • Alt +

一个哈希字符#将被预置到该行,从而将整行变成注释。 它也将返回一个新的提示,就像用户按下input一样。 例如

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

检索评论线

要从控制台历史logging恢复旧行,请使用以下快捷键之一:

  • 向上
  • Ctrl + p

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


快速哈希前缀删除

要删除行的哈希#前缀有几个不同的选项可用:

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

  • Esc1Esc
  • Alt + -Alt +

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

  • 首页删除
  • Ctrl + aCtrl + d