Quick Directory Navigation from the Command Line

Dmitri Popov

Productivity Sauce

Aug 24, 2013 GMT
Dmitri Popov

Jeroen Janssens has recently shared a neat little hack that allows you to bookmark often-used directory paths in the terminal and quickly jump to any of the bookmarked directories. The way the hack works is simple: several custom functions in the .bashrc file are used to create and remove symbolic links in the ~/.marks directory as well as quickly jump to a specific bookmarks. So to make the hack work on your system, add the following code to the ./bashrc file:

export MARKPATH=$HOME/.marks
function jump { 
    cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
}
function mark { 
    mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1"
}
function unmark { 
    rm -i "$MARKPATH/$1"
}
function marks {
    ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
}

_completemarks() {
  local curw=${COMP_WORDS[COMP_CWORD]}
  local wordlist=$(find $MARKPATH -type l -printf "%f\n")
  COMPREPLY=($(compgen -W '${wordlist[@]}' -- "$curw"))
  return 0
}

complete -F _completemarks jump unmark

Create then the ~/.marks directory, and you are ready to go. Now open the terminal, navigate to the desired directory and bookmark it using the mark command:

mark dir1

You can then quickly jump to the bookmarked directory by using the jump dir1 command. To remove the bookmark, run the unmark dir1 command. The hack includes the tab completion functionality, too: type jump, press Enter, and you should see a list of all existing bookmarks. Clever, eh?

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News