Эквивалент «CLS» в BASH?

Как очистить весь терминал в BASH, например команду cls командной строки?

clear не работает, потому что фактически ничего не очищает, а просто прокручивается вниз.

56
задан Mehrdad 16 June 2011 в 04:18
поделиться

1 ответ

Короткий Ответ

clear && clear

или

tput reset

Другими Путями

Вот являются все способы, которыми можно очистить терминальный экран в Unix:

clear               # only clear visible screen
clear && clear      # clear buffer as well
tput clear          # same as clear but by sending escape seq
reset               # clear + reset internal terminal state + 1sec delay
tput reset          # same as reset but without 1sec delay
stty sane           # don't clear screen but reset some terminal options
echo -e "\033c"     # same as tput reset but hardcoded escape seq
printf "\033c"      # same as tput reset but hardcoded escape seq
setterm -reset      # same as tput reset, setterm has friendlier commands

Длинный Ответ

clear команда только очищает видимый экран, но не буфер, таким образом, можно сделать Shift+PageUp, чтобы прокрутить в терминале и все еще просмотреть предыдущие выводы. Если Вы хотите получить тот же результат, как cls тогда очищаются дважды как clear && clear.

Другая связанная команда reset, которому (я верю), сбрасывает внутреннее состояние терминальной программы. К сожалению, эта команда включает 1 секунду задержки для поддержки действительно старых терминалов. Таким образом, если Вы не соглашаетесь с такой задержкой, тогда используют tput reset, который, кажется, делает то же самое, как сброшено минус задержка.

, Но что tput делает? В Unix можно отправить терминалу все виды последовательностей символов ASCII, которые интерпретируются как команды терминалом. Это позволяет Вам делать броские вещи как мигание или окрашивать текст или выключать эхо (во время ввода пароля) или устанавливать терминальные опции или действительно очищает или сбрасывает. Это можно отправить [1 111] или tput reset. clear и reset команда эквивалентна, но они работают от двоичных файлов, который идет с Вашим дистрибутивом и может сделать дополнительный материал. Эти setterm -reset подобно [1 116]. Установка терминала с помощью [1 117] обычно лучше, потому что, в отличие от этого tput это имеет больше читаемых опций в общем случае однако, мы здесь используем tput, потому что это меньше в длине:).

Вы, возможно, также видели, что люди использовали вещи как [1 119] или printf "\033c", который эквивалентен [1 121], но escape-последовательность теперь трудно кодируется. Эти tput ищет терминальные свойства и использует правильную escape-последовательность.

Другая связанная команда stty sane, который на самом деле не делает никакой экранной очистки, но ее наборы многие терминальные опции к значениям по умолчанию поэтому, если Ваш терминал выглядит искаженным или если терминал остается пробел, когда Вы вводите (например, потому что Вы распечатали двоичный файл к терминалу с escape-последовательностью для выключения эха), тогда, эта команда могла бы помочь. Поскольку экстремальное значение исказило терминальные случаи, можно использовать все доступные методы сброса в последовательности. У меня есть псевдоним как это для таких случаев:

alias cls='tput reset'
alias clshard='reset; stty sane; tput rs1; setterm -reset; tput reset'

Связанный

, Каков эквивалент команды “cls” из Windows/DOS?

, Какие команды я могу использовать, чтобы сбросить и очистить мой терминал?

1
ответ дан 26 November 2019 в 17:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: