The clear command can make the next command easier to read (if it outputs less than a page there's no scrolling hence no searching for the beginning). However it also clears the scrollback buffer which you may not always want.
7 Answers
TL;DR
CtrlL to scroll the current line to the top. The scrollback is not erased.
clear -xto erase the all the lines that are not in the scrollback.clearto erase all the lines, including the scrollback.
CtrlL is a binding of GNU readline library, which, as Bash manual page says, is what handles reading input when using an interactive shell.
clear-screen (C-L) Clear the screen leaving the current line at the top of the screen.
The CtrlL binding can be reassigned in .inputrc.
clear, on the other hand, is an external command.
$ type clear
clear is /usr/bin/clear
From its manual page,
clearclears your screen if this is possible, including its scrollback buffer (if the extended “E3” capability is defined).OPTIONS
-xdo not attempt to clear the terminal's scrollback buffer using the extended “E3” capability.
In newer versions of clear, it seems that the default behaviour has been changed.
To clear the screen and keep scrollback use the option -x.
To have the previous behaviour create an alias such as:
alias clear='clear -x'
- 161
- 1
- 2
If you pipe the output to less, then not only will it clear the screen and show your output at the top, but it will switch back to the previous screen contents when you exit.
- 38,658
On MacOs and using vi-mode I added this to my ~/.inputrc:
$if mode=vi
set keymap vi-insert
Control-w: "^[dBxi "
Control-l: 'clear\n'
$endif
Then in my bashrc I have this function:
# clear screen and save scrollback
clear() {
printf "\\033[H\\033[22J"
}
- 411