Как очистить историю терминала Gnome?

59

Когда мы используем clearкоманду или Ctrl+ Lв терминале, он очищает терминал, но мы все еще можем прокрутить назад, чтобы просмотреть последние использованные команды. Есть ли способ полностью очистить терминал?

ХПН
источник
Это зависит от терминала, и ни один из ответов не касается этого.
Томас Дики

Ответы:

69

Вы можете использовать tput reset.

Кроме того, resetи tput resetвы можете использовать следующий скрипт оболочки.

#!/bin/sh
echo -e \\033c

Это отправляет управляющие символы Esc-Cна консоль, которая сбрасывает терминал.

Ключевые слова Google: последовательности управления консоли Linux

man console_codes говорит:

Последовательность ESC c вызывает сброс терминала, что и требуется, если весь экран искажен. Часто рекомендуемый "echo ^ V ^ O" только делает G0 текущим, но нет никакой гарантии, что G0 указывает на таблицу a). В некоторых дистрибутивах есть программа reset (1), которая просто выполняет «echo ^ [c» ». Если ваша запись terminfo для консоли правильная (и имеет запись rs1 = \ Ec), то также будет работать «сброс tput».

Сачин Дивекар
источник
1
В чем разница между сбросом и сбросом tput?
Toothrot
tput resetбыстрее, чем resetв Ubuntu 16.04, по крайней мере
Иван Родригес Торрес
5
-1, вы все еще можете увидеть буфер, если прокрутите вверх
João Pimentel Ferreira
15

Вы можете использовать resetкоманду, которая сбросит настройки терминала.

enzotib
источник
15

Я знаю, что вы находитесь на терминале gnome, но я подумал, что отвечу советом для тех, кто может быть (как я) на Mac:

Если вы используете Terminal.appили, iTerm.appто Control+Lпрокрутите вверх, чтобы терминал выглядел пустым, но на Cmd+Kсамом деле сбросит терминал / сбросит прокрутку назад.

Или, если вы можете установить настройки клавиатуры для своего терминала, вы можете назначить что-то вроде Ctrl+Kввода, echo -e \\033cкак было упомянуто выше.

УХО
источник
2
Cmd+Kэто все, что я хотел. ты
Гаурав Ганди
9

Ответ Anthon работает в KDE Konsole, но не urxvt. В urxvt я использовал сброс в течение нескольких лет, чтобы очистить прокрутку (вместе со всеми другими вещами, которые он делает), и не был удовлетворен тем, что он не работал в Konsole. Так что теперь для Linux у меня есть новый псевдоним:

alias allclear='clear; echo -e "\033c\e[3J"'

Но это не работает на OS X.

tput reset не работает ни в каком контексте AFAICT.

В KDE Konsole ctrl- shift- kочищает прокрутку (включая текущую подсказку оболочки, поэтому она полностью пуста). В терминале iTerm или Apple на OS X cmd- shift- kтакже очищает прокрутку. Чтобы добавить эту функцию в urxvt, добавьте ее в ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c
ecloud
источник
Этот ответ - ответ, который понравится любому, кто использует Linux Bash, если он ожидает того же результата, что и на Mac, нажав команду + K. Я перешел и превратил это в отдельную команду, добавив следующую функцию внизу. /etc/bash.bashrc (затем выйдите из сервера, войдите снова, и он будет работать с помощью команды allclear): allclear(){`echo" Очистка терминала и прокрутка ... "` `sleep 1.5`` clear; echo -e "\ 033c \ e [3J" ` }` Edit: Не удается заставить работать форматирование. Если кто-нибудь сможет отредактировать это так, чтобы оно было читабельным, я был бы признателен.
KLaw
3

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

echo -e "\e[3J"
канон
источник
2

Я сопоставил F12очистить экран в каждой из следующих оболочек: bash , csh и fish shell . Моя команда отличается от всех предыдущих, потому что она сохраняет все, что вы уже набрали в текущей строке.
(Примечание: все конфигурации ниже зависят от терминала, но я надеюсь, что они будут работать практически везде)

удар

Откройте файл ~/.inputrcи вставьте следующую строку:

"\e[24~": "\C-k \C-uecho -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\n\C-y\C-?"

Чтобы получить новую привязку ключей, откройте новый терминал или введите Ctrl+ Xзатем Ctrl+, Rчтобы перезагрузить файл .inputrc в текущем терминале.

Пояснение
Файл ~ / .inputrc контролирует привязки клавиш терминала bash.

О линии:

  1. Первая часть строки "\e[24~", отображает ключ F12.
  2. C-k( Ctrl+ X) Очищает уничтожения кольца (скопировать и прошлое памяти в Bash).
  3. Пробел избегает звукового сигнала в следующей команде.
  4. C-u( Ctrl+ U) Посылает текущую строку в глушения кольцо, и удалить его.
  5. echo -ne '\\ec\\e[3J'; history -d $((HISTCMD-1))\nПосылает два сгруппированных команд на терминал. Они разделены ;и завершены \n.
    • echo -ne '\\ec\\e[3J'Очищает экран.
    • The history -d $((HISTCMD-1))избегает этих двух команд от входа в историю.
  6. C-y( Ctrl+ Y) Вставляет убить кольцо , хранящееся в C-uкоманде.
  7. C-?( Ctrl+ ?) Эквивалентно Backspaceи удаляет пространство , вставленный в шаге 3 выше.

Рекомендации:

CSH

Введите команду ниже.
bindkey -c "^[[24~" "echo -ne '\ec\e[3J'"
Он также может быть вставлен в ваш .cshrcфайл для загрузки привязки ключа к каждому новому терминалу.
(Да, это намного проще, чем в bash)

ракушка

Введите команду ниже.
bind -k f12 "echo -ne '\ec\e[3J'; commandline -f repaint"
Вы можете редактировать и сохранять функцию fish_user_key_bindingsдля загрузки привязки клавиш к каждому новому терминалу.
(Да, это намного проще, чем в bash)

Акира Клебер Накандакаре
источник
2

[Ubuntu 16.04]

.Bash_history файл создается в домашнем каталоге пользователя , как только терминал закрыт

Это полезно, но вы можете удалить его, если хотите. Тем не менее, он будет создаваться каждый раз, когда вы закончите пользоваться терминалом.

Вы можете удалить его вручную из:

  • браузер ваших файлов.

  • терминал: помните, что новый файл .bash_history будет создан при закрытии терминала (в соответствии с его конфигурацией по умолчанию).

Или вы можете вызвать пользовательскую функцию, если сохраните нужные вам функции в файле, связанном с bashrc. Вы можете отредактировать сам bashrc, если хотите поместить свой код туда, но следующие примеры находятся в отдельном файле.

Честно говоря, это не полезно для меня, но если вы хотите удалить историю команд перед выходом, вы можете сделать это:

.bash_custom # Это мой пользовательский файл

blotout() {
    HISTSIZE=0
    rm $HOME/.bash_history
    exit
}

затем в нижней части добавить имя и путь к моему файлу
.bashrc # это файл конфигурации для bash (я думаю)

# existent code
#...
#..

# import user customizations
source $HOME/.bash_custom

и это все.

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

refresh() {
        tput reset
        H=HISTSIZE
        HISTSIZE=0
        HISTSIZE=H
}

Или просто поместите функцию в .bashrc, если хотите, но таким образом вам, вероятно, понадобится оператор экспорта после функции, я не уверен, и если файл обновлен, вероятно, потерял ваши функции ... Я тоже не уверен в этом: D
Помните, что вы должны перезапустить терминал, когда редактируете .bashrc или ваш «пользовательский» файл.

Федерико Галло
источник
1

Для меня, используя PuTTY против CentOS 7, команда clear оставляет в прокрутке только команду clear, но при запуске «clear && clear», два экземпляра команды clear одновременно, полностью очищает прокрутку и оставляет меня без полосы прокрутки. Попробуй это. Это странное решение, но ни один из них не прояснил прокрутку, которая эффективно, и это делает.

Золтан Шапиро
источник
0

Добавлено для ~/.inputrcпривязки полной очистки к F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'
Velkan
источник
0

В Fedora 30 удаление истории выполняется путем удаления файла $ HOME / .bash_history. Самый простой способ очистить файл истории терминала с помощью клавиатуры:

  • Нажмите Alt+, F4чтобы закрыть каждое окно терминала GNOME, циклически переключаясь между окнами через Alt+ Tabили Alt+ Shift+, Tabесли необходимо. (Все окна терминала должны быть закрыты, потому что файл .bash_history создается или обновляется после закрытия.)
  • Нажмите Alt+ F2.
  • Введите nautilusи нажмите Enterклавишу, чтобы открыть приложение (GNOME) Files (которое ранее называлось Nautilus).
  • Нажмите Ctrl+, Hесли необходимо, чтобы показать скрытые файлы.
  • Тип .bash_history(который должен появиться в строке поиска, если набран сразу после открытия окна; в противном случае к панели поиска можно получить доступ через Ctrl+ L).
  • Нажмите клавишу со стрелкой вниз, чтобы выбрать файл, который должен быть единственным результатом поиска.
  • Нажмите Shift+, Deleteчтобы окончательно удалить файл. (Если Deleteвместо этого вы используете немодифицированный ключ, файл .bash_history будет по-прежнему доступен через папку «Корзина».)
Патрик Дарк
источник
-2
cat /dev/null > ~/.bash_history && history -c && exit
удар
источник
Самое меньшее, что вы можете сделать, это объяснить и отформатировать ваш ответ.
парадокс
(1) Не ясно, что ОП хочет удалить память оболочки (историю) предыдущих команд (вопрос о терминале ). Вы не можете видеть это, но history -cбыл представлен в двух предыдущих ответах, и они были удалены за неправильные ответы на вопрос. (2) Хотя закрытие окна терминала (возможно) сотрет память терминала о предыдущих командах, далеко не очевидно, что ОП хочет это сделать. ... И PS Одна exitкоманда не гарантирует закрытия окна терминала.
G-Man говорит: «Восстанови Монику»