在bash中,如何清除当前的input?
假设你在bash中开始写一个命令,如:
$ rm -rf /foo/bar/really/long/path/here
然后意识到你毕竟不想执行这个。 有一种方法可以用一两个按键清除input吗?
我最近做的事情是预先设置回声,并用引号(Ctrl + A, echo "
,Ctrl + E "
)括住input,然后按回车。 有更快的方法吗?
-
按Ctrl – U删除光标前的所有内容。 已删除的命令将被存储到缓冲区中。 按Ctrl – Y来粘贴已删除的命令。
(可选:按End或Ctrl – E首先跳转到input的结尾。)
-
或者,按Ctrl – C放弃您input的内容。
尝试Ctrl + U。 清除input行。
search时在http://www.ice2o.com/bash_quick_ref.htmlfind一个简短的参考。;
Ctrl + E (如果不是在行的末尾)加上Ctrl + U将做到这一点。
Ctrl – U , Ctrl – K也可以做到这一点。
Ctrl – U删除从行首到光标的所有内容, Ctrl – K删除光标到行尾的所有内容。 (有时只使用其中的一个是有用的。)
有两个选项可以做到这一点
ctrl + c – 这将清除整个行,不pipe光标在哪里。
ctrl + u – 清除从光标位置开始的行。
一个很好的快捷方式是按Esc # 。 它会预先设置一个#
字符(因此使该行成为注释),然后按回车。 如果你然后决定你仍然需要命令,你仍然有它的历史:)
在bash中按Esc加Backspace将清除所有的一切,直到光标的位置。
(在Cygwin中,这将清除input到下一个单词,单词之间用空格,下划线,…分隔)
考虑使用Ctrl – U (或Ctrl – E ,然后按Ctrl – U )将存储您清除缓冲区,以便您可以稍后粘贴它使用Ctrl – Y。
要删除当前行,请尝试:
Ctrl – X , Ctrl – U
作为替代,您可以使用:
Esc – D
这需要〜/ .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
重复快捷键,直到出现所需的行。
快速哈希前缀删除
要删除行的哈希#
前缀有几个不同的选项可用:
删除第一个字符并立即执行命令:
- Esc , 1 , Esc , #
- Alt + - , Alt + #
移动光标启动并删除第一个字符,而不执行命令:
- 首页 , 删除
- Ctrl + a , Ctrl + d