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

385

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

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

Стан
источник
11
Нажмите Ctrl + L дважды, и вы получите пустое!
Пандя

Ответы:

456

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

reset

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

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

tput reset

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

Стефано Палаццо
источник
9
Возможно, это не имеет значения для большинства пользователей, но поведение resetзависит от терминала.
cthom06
2
Лично я не возражаю, что когда я нажимаю, на скроллере что-то остается "вверху" ^L. Я этого не вижу (это то, чего я хочу!), Я этого не чувствую, и если вдруг мне понадобится восстановить то, что было там - нет проблем. resetв отличие от этого, гораздо более сложный инструмент - я буду использовать его, когда что-то пойдет не так с терминалом - например, когда странные escape-последовательности случайно испортят дисплей.
ulidtko
14
@ulidtko: важно, когда вы запускаете последовательные сессии программ с огромным количеством выходных данных. Если вы прокрутите назад, легко запутаться в том, какое исполнение что-то напечатало. Я прекрасно знаю, что в этих случаях можно использовать более сложные решения, но, тем не менее, такой сценарий часто встречается на быстрых и грязных сеансах отладки.
UncleZeiv
7
Также есть то, tput resetчто явно делает то же самое, но завершается мгновенно (тогда как resetдо появления приглашения может пройти около 2 секунд).
Ponkadoodle
1
Это вызывает изменение размера окна putty.exe, было бы неплохо очистить без этого.
void.pointer
100

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

clear && printf '\e[3J'

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

Для любопытных, эта часть '\e[3J'- команда выхода из терминала.

Горан
источник
2
Хм, работает в xterm, Konsole и Linux VT, но не в gnome-терминале ...
Руслан
1
Спасибо, отлично работает на моем Mac - я действительно пропустил настоящий стиль Bash reset.
JohnnyCoder
9
Спасибо, это супер полезно! Что printf '\e[3J'значит? Как это почистить буфер?
Филип Спиридонов
4
будьте осторожны с псевдонимами reset- это не только очистка терминала. например, если вы случайно распечатываете двоичный файл со случайным мусором, который портит терминал (например, отключает отображение введенных символов), resetобычно это можно исправить. Конечно, с псевдонимами все в порядке, если вы знаете, как \overrideиспользовать команду с теневым псевдонимом.
RubyTuesdayDONO
4
Это единственный ответ, который помогает очистить прокрутку Putty при доступе к SSH через Winders.
дхаупин
45

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

сбросить и очистить ярлык

towolf
источник
+1. Я всегда скрывал Менубар; так что даже после многих лет использования гнома, я никогда не думал искать это. Спасибо :-)
Стефано Палаццо
3
«Сброс» ничего не делает для меня, а «Сброс и очистка» очищает все, но не отображает подсказку повторно. Ни один из этих пунктов меню не ведет себя как команда «перезагрузить» с терминала.
Hibou57
Как сказал @ Hibou57, моя комбинация клавиш для «Сброс», похоже, ничего не делает. Эта функциональность не работает в 14.04?
Майкл Мартин-Смукер
«Эта функциональность нарушена в 14.04?»: То же самое с 12.04.
Hibou57
1
@ Hibou57 «Сброс и очистка» не предполагает повторного отображения приглашения, но если после этого вы нажмете клавишу «Ввод», должно появиться новое приглашение. Это работает для вас?
Дон Хэтч
19

Перекрестная публикация моего ответа от stackoverflow .

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

printf "\033c"

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

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

alias cls='printf "\033c"'

объяснение

\033 == \x1B == 27 == ESC

Таким образом, это становится <ESC>cescape-кодом 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"'

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

самоучка
источник
18

запустите эту команду:

reset

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

dv3500ea
источник
6
При использовании замазки, после запуска reset, я все еще могу прокрутить вверх и увидеть предыдущие вещи. Это проблема с PuTTY, а не reset?
Свиш
@svish - это просто вопрос или решение по внедрению шпатлевки.
Белаква
@jgbelacqua, Сделка :)
Свиш
Работал с терминалом MAC OS
Bira
2
@ Бира Нет, resetне очищает прокрутку на macOS 10.14 Мохаве. Вы можете попытаться seq 100; resetувидеть прокрутку еще там. На терминале MacOS Cmd+Kможно очистить экран и прокрутить.
Джонни Вонг
8

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

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

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

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

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

dylnmc
источник
Знаете ли вы, как можно создать сопоставление с помощью ключа Windows? Этот фрагмент действительно отличный, работает точно так же, как Command-K на Mac. Спасибо.
Niloct
@Niloct, вы можете увидеть, поддерживает ли терминал его xev(просто введите xevтерминал внутри x-сессии). Из того, что я мог сказать, urxvt не поддерживает это; хотя я не пробовал в tty, я уверен, что это не будет поддержано. Я также сомневаюсь, что xterm или gnome-терминал поддержат это. Это сложно с анси-побегами. Приветствия и извините за поздний ответ.
dylnmc
Хорошо @dylnmc, я ценю это. Спасибо за комментарий.
Niloct
5

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

UncleZeiv
источник
3

Я обнаружил, что с Kubuntu довольно успешно:

alias clc="echo -en '\033c\033[3J'"

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

Чарльз Белл
источник
2

Еще одна альтернатива ответу @ Hibou57:

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

ИЛИ ЖЕ

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

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

TwystO
источник
Незначительная коррекция: она печатает ^[символ (ESC) , за которой следует по cхарактеру, а не только в ^[одиночку характер. В совокупности они составляют код терминала «RIS», который вызывает сброс. Дополнительная информация: xfree86.org/4.8.0/ctlseqs.html
jwd