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

Issue 43: Getting Started with Linux – /Special Editions

Buy this issue as a PDF

Digital Issue: Price $15.99
(incl. VAT)