Як реально очистити термінал?


384

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

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


11
Натисніть Ctrl + L в два рази , і ви отримаєте порожній!
Пандія

Відповіді:


455

Так, команда, яку ви шукаєте, така

reset

На відміну від clearабо Ctrl+ L, resetфактично повністю повторно ініціалізуватиме термінал , а не просто очищати екран. Однак оболонка не буде повторно інстанціювати (bash). Це означає, що стан Баша такий же, як і раніше, так само, як якщо б ви просто очищали екран.

Як згадує @Wallacoloo в коментарях, ця команда повинна зробити те ж саме швидше:

tput reset

З інших відповідей:

  • Ви можете встановити ярлик клавіатури до resetтерміналу, як пояснив towolf .

  • Якщо ви працюєте з Kubuntu , а ваш термінал - Konsole, вам потрібно перейти до редагування → Очистити історію , оскільки resetтам не працює так само, як зазначає UncleZeiv .


9
Напевно, для більшості користувачів це не має значення, але поведінка сайту resetзалежить від терміналу.
cthom06

2
Особисто я не заперечую, щоб щось, що залишилося, "вгору" уздовж прокрутки, коли я натиснув ^L. Я цього не бачу (це те, що я хочу!), Я цього не відчуваю, і якщо раптом мені знадобиться відновити те, що там було - немає проблем. resetна відміну від цього набагато складніше інструмент - я буду користуватися ним, коли щось трапилося не так з терміналом - наприклад, коли дивні послідовності втечі випадково зруйнували дисплей взагалі.
ulidtko

14
@ulidtko: не має значення, коли ви запускаєте послідовні сеанси програм з тоннами випуску. Якщо прокрутити назад, легко заплутатися в тому, яке виконання щось надрукувало. Я прекрасно знаю, що в цих випадках можна використовувати більш складні рішення, але, тим не менш, це сценарій, який виникає досить часто у швидких та брудних сесіях налагодження.
UncleZeiv

7
Є також те, tput resetщо видимо робить те ж саме, але завершується миттєво (тоді як це resetможе зайняти приблизно 2 секунди, перш ніж підказка з’явиться).
Ponkadoodle

1
Це призводить до зміни розміру вікна putty.exe, було б непогано очистити, але цього не відбувається.
void.pointer

99

Я деякий час шукав це, і я виявив генія, який розмістив це:

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.
dhaupin

45

Ви також можете призначити ярлик у gnome-терміналі, перейшовши в меню Правка → Комбінації клавіш . Я використовую Shift+ Ctrl+ Alt+ C.

скидання та очищення ярлика


+1. У мене завжди є Менубар прихований; тому навіть через роки і роки використання гнома я ніколи не думав цього шукати. Дякую :-)
Стефано Палаццо

3
"Скидання" нічого не робить для мене, а "Скинути та очистити" все очистить, але не повторно відображатиме запит. Жодна з цих записів у меню не поводиться як команда "скидання" з терміналу.
Hibou57

Як сказав @ Hibou57, клавіатурне скорочення для "Скидання", схоже, нічого не робить. Чи порушена ця функціональність у 14.04?
Майкл Мартін-Смукер

"Чи порушена ця функціональність в 14.04?": Це те саме з 12.04.
Hibou57

1
@ Hibou57 "Скидання та очищення" не очікується повторного відображення підказки, але якщо натиснути Enter після цього, він повинен повторно відобразити підказку. Це працює для вас?
Дон Хетч

19

Перехресне повідомлення моєї відповіді від stackoverflow .

Використовуйте наступну команду, щоб зробити прозорий екран, а не просто додавати нові рядки ...

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

Звідси я отримав команду очищення прокрутки назад .


18

запустіть цю команду:

reset

Це має той же ефект, що і запуск нового терміналу.


6
Під час використання шпаклівки після запуску resetя ще можу прокрутити вгору і переглянути попередні речі. Це не проблема з PuTTY, а не reset?
Свиш

@svish - це лише питання щодо впровадження шпаклівки чи рішення.
belacqua

@jgbelacqua, Угода :)
Свиш

Працював з терміналом MAC OS
Bira

2
@Bira Ні, resetне очищає прокрутки на macOS 10.14 Mojave. Ви можете спробувати seq 100; resetпобачити прокрутку ще там. На терміналі macOS Cmd+Kможна очистити екран та прокрутку.
Джонні Вонг

8

Моя улюблена printf "\ec". Це також може бути printf "\033c"або printf "\x1bc". Це послідовність аварійної анімації, яка дивом очищає екран і буфер для термінального виходу (для більшості стандартних терміналів, над якими я працював, здається - я знаю, що він працює в таких як gnome-terminal, термінатор, xterm тощо на Ubuntu-подібному Linuxes)

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

Крім того, у .bashrcмене є така палітурка:

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

Тепер я ctrltвесь час натискаю .


Чи знаєте ви, як можна створити відображення за допомогою ключа Windows? Цей фрагмент дійсно чудовий, працює точно як Command-K на mac. Дякую.
Нілокт

@Niloct ви можете побачити, чи підтримує термінал це xev(просто введіть xevтермінал всередині сеансу x). З того, що я міг сказати, urxvt не підтримує це; хоча я не пробував у TTY, я впевнений, що це не буде підтримуватися. Я також сумніваюся, що xterm або gnome-terminal підтримали б це. Це складно з ансі-втечами. Будьте раді і вибачте за пізню відповідь.
dylnmc

Добре @dylnmc, я ціную це. Дякуємо за коментар
Нілокт

5

Ну, це дійсно залежить, якщо ви використовуєте, Konsoleнаприклад, навіть resetне заважає вам прокрутити повз першого рядка. У такому випадку вам доведеться скористатися якоюсь функцією конкретного терміналу, який ви використовуєте. Бо Konsoleце так Edit > Clear History.


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

В основному це матиме точно такий же ефект, він надрукує ^[символ (який очистить ваш термінал) і не виведе новий рядок.


Незначна корекція: вона друкує ^[символ (ESC) , за якою слід по cхарактеру, а не тільки в ^[поодинці характер. У поєднанні вони становлять термінальний код "RIS", що викликає скидання. Більше інформації: xfree86.org/4.8.0/ctlseqs.html
jwd

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.