Очистить экран терминала для реального

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

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

Так как же очистить содержимое терминала в Linux по-настоящему?

Ответ 1

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

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"'

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

Ответ 2

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

Ответ 3

tput reset

Это сделает свое дело!

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

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

reset

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

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

Ответ 7

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

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

Ответ 8

Я знаю, что решение, использующее печать новых строк, не очень поддерживается, но если ничего не помогает, почему бы и нет? Особенно, когда вы работаете в среде, где кто-то еще может видеть экран, но не может вести журнал. Одно из возможных решений - следующий псевдоним:

alias c="printf '\r\n%.0s' {1..50}"

Затем, чтобы "убрать" текущее содержимое экрана (или, скорее, скрыть его), просто наберите c+Enter в терминале.

Ответ 9

Просто добавить, что буфер прокрутки tmux не очищается с помощью clear, reset или printf. Вам необходимо :clear-history. Смотрите ссылку.

Ответ 10

echo -e "\e[3J"

Это работает в Linux Machines

Ответ 11

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

#include <iostream>
#include <cstring>

int main()
{
  char str[1000];
  memset(str, '\n', 999);
  str[999] = 0;
  std::cout << str << std::endl;
  return 0;
}