Notes on bash history Raw

There are three totally wonderful things you can do to enhance the
utility of your `.bash_history` file. Add this block to your `.bashrc`:

      # Keep 10,000 commands worth of history
      export HISTSIZE=10000
      
      # Make 10,000 lines more awesome by erasing duplicate commands
      export HISTCONTROL=erasedups
      
      # Don't lose command history from across many sessions
      shopt -s histappend

By itself, the last option appends that particular bash process' history
to `.bash_history` at the end of the session. But combined with the
`HISTCONTROL` option, it's more like an intelligent 'merge' than a
senseless append. Neato! Recursive searches with `Ctrl + r` will be
*much* better from now.

### Other stuff you could do

To see your history file, you can either `vi` it like a caveman, or be a
hip 80s dude by issuing this:

      history

Here's sample (truncated) output:

      873  cat smbd.log
      874  service smb status
      875  netstat -tulpn
      884  find /media/pool02/asap -type d | sort | grep '\<[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}T[0-9]\{2\}\.[0-9]\{2\}\.[0-9]\{2\}\>'
      891  eval ssh tigris "df -h" | grep -c / | sed "s/./ &/g"
      902  date

Now I can just run that long `find` command by merely issuing:

      !884

You can actually merge histories across two or more 'live' sessions by
hand:

      history -a; history -n

I've read of people having this happen automagically by setting the
`PROMPT_COMMAND` variable to the snippet above. Setting this variable
executes its value before each new prompt.

      PROMPT_COMMAND="history -a; history -n"

-   `history -a` appends local history changes to `.bash_history`
-   `history -n` fetches changes from `.bash_history`

This has not worked for me on CentOS; YMMV.

### Clearing History

      history -c && rm -f ~/.bash_history

This is because `bash` stores history in memory and in a file.

### History with Timestamps

    export HISTTIMEFORMAT="%F %T "