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

use*_*509 167 bash input

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

$ rm -rf /foo/bar/really/long/path/here
Run Code Online (Sandbox Code Playgroud)

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

我最近一直在做的是在回显之前将输入括在引号中(Ctrl + A echo ",, Ctrl + E,"然后按Enter键).有更快的方法吗?

Joh*_*ica 277

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

    (可选:按EndCtrl- E首先跳转到输入的末尾.)

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

  • 有一点需要注意:Ctrl-C将终止当前提示,启动新提示,并将返回代码设置为1. (27认同)
  • 不要习惯,使用Ctrl-U.Ctrl-C在bash中并不坏,但是如果你有一个mysql客户端提示符,Ctrl-C将断开与服务器的连接,这真的很烦人. (14认同)

gba*_*rry 93

试试Ctrl+ U.这清除了输入行.

  • 谢谢,我几乎接受了这个答案.但我发现它只清除光标前的输入.在某些情况下,我正在编辑命令,所以我宁愿记住Ctrl + C而不是Ctrl + U,只是"丢弃当前输入". (7认同)
  • 如果在Zsh下使用它将清除行:) (3认同)

小智 30

搜索时找到http://www.ice2o.com/bash_quick_ref.html上的简短参考.

ctrl+ e(如果不在行的末尾)加ctrl+ u将会这样做.


小智 21

Ctrl- U,Ctrl- K也有诀窍.

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


vks*_*vks 13

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

ctrl+ c- 无论光标位于何处,都会清除整条线.

ctrl+ u- 清除从光标位置到开头的直线.

  • "考虑使用Cu(或Ce然后Cu)将您在缓冲区中清除的内容存储起来,以便稍后可以使用Cy将其粘贴." Markisisme更简单的单个命令是ctrl + _.http://stackoverflow.com/questions/1056440/undelete-the-deleted-command-in-bash由john kug回答 - 刚刚启动stackoverflow没有足够的积分来添加评论给你答案. (2认同)

Nip*_*pey 9

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

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


kni*_*ttl 9

一个很好的捷径就是紧迫Esc#.它将添加一个#字符(从而使该行成为注释),然后按Enter键.如果你然后决定你仍然需要命令,你仍然在你的历史:)

  • 在大多数终端中,这也与Alt +#相同,这使得它成为一个(chorded)击键. (2认同)