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


33

Насколько я понимаю, файл истории обновляется при выходе из терминала. Но иногда мой компьютер дает сбой, и терминал не выходит чисто, и тогда я теряю те команды из моей истории, что раздражает. Как я могу сделать так, чтобы он сразу сбрасывался, чтобы записи по-прежнему оставались там, даже если у моего компьютера произошел обвал? На данный момент я использую этот обходной путь, но я чувствую, что должен быть лучший путь.

Я использую gnome-терминал в Ubuntu 12.10.

Ответы:


17

Ответы в ссылке, предоставленной вами с сайта суперпользователей, не обязательно должны рассматриваться как «обходные пути» к historyповедению команды по умолчанию. Оболочка bash имеет стандартное поведение по умолчанию.

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

  • производительность - Так как вы спасаете каждую команду из каждого окна с history -a, то .bash_historyфайл может стать довольно большим и требует больших ресурсов для загрузки оболочки Bash. Это может привести к увеличению времени запуска (для сеансов терминала, а не к общему запуску системы, как таковой).

  • организация - (из вышеприведенной статьи) «команды истории одновременных интерактивных оболочек (для данного пользователя) будут переплетены. Поэтому история не является гарантированным последовательным списком команд, поскольку они выполнялись в одной оболочке».

Если вас беспокоит дальнейшая защита оболочки bash и. bash_historyПосмотрите файл с помощью аудита, ознакомьтесь с этой статьей: Как вести журнал или «защищать» bash от удаления истории?

В некоторых случаях (например, нестабильная система или сбой питания) я нашел следующие команды полезными.

Добавьте следующие строки в ваш ~/.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.