Можно ли сделать так, чтобы команда clear вела себя как Ctrl-L в Bash?

Можно ли сделать так, чтобы команда clear вела себя как Ctrl-L в Bash?

Кажется, что clearи bash Ctrl- Lсовершенно разные; clearполностью удаляет всю предыдущую информацию терминала (так что вы не можете прокручивать вверх), в то время как Ctrl- Lпросто прокручивает экран так, чтобы курсор находился в верхней части страницы, так что вы все еще можете прокручивать вверх и видеть предыдущую информацию. Мне гораздо больше нравится система Ctrl- L. Есть ли способ переопределить clearтак, чтобы она делала Ctrl- Lвместо того, чтобы стирать всю предыдущую информацию терминала? Это не большая проблема, но мне просто интересно из любопытства, есть ли способ сделать псевдоним, clearчтобы указать на мою предпочтительную функциональность Ctrl- .L

Кстати, я только что заметил, что PowerShell также имеет привязку к Ctrlbash Lи работает так же Ctrl; Lпохоже, что разработчики PowerShell многое взяли из bash, тогда как cmd.exeв консолях такой функциональности нет.

решение1

Есть ли способ переопределить очистку так, чтобы она выполняла Ctrl-L вместо стирания всей предыдущей информации терминала?

alias clear='tput -x clear'

Да, Ctrl-Lв bash (в set -o emacsрежиме) делает то же самое.

Или вы можете просто подключить escape, alias clear='printf "\033[H\033[2J"'который должен работать в большинстве эмуляторов терминала, и не предполагает, что у вас есть ncursesили bashустановлен .

Примечание:clearапплет из busybox НЕ очищает буфер прокрутки, поэтому вам не нужно делать ничего особенного, если вы используете какую-либо систему на основе busybox, как большинство встраиваемых систем Linux.

решение2

clearэто терминальная команда, выдержка из man clear:

DESCRIPTION clear очищает ваш экран, если это возможно, включая его буфер прокрутки (если определена расширенная возможность «E3»). clearищет в среде тип терминала, заданный переменной среды TERM, а затем в базе данных terminfo, чтобы определить, как очистить экран. clearзаписывает в стандартный вывод. Вы можете перенаправить стандартный вывод в файл (что не позволит clear фактически очистить экран), а затем cat файл на экран, очистив его в этой точке.

Ctrl+ — lэто сочетание клавишreadlineкоманда clear-screen( man 3 readline).

Очистите экран, затем перерисуйте текущую строку, оставив текущую строку в верхней части экрана. С аргументом обновите текущую строку, не очищая экран.


Я не могу найти способ создать псевдоним clearдля команды readline clear-screen, и, возможно, это вообще невозможно.

Связанный контент