假设你在bash中开始编写如下命令:
$ rm -rf /foo/bar/really/long/path/here
然后意识到你毕竟不想执行这个。有没有办法通过一次或两次击键来清除输入?
我最近一直在做的是在回显前面并将输入括在引号中(Ctrl + A,echo "
,Ctrl + E,"
)然后点击回车。有更快的方法吗?
答案 0 :(得分:273)
按 Ctrl - U 删除光标前的所有内容。删除的命令将存储在缓冲区中。按 Ctrl - Y 粘贴已删除的命令。
(可选:按结束或 Ctrl - E 首先跳转到输入的末尾。)
或者,按 Ctrl - C 中止您输入的内容。
答案 1 :(得分:93)
尝试 Ctrl + U 。这清除了输入行。
答案 2 :(得分:30)
http://www.ice2o.com/bash_quick_ref.html时searching找到简短参考。
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
答案 9 :(得分:2)
如果您在vi mode中使用Bash(使用set -o vi
设置),请按 Esc 切换到vi的正常模式,然后键入{{1}删除当前行!
答案 10 :(得分:2)
这是knittl's answer的扩展,它通过添加哈希前缀来存储控制台历史记录中的行。克服剪贴板的缺点,例如意外覆盖或无法查看切割线以供参考。
使用任一键快捷键:
哈希字符#
将被添加到该行,从而将整行转换为注释。它还将返回一个新提示,就像用户按下了enter一样。 e.g。
$ #rm -rf /foo/bar/really/long/path/here
$
要从控制台历史记录中恢复旧行,请使用以下快捷方式之一:
重复按键快捷键,直到出现所需的行。
要删除行的哈希#
前缀,可以使用以下几种选项:
删除第一个字符并立即执行命令:
移动光标以开始并删除第一个字符,而不执行命令: