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

33

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

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

Wim
источник

Ответы:

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 незамедлительной?

фифи финанс
источник
24

Чтобы сохранить историю Bash вручную в файл:

history -w ~/history.txt
vim ~/history.txt

Он экспортирует историю в файл с именем history.txt. Затем вы можете просмотреть его в своем любимом редакторе.

Ответ скопирован с http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/

странник
источник