Как действительно очистить терминал?

300

Я могу выполнить команду clear или нажать Ctrl + L , чтобы очистить текущий терминал Ubuntu, но это просто сдвигает предыдущий вывод вверх и если вы используете прокрутку мыши или PgUP и PgDown , трудно отличить, где заканчивается вывод предыдущей команды и вывод текущей команды.

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

    
задан Stann 06.02.2011 в 22:51
источник

11 ответов

363

Да, команда, которую вы ищете,

reset

В отличие от clear или Ctrl + L , reset фактически полностью инициализирует вместо того, чтобы просто очищать экран. Однако он не будет повторно создавать экземпляр оболочки (bash). Это означает, что состояние bash совпадает с предыдущим, как если бы вы просто очищали экран.

Как отмечает @Wallacoloo в комментариях, эта команда должна делать то же самое быстрее:

tput reset

Из других ответов:

  • Вы можете установить Ярлык клавиатуры на reset терминала, а объясняется towolf .

  • Если вы используете Kubuntu , а ваш терминал - Konsole, вам нужно перейти в Изменить → Очистить историю , так как reset не работайте так же, как отмечает UncleZeiv .

ответ дан Stefano Palazzo 06.02.2011 в 22:55
источник
66

Я искал это некоторое время, и я нашел гения, который опубликовал это:

clear && printf '\e[3J'

Очищает весь буфер экрана, очень чистый. Работает на OSX и полагает, что он отлично работает на большинстве терминалов * nix.

Я надеюсь, что кто-то найдет это полезным как я:)

    
ответ дан Goran 29.05.2014 в 07:51
37

Вы также можете назначить ярлык в gnome-терминале, перейдя в Изменить → Сочетания клавиш . Я использую Shift + Ctrl + Alt + C .

    
ответ дан towolf 08.02.2011 в 23:46
15

выполните следующую команду:

reset

Это имеет тот же эффект, что и запуск нового терминала.

    
ответ дан dv3500ea 06.02.2011 в 22:55
7

Переадресовать мой ответ из stackoverflow .

Используйте следующую команду, чтобы сделать чистый экран вместо простого добавления новых строк ...

printf "3c"

да, это «printf» в приглашении bash.

Вы, вероятно, захотите определить псевдоним, хотя ...

alias cls='printf "3c"'

Объяснение

3 == \x1B == 27 == ESC

Таким образом, это становится <ESC>c , который является кодом возврата VT100 для сброса терминала. Здесь - дополнительная информация о кодах выхода терминала.

Изменить

Вот несколько других способов сделать это ...

printf "\ec" #\e is ESC in bash
echo -en "\ec" #thanks @Jonathon Reinhart.
# -e    Enable interpretation of of backslash escapes
# -n    Do not output a new line

KDE

Вышеописанное не работает на консоли KDE (так называется Konsole), но есть надежда! Используйте следующую последовательность команд, чтобы очистить экран и буфер прокрутки ...

clear && echo -en "\e[3J"

Или, возможно, используйте следующий псевдоним в KDE ...

alias cls='clear && echo -en "\e[3J"'

Я получил команду очистки прокрутки назад от здесь .

    
ответ дан Sandeep Datta 13.10.2015 в 10:08
5

Ну, это действительно зависит, если вы используете Konsole , например, даже reset не мешает вам прокручивать предыдущую строку. В этом случае вам нужно использовать некоторую функцию конкретного терминала, который вы используете. Для Konsole это Edit > Clear History .

    
ответ дан UncleZeiv 07.02.2011 в 17:27
4

Моим любимым является printf "\ec" . Это также может быть printf "3c" или printf "\x1bc" . Это ansi escape-последовательность, которая чудесным образом очищает экран и буфер для вывода терминала (для большинства стандартных терминалов, с которыми я работал, кажется, что я знаю, что он работает как gnome-terminal, terminator, xterm и т. Д. На Ubuntu-like версии Linux)

Я знаю, что это работает в Linux Mint и Ubuntu 14.04, поэтому я не знаю, почему люди добавляют и преподают такие вещи, как clear && echo -ne "3c . printf "\ec" всегда работал для меня.

Кроме того, в моем .bashrc у меня есть привязка вроде этого:

bind -x '"\C-t": printf "\ec"';

Теперь я нажимаю ctrl t все время.

    
ответ дан dylnmc 01.05.2015 в 11:32
2

Другая альтернатива ответу @ Hibou57:

# The Octal Way
alias clear="echo -e '3c\c'"

ИЛИ

# The Hex Way
alias clear="echo -e '\x1b\c'"

В основном это будет иметь точно такой же эффект, он напечатает символ ^[ (который очистит ваш терминал) и не выведет завершающую новую строку.

    
ответ дан TwystO 30.10.2014 в 22:26
2

В качестве альтернативы reset вы можете сделать echo -e "3c" или иметь в своем .bashrc , что-то вроде alias cls="echo -ne '3c'"

В UNIX / Linux StackExchange есть поток: Как полностью очистить терминал ? (unix.stackexchange.com) , а также SuperUser: Очистить терминал с помощью сочетания клавиш (superuser.com) .     

ответ дан Hibou57 09.07.2014 в 10:55
1

Я нашел следующее, чтобы быть успешным с Kubuntu:

alias clc="echo -en '3c3[3J'"

Вы можете использовать cls , чтобы сохранить традицию Windows, используйте версию Matlab clc или одну из ваших собственных. Удачи!

    
ответ дан Charles Bell 30.04.2015 в 00:26
1

Если вы используете yakuake или Konsole, попробуйте CTRL + Сдвиг + K .

Источник: Ссылка

    
ответ дан Wojciech Sidor 06.10.2015 в 18:21