Як зберегти історію терміналів вручну?


33

Я розумію, що файл історії оновлюється при виході терміналу. Але іноді мій комп'ютер виходить з ладу, і термінал не виходить чисто, і тоді я втрачаю ті команди з моєї історії, які дратують. Як я можу змусити його змитись негайно, щоб записи все-таки йшли туди, навіть якщо на моєму комп’ютері стався збій? Наразі я використовую цей спосіб вирішення, але я вважаю, що повинен бути кращий спосіб.

Я використовую gnome-термінал на Ubuntu 12.10.

Відповіді:


17

Відповіді за посиланням, яке ви надали на сайті Super-Users, не обов'язково слід розглядати як "обхідні шляхи" до historyповедінки команди за замовчуванням. Оболонка bash має певну нормальну поведінку за замовчуванням.

Я дуже рекомендую прочитати Як я можу уникнути втрати будь-яких рядків історії? для пояснення того, що historyроблять ці модифікації . Крім того, є деякі обґрунтовані занепокоєння, які слід знати, чому це не поведінка historyкоманди за замовчуванням .

  • продуктивність - Оскільки ви зберігаєте кожну команду з кожного вікна history -a, .bash_historyфайл може зростати досить великими і вимагати більших ресурсів для завантаження bash shell. Це може призвести до більш тривалого запуску часу (для термінальних сеансів, а не загального запуску системи, як такої).

  • організація - (з вищевказаної статті) "команди історії одночасних інтерактивних оболонок (для даного користувача) будуть переплетені. Тому історія не є гарантованим послідовним переліком команд, оскільки вони були виконані в одній оболонці".

Якщо ви стурбовані подальшим закріпленням корпусу башмака та. bash_historyфайл через аудит, погляньте на цю статтю: Як я реєструю історію або "захищаю" баш від видалення історії?

Час від часу (наприклад, нестабільна система або збою живлення), я вважаю, що команди нижче є корисними.

Додайте у ~/.bashrcфайл наступні рядки :

unset HISTFILESIZE
HISTSIZE=3000
PROMPT_COMMAND="history -a"
export HISTSIZE PROMPT_COMMAND

shopt -s histappend

Обов’язково створіть свій .bashrcфайл за допомогою командиsource ~/.bashrc


39

Найпростіша, робоча відповідь на питання "Як зберегти історію терміналів вручну?":

history -a

Можливо, варто також розглянути можливість переходу до zsh, який має setopt inc_append_history("збережіть кожну команду до її виконання").

І це питання також актуальне: чи можна зробити так, щоб письмово не було .bash_history?


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