How to save terminal history manually?

93,094

Solution 1

The answers in the link that you provided from the Super-Users site shouldn't necessarily be viewed as 'workarounds' to the history command's default behavior. The bash shell has some sane, out of the box, default behavior.

I would highly recommend reading How can I avoid losing any history lines? for an explanation of what these modifications to history are doing. Additionally, there are some reasonable concerns to be aware of as to why this is not the default behavior of the history command.

  • performance - Since you are saving every command from every window with history -a, the .bash_history file can grow quite large and require greater resources to load the bash shell. This can result in longer start up times(for your terminal sessions, not overall system startup, per se.).

  • organization - (from the above article) "the history commands of simultaneous interactive shells (for a given user) will be intertwined. Therefore the history is not a guaranteed sequential list of commands as they were executed in a single shell."

If you are concerned about further securing the bash shell and the .bash_history file through auditing, take a look at this article: How do I log history or "secure" bash against history removal?

On occasion (e.g. an unstable system, or power failure), I have found the below commands useful.

Add the following lines to your ~/.bashrc file:

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

shopt -s histappend

Be sure to source your .bashrc file using the command source ~/.bashrc

Solution 2

The simplest, working answer to the question "How to save terminal history manually?":

history -a

history -a will append your current session history to the content of the history file.

It may also be worth to consider switching to zsh, which has setopt inc_append_history ("save every command before it is executed").

And this question is relevant as well: Is it possible to make writing to .bash_history immediate?

Solution 3

To save bash history manually to a file:

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

It exports the history to a file called history.txt. You can then view it using your favorite editor.

Answer copied from http://tech.karbassi.com/2007/01/14/view-and-change-bash-history/

Share:
93,094

Related videos on Youtube

wim
Author by

wim

Hi from Chicago! Python dev with interest in mathematics, music, robotics and computer vision. I hope my Q&A have been helpful for you. If one of my answers has saved your butt today and you would like a way to say thank you, then feel free to buy me a coffee! :-D [ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo *Click*

Updated on September 18, 2022

Comments

  • wim
    wim over 1 year

    It's my understanding that the history file is updated when the terminal exits. But sometimes my computer crashes out, and the terminal doesn't exit cleanly, and then I lose those commands from my history which is annoying. How can I make it flush immediately, so that the entries still go there even if my computer has a meltdown? At the moment I'm using this workaround, but I feel there should be a better way.

    I'm using gnome-terminal on Ubuntu 12.10.