How do I clear/delete the current line in terminal?
BashTerminalBash Problem Overview
If I'm using terminal and typing in a line of text for a command, is there a hotkey or any way to clear/delete that line?
For example, if my current line/command is something really long like:
> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>
Is there a hotkey or command to go from the above to:
>
?
Usually I will press the ↓ key, and if my current line is a brand new one on the history, that will clear it. But if I'm going through my command history via the ↑ key and start editing or using those commands, ↓ will only change the prompt to the next newest command in history, so it doesn't work here unless I press ↓ multiple times.
Bash Solutions
Solution 1 - Bash
You can use Ctrl+U to clear up to the beginning.
You can use Ctrl+W to delete just a word.
You can also use Ctrl+C to cancel.
If you want to keep the history, you can use Alt+Shift+# to make it a comment.
Solution 2 - Bash
Just to summarise all the answers:
- Clean up the line: You can use Ctrl+U to clear up to the beginning.
- Clean up the line: Ctrl+E Ctrl+U to wipe the current line in the terminal
- Clean up the line: Ctrl+A Ctrl+K to wipe the current line in the terminal
- Cancel the current command/line: Ctrl+C.
- Recall the deleted command: Ctrl+Y (then Alt+Y)
- Go to beginning of the line: Ctrl+A
- Go to end of the line: Ctrl+E
- Remove the forward words for example, if you are middle of the command: Ctrl+K
- Remove characters on the left, until the beginning of the word: Ctrl+W
- To clear your entire command prompt: Ctrl + L
- Toggle between the start of line and current cursor position: Ctrl + XX
Solution 3 - Bash
I have the complete shortcuts list:
- Ctrl+a Move cursor to start of line
- Ctrl+e Move cursor to end of line
- Ctrl+b Move back one character
- Alt+b Move back one word
- Ctrl+f Move forward one character
- Alt+f Move forward one word
- Ctrl+d Delete current character
- Ctrl+w Cut the last word
- Ctrl+k Cut everything after the cursor
- Alt+d Cut word after the cursor
- Alt+w Cut word before the cursor
- Ctrl+y Paste the last deleted command
- Ctrl+_ Undo
- Ctrl+u Cut everything before the cursor
- Ctrl+xx Toggle between first and current position
- Ctrl+l Clear the terminal
- Ctrl+c Cancel the command
- Ctrl+r Search command in history - type the search term
- Ctrl+j End the search at current history entry
- Ctrl+g Cancel the search and restore original line
- Ctrl+n Next command from the History
- Ctrl+p previous command from the History
Solution 4 - Bash
Ctrl+A, Ctrl+K to wipe the current line in the terminal. You can then recall it with Ctrl+Y if you need.
Solution 5 - Bash
or if your using vi mode, hit Esc followed by cc
to get back what you just erased, Esc and then p :)
Solution 6 - Bash
Another nice complete list:
TERMINAL Shortcuts Lists:
Left Move back one character
Right Move forward one character
Ctrl+b Move back one character
Ctrl+f Move forward one character
Alt+Left Move back one word
Alt+Right Move forward one word
Alt+b Move back one word
Alt+f Move forward one word
Cmd+Left Move cursor to start of line
Cmd+Right Move cursor to end of line
Ctrl+a Move cursor to start of line
Ctrl+e Move cursor to end of line
Ctrl+d Delete character after cursor
Backspace Delete character before cursor
Alt+Backspace Delete word before cursor
Ctrl+w Delete word before cursor
Alt+w Delete word before the cursor
Alt+d Delete word after the cursor
Cmd+Backspace Delete everything before the cursor
Ctrl+u Delete everything before the cursor
Ctrl+k Delete everything after the cursor
Ctrl+l Clear the terminal
Ctrl+c Cancel the command
Ctrl+y Paste the last deleted command
Ctrl+_ Undo
Ctrl+r Search command in history - type the search term
Ctrl+j End the search at current history entry and run command
Ctrl+g Cancel the search and restore original line
Up previous command from the History
Down Next command from the History
Ctrl+n Next command from the History
Ctrl+p previous command from the History
Ctrl+xx Toggle between first and current position
Solution 7 - Bash
I'm not sure if you love it but I use Ctrl+A (to go beginning the line) and Ctrl+K (to delete the line) I was familiar with these commands from emacs, and figured out them accidently.
Solution 8 - Bash
An alternative to Ctrl+A, Ctrl+K is Ctrl+E, Ctrl+U.
Solution 9 - Bash
-
Ctrl+u: move up to the beginning of your line to a ring buffer
-
Ctrl+k: move up to the end of your line to a ring buffer
-
Ctrl+w: move characters and (multiple) words left from your cursor to a ring buffer
-
Ctrl+y: insert last entry from your ring buffer and then you can use Alt+y to rotate through your ring buffer. Press multiple times to continue to "previous" entry in ring buffer.
Solution 10 - Bash
Ctrl+W will clear the word to the left.
Solution 11 - Bash
CTRL+R and start typing to search for previous commands in history. Will show full lines.
CTRL+R again to cycle.
Solution 12 - Bash
To delete the whole line no matter where the cursor is, you can use the kill-whole-line
command, but it is unbound by default. It can be bound to, for example, Ctrl+Alt+K by inserting
"\e\C-k": kill-whole-line
into your Readline init file (conventionally ~/.inputrc
).
Various remarks:
-
To avoid accidentally re-assigning a key sequence that is already in use for something else, you can check all your bindings with
bind -P
. Check for the suggested binding withbind -P | grep '\\e\\C-k'
-
The Readline init file name is is taken from the shell variable
INPUTRC
. If it is unset, the default is~/.inputrc
, or (if that doesn't exist)/etc/inputrc
. Notice that if you have~/.inputrc
,/etc/inputrc
will be ignored. -
To reload your Readline init file, you can use Ctrl+X Ctrl+R.
-
Links to relevant manual sections:
-
The
bind
builtin
Solution 13 - Bash
In order to clean the whole line (2 different ways):
- Home , Ctrl+K
- End , Ctrl+U
Solution 14 - Bash
Add to the list:
In Emacs mode, hit Esc, followed by R, will delete the whole line.
I don't know why, just happens to find it. Maybe it's not used for delete line but happens to have the same effect. If someone knows, please tell me, thanks :)
Works in Bash, but won't work in Fish.
Solution 15 - Bash
Alt+# comments out the current line. It will be available in history if needed.
Solution 16 - Bash
Ctrl+Alt+Backspace for deleting the backward words from the end of the line
Ctrl+Delete for deleting the forward words from the beginning of the line