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

在bash中,如何清除当前输入?,bash,input,Bash,Input,假设在bash中开始编写如下命令: $ rm -rf /foo/bar/really/long/path/here 然后意识到你根本不想执行这个。有没有办法用一次或两次按键清除输入 我最近一直在做的是在echo之前加上引号(Ctrl+A,echo“,Ctrl+E,”),然后按enter键。有没有更快的办法 按Ctrl-U删除光标前的所有内容。已删除的命令将存储在缓冲区中。按Ctrl-Y键粘贴已删除的命令 (可选:按End或Ctrl-E首先跳到输入的末尾。) 或者,按Ctrl-C中止您正在键入的

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

$ rm -rf /foo/bar/really/long/path/here
然后意识到你根本不想执行这个。有没有办法用一次或两次按键清除输入

我最近一直在做的是在echo之前加上引号(Ctrl+A,
echo“
,Ctrl+E,
),然后按enter键。有没有更快的办法

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

    (可选:按End或Ctrl-E首先跳到输入的末尾。)

  • 或者,按Ctrl-C中止您正在键入的内容


  • 尝试Ctrl+U。这样可以清除输入行。

    在同时找到一个短引用


    ctrl+e(如果不是在行尾)加上ctrl+u就可以了。

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

    ctrl+c-这将清除整行,无论光标位于何处


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

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

    要删除当前行,请尝试:

    Ctrl-X,Ctrl-U

    作为替代方案,您可以使用:

    Esc-D

    这需要在~/.inputrc中:

    "\ed": kill-whole-line 
    
    请参阅:

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

    (在Cygwin中,这将清除下一个单词的输入。单词之间用空格、下划线等分隔)

    Ctrl-U、Ctrl-K也可以


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

    一个很好的快捷方式是按Esc键。它将在前面加上一个
    #
    字符(从而使该行成为注释),然后按enter键。如果您随后决定仍然需要该命令,那么您的历史记录中仍然有该命令:)

    如果您正在使用Bash-in(使用
    设置-o vi
    进行设置),则按Esc键切换到vi的正常模式,然后键入
    dd
    删除当前行

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

    注释行&返回新提示 使用任一快捷键:

    • Esc#
    • Alt+#
    一个散列字符
    #
    将被添加到行的前面,从而将整行变成注释。它还将返回一个新的提示,就像用户按下enter键一样。e、 g

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

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

    • 向上
    • Ctrl+p
    重复快捷键,直到出现所需的行


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

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

    • Esc,1,Esc#
    • Alt+-,Alt+#
    移动光标以开始并删除第一个字符,而不执行命令:

    • 主页,删除
    • Ctrl+a,Ctrl+d

    谢谢,我几乎接受了这个答案。但我发现它只清除光标前的输入。在某些情况下,我正在编辑命令,所以我宁愿记住CTRL+C而不是CTRL+U,只是简单地“丢弃当前输入”。“考虑使用C-U(或C-E,然后C-U)来存储缓冲区中清除的内容,以便以后可以使用C-Y粘贴。”MARCISISME一个更简单的命令是CTRL+I。john kug回答——刚开始的stackoverflow没有足够的分数为您的答案添加注释。有一个警告:Ctrl-C将终止当前提示,启动一个新提示,并将返回代码设置为1。不要习惯于这样,使用Ctrl-U。Ctrl-C在bash中没有那么糟糕,但是如果您有mysql客户端提示,Ctrl-C将断开与服务器的连接,这真的很烦人。请注意,在许多系统上,还有一个终端“kill”字符,目前为止它会终止输入。通常,这是control-X。您可以使用
    stty-a
    进行检查。这将适用于任何不主动修改终端控件的程序。Ctrl-A后跟Ctrl-K也适用。“killed”文本被存储,您可以使用Ctrl-Y将其粘贴。这些按键实际上来自读取行库:。。因此,您可以在用户界面使用库的任何工具(实际上是Emacs、bash等)中找到它们。您可以通过编辑.inputrc文件(查看上面的链接了解更多详细信息)来自定义其行为。或者,假设您粘贴了一个命令,并意识到它是错误的命令。大约20个字符后,退格变得非常旧!Ctrl-C,如果你想保留大多数终端中引用的历史记录,这与Alt+#相同,它只需一次(和弦)按键。这是一个简单而聪明的解决方案,我认为这是一种更方便用户的取消命令的方法。正是我要搜索的:)如果您只想用escape键清除整条线路,请添加
    “\e\e”:杀死整条线路
    (但必须双击esc键)