Очистить экран терминала по-настоящему
С использованием clear
команда на терминале только вводит пользователя в заблуждение, что экран очищен... вы все равно можете видеть результаты предыдущих команд при прокрутке с помощью мыши. Это усложняет жизнь, когда вы тонете в цунами текста.
Различные решения (escape-код и т. Д.), Которые можно найти в Интернете, являются лишь вариациями того, что команда clear уже делает.
Так как же очистить содержимое терминала в Linux по-настоящему?
12 ответов
Используйте следующую команду, чтобы очистить экран, а не просто добавлять новые строки...
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"'
Я получил команду очистки прокрутки отсюда.
Пытаться reset
, Он очищает экран терминала, но к предыдущим командам можно получить доступ через стрелку или любую другую привязку клавиш.
Ни один из ответов, которые я прочитал, не работал в PuTTY, поэтому я нашел комментарий к этой статье:
В настройках вашего соединения в разделе "Окно-> Поведение" вы найдете настройку "Системное меню появляется только на ALT". Затем CTRL+L,ALT,l (это строчная буква L) прокрутит экран и затем очистит буфер прокрутки.
(относится к OP, потому что я подключаюсь к серверу Ubuntu, но также, по-видимому, актуально независимо от того, на каком сервере работает).
Очистите видимый экран
clear
Очистить экран и очистить буфер
clear && clear
Чистый и 1-секундная задержка
reset
Очистить без задержки в 1 секунду
tput reset
Следующая ссылка объяснит, как сделать этот псевдоним постоянным, чтобы вам не приходилось вводить его повторно.
https://askubuntu.com/questions/17536/how-do-i-create-a-permanent-bash-alias
Эти шаги подробно описаны по этой ссылке.
- vim ~ /.bashrc или gedit ~/.bashrc или любой другой текстовый редактор, который вам нравится
- поместите псевдоним cls='printf "\033c"' внизу файла
- Сохранить и выйти
- , ~/.bashrc (и да, между. и ~ должен быть пробел)
- Теперь проверьте, все ли работает!
Я не принимаю кредит на эту информацию, просто передавая ее.
Моя любимая дружелюбная команда для этого:
reset
Проверено на xterm и VT100. Это также помогает после ненормального завершения программы. Сохраняет буфер команд, поэтому стрелка вверх будет переключаться между предыдущими командами.
ура:D
Я знаю, что решение, использующее печать новых строк, не очень поддерживается, но если ничего не помогает, почему бы и нет? Особенно там, где вы работаете в среде, где кто-то еще может видеть экран, но не может вести журнал. Тогда одним из возможных решений является следующий псевдоним:
alias c="printf '\r\n%.0s' {1..50}"
Затем, чтобы "убрать" текущее содержимое экрана (или, скорее, скрыть его), просто введите c+Enter
на терминале.
Просто добавить, что tmux
буфер прокрутки не очищается clear
, reset
или printf
. Вам нужно:clear-history
. См. Ссылку.
С KDE и Ubuntu 12.04 LTS и терминалом "Konsole" ни один из опубликованных ответов не работает. Однако нажатие сочетания клавиш по умолчанию CTRL+Shift+X работает! Источник:
Скомпилируйте это приложение.
#include <iostream>
#include <cstring>
int main()
{
char str[1000];
memset(str, '\n', 999);
str[999] = 0;
std::cout << str << std::endl;
return 0;
}