In bash, how does one clear the current input?

2019-01-12 16:03发布

问题:

Suppose in bash you start writing a command like:

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

and then realize you don't want to execute this after all. Is there a way to clear the input with one or two keystrokes?

What I have been doing lately is prepending echo and enclosing the input in quotes (Ctrl+A, echo ", Ctrl+E, ") then hitting enter. Is there a faster way?

回答1:

  1. Press Ctrl-U to delete everything before the cursor. The deleted command will be stored into a buffer. Press Ctrl-Y to paste the deleted command.

    (Optional: Press End or Ctrl-E to jump to the end of the input first.)

  2. Alternatively, press Ctrl-C to abort what you're typing.



回答2:

Try Ctrl+U. That clears the input line.



回答3:

Found a short reference at http://www.ice2o.com/bash_quick_ref.html while searching.

ctrl + e (if not at the end of the line) plus ctrl + u will do it.



回答4:

Ctrl-U, Ctrl-K does the trick as well.

Ctrl-U deletes everything from the beginning of the line up to the cursor, Ctrl-K deletes everything from the cursor to the end of the line. (It is sometimes useful to use only one of them.)



回答5:

There are two options to do this

ctrl+c - this clears the whole line, no matter where the cursor is.

ctrl+u - this clear the line from the position of the cursor until the beginning.



回答6:

A nice shortcut is pressing Esc#. It will prepend a # character (thus making the line a comment) and then press enter. If you then decide that you still the need the command, you still have it in your history :)



回答7:

Pressing Esc plus Backspace in bash will clear everything up to the cursor's position.

(In Cygwin, this will clear the input up to the next word. Words are separated by spaces, underscores, ...)



回答8:

Consider that using Ctrl-U (or Ctrl-E and then Ctrl-U) will store what you clear in a buffer so that you can then paste it later using Ctrl-Y.



回答9:

To delete the current line, try:

Ctrl-X, Ctrl-U

As an alternative you may use:

Esc-D

which requires in ~/.inputrc:

"\ed": kill-whole-line 

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



回答10:

If you are using Bash in vi mode (set it with set -o vi), then press Esc to switch to the normal mode of vi, and type dd to delete the current line!



回答11:

This is an expansion of knittl's answer that stores the line in the console history by prefixing with a hash. Overcoming drawbacks of the clipboard, such as accidental overwriting or being unable to view the cut line for reference.

Comment Line & Return New Prompt

Use either key shortcut:

  • Esc,#
  • Alt+#

A hash character # will be prepended to the line, thus turning the whole line into a comment. It will also return a new prompt, as if enter was pressed by the user. e.g.

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

Retrieve Commented Line

To recover the old line from console history use one of the following shortcuts:

  • Up
  • Ctrl+p

Repeat key shortcut until the desired line appears.


Quick Hash Prefix Removal

To remove the line's hash # prefix there are a few different options available:

Remove first character and immediately execute command:

  • Esc,1,Esc,#
  • Alt+-, Alt+#

Move cursor to start and remove first character, without executing the command:

  • Home, Delete
  • Ctrl+a, Ctrl+d


标签: bash input