Не раз я випадково запускав ряд команд і забруднював свою історію баш. Як закрити свій термінал, не зберігаючи історію баш? Я використовую Fedora.
Не раз я випадково запускав ряд команд і забруднював свою історію баш. Як закрити свій термінал, не зберігаючи історію баш? Я використовую Fedora.
Відповіді:
Історія вашої оболонки зберігається у файлі, вказаному HISTFILE
змінною. Так:
unset HISTFILE
Це стосується також zsh, але не до ksh, який зберігає збереження у файлі, зазначеному $HISTFILE
при запуску оболонки (і навпаки, ви вирішите зберегти свою історію в ksh, як тільки ви запустите оболонку).
Коротка відповідь:
Введіть це у підказці:
$ kill -9 $$
Це знищить вашу оболонку одразу, без оболонки вдасться зробити що- небудь, наприклад захоплювати сигнал, зберігати історію, виконувати ~/.bash_logout
, попереджати про зупинені завдання чи будь-які добрі речі.
Довга відповідь:
Примітка. Ці параметри не є взаємовиключними; їх можна використовувати відразу.
Варіант 1:
Якщо ви перфекціоніст, коли йдеться про захаращування файлу історії, то ви можете змінити HISTIGNORE
змінну, щоб вона включала глобуси команд, які ви не хочете записувати. Наприклад, якщо ви додаєте HISTIGNORE='ls*:cd*'
до свого ~/.bashrc
будь-якого екземпляра ls
і cd
не вставлені у файл історії.
Варіант 2:
Якщо ви хочете керувати командою за командою, які команди залишились у вашій історії, ви можете встановити, HISTCONTROL='ignorespace'
які опускатимуть будь-які командні рядки, починаючи з пробілу. Використання ignoreboth
також опустить повторні рядки. Тоді, якщо натиснути пробіл перед введенням команди, воно не відображатиметься у вашому файлі історії.
Варіант 3:
Якщо ви просто хочете зробити це так, коли ви закриваєте термінал, оболонка негайно виходить, ви можете подати trap
сигнал, який термінальна програма надсилає оболонку ( xterm
наприклад, відправляє SIGHUP
потім чекає, поки оболонка вийде) і зробити вихід, не зберігаючи історію, коли він отримує цей сигнал. Додайте це до свого ~/.bashrc
:
# don't record history when the window is closed
trap 'unset HISTFILE; exit' SIGHUP
kill -9
для чого-небудь, крім жахливих ситуацій, коли все інше не вдалося.
Я здивований, бачу, що ніхто не запропонував history -c
безпосередньо до цього exit
. IINM (я не експерт), що буде добре.
history -r
перечитаєте файл історії, тож збереження стає неоперативним.
Є дві змінні середовища, які bash використовує для визначення файлу історії та скільки рядків для запису до нього, коли оболонка виходить.
Ви можете викинути історію сеансу за допомогою будь-якого з них (встановити під час сеансу, який ви хочете опустити з вашого файлу історії):
HISTFILE=/dev/null
або
HISTSIZE=0
Будь-яка з цих функцій чудово працює в Bash на Fedora
Не впевнений, чому ти так дбаєш про історію своєї команди. Якщо вам потрібні певні команди часто, вам може бути веселіше, якщо ви визначите для них псевдоніми, щоб ви могли повернути їх двома натисканнями клавіш, а не шукати їх в історії.
Елі вже дав тобі правильну відповідь на Bash, який потрібно встановити HISTSIZE=0
.
Я б просто додати метод зробити це для екрану GNU . Натисніть Ctrl+A
(послідовність виходу з екрана), а потім - :scrollback 0
. Це видалить історію прокрутки. Тепер ви можете негайно зробити :scrollback 15000
скидання розміру буфера прокрутки.
screen(1)
?
scrollback=0
це.
Ctrl+a H
і Ctrl+a :clear
не видалять історію. Вам потрібно Ctrl+a :scrollback 0
. Ви можете перевірити це самостійно. Почніть новий сеанс екрана Тепер зробіть cat /etc/passwd
. Тепер зробіть будь-що з перерахованого вище - Ctrl+a H
або Ctrl+a :clear
. Тепер спробуйте скопіювати з буфера екрана доніг, а Ctrl+a [
потім стрілку вгору, щоб перейти вгору і побачити, як далеко ви можете піти на копіювання. Якщо ви зробили Ctrl+a :scrollback
наступний a clear
, ви б пішли лише далеко, як ви можете бачити в поточному вікні, оскільки не буде жодного буфера прокрутки.
set HISTFILE
наступного разу ввійти? (просто скажіть, чи це правильно чи неправильно)