You Should Be Logging Shell History

February 13th, 2012
logging, shell, tech
Do you work on the command line? If so, you should be logging your shell history. Don't shells already do this? Not enough. They log only the most recent commands [1] and they don't include when or where you ran them. Not only that, but they don't save until the shell exits, which means you lose the data in a crash. It's a mess, but you can fix it: tell the shell to log this information immediately before it shows the next command prompt. [2] For bash, put this in the init file [3]:
  promptFunc() {
    # right before prompting for the next command, save the previous
    # command in a file.
    echo "$(date +%Y-%m-%d--%H-%M-%S) $(hostname) $PWD $(history 1)" \
      >> ~/.full_history
  }
  PROMPT_COMMAND=promptFunc
You'd think running these extra commands would slow your system down, and I'm sure they do relative to doing nothing or having this built into the shell, but the prompt still feels like it appears instantly.

Your shell history is an invaluable resource in understanding what you were doing earlier, and keeping a permanent log is well worth it.

For quick history searching, add:

function histgrep {
  local n_lines=10
  if [[ "$1" =~ ^[0-9]*$ ]]; then
    n_lines="$1"
    shift
  fi
  grep "$@" ~/.full_history | tail -n "$n_lines"
}
Usage:
$ histgrep foo
... ten lines of history ...
$ histgrep 100 foo
... a hundred lines of history ...

(Yes, I've written about this before, but I'm continually surprised how many people don't have something like this. It saves me gobs of time.)


[1] Bash defaults to 500 lines. At my previous job I had ~100K lines logged while at my current one I have 73K.

[2] This does mean that if you have a crash while a command is running that command will not be written back to the history file. This is bad, but I don't think there's a 'post command entry' hook in bash.

[3] On my Mac this goes in ~/.bash_profile; on Linux I'd put it in ~/.bashrc. For other shells you'll need something similar.

Referenced in:

Comment via: google plus, facebook, r/commandline, substack

Recent posts on blogs I like:

Information control, isolation, and ideological abuse

[I have freelanced for a number of effective altruist organizations, such as the Centre for Effective Altruism and 80,000 Hours.

via Thing of Things March 11, 2026

The Newest Technology in Frozen

There are lots of different things in Frozen that are new-ish, but my dad and I were wondering: what is the actual newest thing in Frozen? This led me to watch Frozen a lot while taking notes. Some of the things I found included: Elastic hair-ties A safety …

via Lily Wise's Blog Posts March 1, 2026

2025-26 New Year review

This is an annual post reviewing the last year and setting intentions for next year. I look over different life areas (work, health, parenting, effectiveness, etc) and analyze my life tracking data. Highlights include a minimal group house, the usefulness…

via Victoria Krakovna January 19, 2026

more     (via openring)