| function mycd() | |
| { | |
| #if this directory is writable then write to directory-based history file | |
| #otherwise write history in the usual home-based history file | |
| tmpDir=$PWD | |
| echo "#"`date '+%s'` >> $HISTFILE | |
| echo $USER' has exited '$PWD' for '$@ >> $HISTFILE | |
| builtin cd "$@" # do actual cd | |
| if [ -w $PWD ]; then export HISTFILE="$PWD/.dir_bash_history"; touch $HISTFILE; chmod --silent 777 $HISTFILE; | |
| else export HISTFILE="$HOME/.bash_history"; | |
| fi | |
| echo "#"`date '+%s'` >> $HISTFILE | |
| echo $USER' has entered '$PWD' from '$OLDPWD >> $HISTFILE | |
| } | |
| alias cd="mycd" | |
| #initial shell opened | |
| export HISTFILE="$PWD/.dir_bash_history" | |
| #timestamp all history entries | |
| export HISTTIMEFORMAT="%h/%d - %H:%M:%S " | |
| export HISTCONTROL=ignoredups:erasedups | |
| export HISTSIZE=1000000 | |
| export HISTFILESIZE=1000000 | |
| shopt -s histappend ## append, no clearouts | |
| shopt -s histverify ## edit a recalled history line before executing | |
| shopt -s histreedit ## reedit a history substitution line if it failed | |
| ## Save the history after each command finishes | |
| ## (and keep any existing PROMPT_COMMAND settings) | |
| export PROMPT_COMMAND="history -a; history -c; history -r; $PROMPT_COMMAND" |
mmcdaris
commented
Feb 7, 2014
|
This is cool, thanks for writing it and documenting. |
inodb
commented
May 8, 2015
|
Looks interesting! Do you still use this or have you come up with a different way to do things? |
|
I still use this although I recognize the use of both personal and directory-based histories. |
djKianoosh
commented
Oct 27, 2015
|
btw, for a global git ignore: so... in |
rvelseg
commented
Jul 29, 2016
|
Awesome, Thanks :D |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
leipzig commentedJan 21, 2012
Directory Based Bash Histories
Rationale
Using a directory-based bash history allows for a record of shell actions on a directory basis, so a group of developers have some record of what was done while in a directory, when, and by whom. This can be helpful when trying to reconstruct history with limited documentation.
This was derived from http://dieter.plaetinck.be/per_directory_bash_history
Installation
Tips