Очистить экран терминала по-настоящему

268

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

Различные решения (escape-код и т.д.), которые можно найти в Интернете, - это только варианты того, что уже делает команда clear.

Итак, как вы очищаете содержимое терминала bash в Ubuntu для реального?

  • 41
    Я бы классифицировал это как «программные средства, обычно используемые программистами» (упомянутые в FAQ как действительные).
  • 5
    На самом деле вы спрашиваете: «Как я могу очистить буфер обратной прокрутки терминала?» который не зависит от оболочки (Bash) или Ubuntu.
Показать ещё 5 комментариев
Теги:

8 ответов

409
Лучший ответ

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

printf "\033c"

да, что 'printf' в приглашении bash.

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

alias cls='printf "\033c"'

Объяснение

\033 == \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"'

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

  • 3
    Это на самом деле зависит от терминала. "\033c" - это ESC c которая является escape-последовательностью VT-XXX для «полного сброса (RIS)». Почти все терминалы, которые люди фактически используют в настоящее время, совместимы с VT, но если вы когда-нибудь обнаружите, что используете странный терминал, это может не сработать. Ответ @ vpit3833, скорее всего, сработает, если TERM установлен правильно.
  • 2
    printf является встроенным Bash (это правда, что это также отдельный двоичный файл, но встроенные имеют приоритет, и большинство современных оболочек имеют printf ).
Показать ещё 18 комментариев
169

Попробуйте reset. Он очищает экран терминала, но к предыдущим командам можно получить доступ по стрелке или любому ключу, которое у вас есть.

  • 3
    Спасибо! Но это очищает все, включая подсказку. Смотрите мой ответ для решения, которое не делает этого.
  • 5
    @ SDX2000 Обе команды очищают подсказку, а затем оболочка создает новую. Единственный недостаток сброса состоит в том, что он кажется немного медленнее (вероятно, потому что он делает больше, чем просто излучает ESC c), но он более переносим.
Показать ещё 12 комментариев
24

tput reset

Это сделает трюк!

  • 1
    Выполняется намного быстрее, чем обычный reset , но все же выполняет свою работу!
  • 1
    Быстрее, чем просто reset
6

Ни один из ответов, которые я читал, не работал в PuTTY, поэтому я нашел комментарий к этой статье:

В настройках вашего подключения в разделе "Окно- > Поведение" вы найдете параметр "Системное меню появляется только на ALT". Затем CTRL + L, ALT, l (нижний регистр L) прокрутит экран, а затем очистит буфер прокрутки.

(относится к OP, потому что я подключаюсь к серверу Ubuntu, но также, по-видимому, имеет значение независимо от того, что работает ваш сервер.)

  • 0
    3-летний комментарий от @Dennis Williamson привел меня к этому ответу.
  • 0
    Кроме того, учитывая, что в настройках «Окна» PuTTY вы активировали «Системное меню, появившееся в ALT-пробел», вы можете быстро нажать CTRL+L затем « ALT+Space , U который сначала очищает окно терминала, а затем сбрасывает прокрутку в реальном времени.
5

Моя любимая дружеская команда для этого:

reset

Проверено на xterm и VT100. Это также помогает после ненормального завершения программы. Сохраняет буфер команд, поэтому стрелка вверх будет выполнять предыдущие команды.

приветствия: D

5

В следующей ссылке объясняется, как сделать этот псевдоним постоянным, поэтому вам не нужно набирать его.

https://askubuntu.com/questions/17536/how-do-i-create-a-permanent-bash-alias

Это шаги, подробно описанные в этой ссылке.

  • vim ~/.bashrc или gedit ~/.bashrc или какой текстовый редактор вам нравится
  • введите псевдоним cls = 'printf'\033c "'в нижней части файла
  • сохранить и выйти
  • . ~/.bashrc(и да должно быть пробел между. и ~)
  • Теперь проверьте, все ли работает!

Я не беру на себя ответственность за эту информацию, просто передавая ее.

3

С KDE и Ubuntu 12.04 LTS и терминалом "Konsole" ни один из опубликованных ответов не работает. Тем не менее, нажатие сочетания клавиш CTRL + Shift + X действительно работает! Источник:

https://bugs.kde.org/show_bug.cgi?id=288913

  • 2
    Это было изменено на CTRL + Shift + K в более поздних версиях KDE: bugs.kde.org/show_bug.cgi?id=282593
  • 0
    Пожалуйста, смотрите мое последнее изменение.
-40

Скомпилируйте это приложение.

#include <iostream>
#include <cstring>

int main()
{
  char str[1000];
  memset(str, '\n', 999);
  str[999] = 0;
  std::cout << str << std::endl;
  return 0;
}
  • 31
    Извините, но это не лучшее решение. Есть лучшие методы, чем извергнуть 999 новых строк
  • 9
    В настоящее время C ++ действительно требует кода, эквивалентного, например, seq 999 | tr -d '[0-9]' который в любом случае не решает проблему ... вздох
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню