DirB, Directory Bookmarks for Bash

Inspired by browser bookmarks, DirB allows you to create directory bookmarks for moving around faster on the command line.

Imagine browsing the Web and having to type the full Uniform Resource Identifier (URI) path each time you visit a Web page—painful. However, since 1993, when browser bookmarks were added to the Mosaic browser, they have made short work of returning to sites you go to often (see en.wikipedia.org/wiki/Internet_bookmark). Regardless of whether you call them “Bookmarks”, “Favorites”, “Hotlists” or “Internet Shortcuts”, they are great time-savers.

As a developer of consumer product software, I frequently work concurrently in multiple directory trees. I often bounce between the source code directories for each of my active development products, the directories that hold vendor documentation, and my desktop (where I keep all my active but as-of-yet unfiled work). I used to open a separate xterm window for each active directory, but mousing between the various windows and keeping track of which window had what directory was tedious and error-prone.

If command-line bookmarks existed, they would transport me to often-visited directories with a few keystrokes. Of course, the Linux change directory command (cd) comes with one built-in shortcut: the one to go to your home directory. To go home, I need to enter only the cd command without an argument. It's even easier than clicking the heels of my ruby slippers (which is not an unrelated reference to a popular scripting language, but instead a spurious reference to The Wizard of Oz). But, this is where the convenience ends.

I created Directory Bookmarks (DirB, pronounced “derby”) to extend the concept of bookmarks to the command line and to move between directories quickly. DirB is implemented as a set of Bash shell functions and consists of a few simple commands:

  • s — save a directory bookmark.

  • g — go to a bookmark or named directory.

  • p — push bookmark/directory onto dir stack.

  • r — remove a saved bookmark.

  • d — display a bookmarked directory path.

  • sl — print the list of directory bookmarks.

These commands can be used alongside the usual Bash commands: cd, pushd and popd.

As you will see, DirB means fewer keystrokes and greater productivity. Now, I (almost) never leave home without it.

If DirB's function names conflict with commands or aliases that you already use, change the names of the offending functions in the .bashDirB file to ones that work for you.


To install DirB, download the source file .bashDirB from www.DirB.info/bashDirB, and save it as ~/.bashDirB to your home directory. Then, edit your ~/.bashrc file and include the following in the file:

source ~/.bashDirB

Each new Bash session now will have the power of DirB. If you use the DirB commands within the ~/.bashrc file, place the source line above where the DirB commands are used. I find that placing this near the top of the file works for me.

After installing DirB, open a new xterm window and follow along with the rest of this article.

DirB comes with a small bonus. When working in multiple windows at the same time, I find it handy to have each xterm window display the current directory's name in its title bar. To accomplish this, the .bashDirB file sets up the primary Bash shell prompt, $PS1, to output an escape sequence. This string then will be output as part of the command-line prompt, and the X11 windowing software will respond to the escape sequence by updating the xterm window's title bar. If you are not using X11, or if this behavior is not desired, edit ~/.bashDirB and insert a pound sign (#) in front of the PS1= on line 18 of the file to comment out that feature.

Saving and Using Bookmarks

The desktop is one of my most common destinations. I saved a bookmark for my desktop by going there and then entering an s command:

% cd ~/Desktop
% s d

(Note that the % represents the shell's command-line prompt and is not typed as part of the command.) The second line above creates a new bookmark named d.

Wherever I am, I now can go to my desktop with the g command:

% cd /tmp   # go somewhere
% pwd
% g d       # go to the desktop
% pwd



Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

you can just add in your

Anonymous's picture

you can just add in your .bash_profile

export hello=~/tmp/hello
source .bash_profile
cd $hello

you can still use the tab to autocomplete


you can just add in your

Keith Daniels's picture


I knew I could export directories like that but it never dawned on me that autocomplete would still work.... duh. One track mind....

When I tested this, I could not get autocomplete to work with cd. It would work with ls or any other program except cd. Dont' know why, probably some bashrc or profile setting I used is blocking it.


BTW I just noticed something about using cd in Ubuntu Maverick that I "think" is a new (or just something I never noticed ) feature:

If you have a sub-directory called ~/test/test and when using cd you mistakenly type:

cd ~/text/text

It will take you to ~/test/test -- instead of giving you an error message -- if that is the only directory with similar spelling on you computer.

Personally I think that is wonderful...


All the new OSs and windowing systems are oriented towards content consumption instead of content production.

--Steve Daniels 2013

Yes...! Something I never could figure out how to do...

Keith Daniels's picture

Something I always wanted and never could figure out how to do...

Good Idea!
Great Post!
Excellent Explanation!


All the new OSs and windowing systems are oriented towards content consumption instead of content production.

--Steve Daniels 2013