Як очистити історію терміналу 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 викликає скидання терміналу, що саме ви хочете, якщо на екрані все пошкоджено. Часто "ехо ^ V ^ O" буде робити тільки G0 поточним, але немає гарантії, що точки G0 в таблиці a). У деяких дистрибутивах є скидання програми (1), яке просто виконує "ехо ^ [с". Якщо ваш термінальний запис для консолі правильний (і має запис rs1 = \ Ec), також "tput reset" також буде працювати.


1
Яка різниця між скиданням та скиданням tput?
Зубник

tput resetшвидше, ніж resetв Ubuntu 16.04, принаймні
Іван Родрігес Торрес

5
-1, ви все ще можете побачити буфер, якщо прокрутити вгору
João Pimentel Ferreira

15

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


15

Я знаю, що ви перебуваєте на терміналі gnome, але я подумав, що відповім порадою для інших, хто може бути (як я) на Mac:

Якщо ви використовуєте Terminal.appабо iTerm.appпотім Control+Lбуде прокручуватися вгору, так що термінал виглядає порожнім, але Cmd+Kфактично скине термінал / очистити прокрутку назад.

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


2
Cmd+Kвсе, що я хотів. ty
Гаурав Ганді

9

Відповідь Антона працює у KDE Konsole, але не urxvt. У urxvt я кілька років використовував скидання, щоб очистити прокрутку (разом з усіма іншими речами, які вона робить), і не був впевнений, що це не працює в Консолі. Тому зараз для Linux у мене новий псевдонім:

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

Але це не працює в OS X.

tput reset не працює в жодному контексті AFAICT.

У KDE Konsole, ctrl- shift- kочищає прокрутку (включаючи поточну підказку оболонки, тому вона повністю порожня). В iTerm або терміналі Apple в ОС X, cmd- shift- kтакож очищає прокрутку. Щоб додати цю функцію до urxvt, додайте її до ~ / .Xresources:

urxvt*keysym.C-S-K: command:\033c

Ця відповідь - це відповідь, що будь-хто, хто використовує Linux Bash, сподобається, якщо очікує того самого результату, який вони отримають на Mac, натиснувши команду + K. Я пішов вперед і перетворив це на окрему команду, додавши наступну функцію внизу of /etc/bash.bashrc (тоді вийдіть із сервера, увійдіть назад, і він буде працювати за допомогою команди allclear): allclear(){`echo" Очищення терміналу та прокрутки ... "` clear 1.5 '`clear; echo -e "\ 033c \ e [3J" ` }` Редагувати: не вдається налагодити форматування. Якщо хтось зможе відредагувати це, щоб воно було читабельним, я би вдячний.
KLaw

3

Я виявив це в мережі років тому, і добре працює для мене. Він повністю очищає термінал без історії прокрутки.

echo -e "\e[3J"

2

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

баш

Відкрийте файл ~/.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'Очищає екран.
    • 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файл, щоб завантажити прив'язку ключа до кожного нового терміналу.
(Так, це набагато простіше, ніж у баші)

рибний панцир

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


2

[Ubuntu 16.04]

Файл .bash_history створюється в домашньому каталозі користувача після закриття терміналу

Це корисно, але ви можете видалити його, якщо хочете. Тим не менш, він створюватиметься кожного разу, коли ви закінчите користуватися терміналом.

Ви можете видалити її вручну з:

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

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

Або ви можете зателефонувати на користувацьку функцію, якщо ви збережете потрібну вам функціональність у файлі, пов’язаному з 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", два екземпляри одночасно команди очищення, повністю очищає прокрутку і не залишає мені смуги прокрутки. Спробуйте це. Це дивне рішення, але жодне з них тут не очистило ефективність прокрутки, і це ефективно.


0

Додано для ~/.inputrcприв'язки повного очищення до F12:

"\e[24~":'!echo -ne \047\\0033\\0143\047\r'

0

У Fedora 30 видалення історії відбувається шляхом видалення файлу $ HOME / .bash_history. Найпростіший спосіб очищення файлу історії терміналу за допомогою клавіатури:

  • Натисніть Alt+, F4щоб закрити кожне вікно терміналу GNOME, проїжджаючи через вікна через Alt+ Tabабо Alt+ Shift+, Tabякщо потрібно. (Усі термінальні вікна повинні бути закриті, оскільки файл .bash_history створюється або оновлюється, коли вони закриті.)
  • Натисніть Alt+ F2.
  • Введіть nautilusі натисніть Enterклавішу, щоб відкрити програму (GNOME) Файли (яка раніше називалася 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.