Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- _DIRS_DIRS=~/.dirs
- # Silently make sure ~/.dirs exists
- \mkdir -p $_DIRS_DIRS
- _DIRS_FILE=$_DIRS_DIRS/$BASH_SESSION_ID
- save_dirs() {
- \dirs -l -p > $_DIRS_FILE
- }
- load_dirs() {
- # Start out with a fresh directory stack.
- \dirs -c
- # Make sure there's at least an empty file.
- if [[ ! -f "$_DIRS_FILE" ]]; then
- touch $_DIRS_FILE
- fi
- # Start out in the directory we left off at
- for dir in $(cat $_DIRS_FILE) ; do
- \cd $dir > /dev/null 2>&1
- # Just need the first line
- break
- done
- # Restore saved dir stack in reverse order.
- for dir in $(cat $_DIRS_FILE | tac) ; do
- # But don't duplicate the directory we left off at
- if [[ $PWD != $dir ]]; then
- \pushd -n $dir > /dev/null 2>&1
- fi
- done
- }
- # NOTE: aliases can't take parameters, so we have to alias to functions.
- _dirs_pushd()
- {
- \pushd "$@"
- save_dirs
- }
- alias pushd=_dirs_pushd
- _dirs_popd()
- {
- \popd "$@"
- save_dirs
- }
- alias popd=_dirs_popd
- # In case 'dirs -c' is used.
- _dirs_dirs()
- {
- \dirs "$@"
- save_dirs
- }
- alias dirs=_dirs_dirs
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement