Use ‘pushd’ and ‘popd’ for Efficient Filesystem Navigation in Linux

Sometimes it can be painful to navigate the Linux file system with commands, especially for the newbies. Normally, we primarily use the cd (Change Directory) command for moving around the Linux file system.

In a previous article, we reviewed a simple yet helpful CLI utility for Linux called bd – for quickly moving back into a parent directory without typing cd ../../.. repeatedly.

This tutorial will explain a related set of commands: “pushd” and “popd” which are used for efficient navigation of the Linux directory structure. They exist in most shells such as bash, tcsh etc.

Suggested Read: Autojump – An Advanced ‘cd’ Command to Quickly Navigate Linux Filesystem

How pushd and popd Commands Work in Linux

pushd and popd work according to the “LIFO” (last in, first out) principle. In this principle, only two operations are allowed: push an item into the stack, and pop an item out of the stack.

pushd adds a directory to the top of the stack and popd removes a directory from the top of the stack.

To display directories in the directory stack (or history), we can use the dirs command as shown.

$ dirs
OR
$ dirs -v
Dirs - Display Directories in Directory
Dirs – Display Directories in Directory

pushd command – puts/adds directory paths onto a directory stack (history) and later allowing you to navigate back to any directory in history. While you add directories to the stack, it also echoes what’s existing in history (or “stack”).

The commands show how pushd works:

$ pushd  /var/www/html/
$ pushd ~/Documents/
$ pushd ~/Desktop/
$ pushd /var/log/
pushd - Add Directories to Stack
pushd – Add Directories to Stack

From directory stack in the output above (directory index is in reverse order):

  • /var/log is the fifth [index 0] in the directory stack.
  • ~/Desktop/ is fourth [index 1].
  • ~/Documents/ is third [index 2].
  • /var/www/html/ is second [index 3] and
  • ~ is first [index 4].

Optionally, we can use the directory index in the form pushd +# or pushd -# to add directories to the stack. To move into ~/Documents, we would type:

$ pushd +2
pushd - Directory Navigation with Number
pushd – Directory Navigation with Number

Note after this, the stack content will change. So from the previous example, to move into /var/www/html, we would use:

$ pushd +1
pushd - Navigate Directory with Number
pushd – Navigate Directory with Number

popd command – removes a directory from the top of the stack or history. To list the directory stack, type:

$ popd

To remove a directory from the directory stack inded use popd +# or popd -#, in this case, we would type the command below to remove ~/Documents:

$ popd +1
popd - Remove Directory from Stack
popd – Remove Directory from Stack

Also check out: Fasd – A Commandline Tool That Offers Quick Access to Files and Directories

In this tutorial we explained “pushd” and “popd” commands which are used for efficient navigation of the directory structure. Share your thoughts concerning this article via the feedback form below.

Two small things before you go

If something didn’t work on your setup, leave a comment and tell me which distro and version you’re on. I read every one, and most of these articles got better because a reader pointed out what was missing.

And if it did work, share it. TecMint has stayed free for 14 years because people pass these articles around, and that traffic is what pays for writing the next one.

Leave a comment
Get two free Linux courses

Learn the Linux basics with two free courses and join 34,000+ readers getting practical TecMint tutorials and selected Pro TecMint articles every week.

Pro TecMint
Get lifetime access for $99

If you want to go beyond the free tutorials, Pro gives you 18 courses, 5 ebooks, and every future course I add. One payment, lifetime access, no renewals.

Aaron Kili
Aaron Kili
Contributor
About the author

Aaron Kili is a Linux and F.O.S.S enthusiast, an upcoming Linux SysAdmin, web developer, and currently a content creator for TecMint who loves working with computers and strongly believes in sharing knowledge.

4 Comments

Leave a Reply
  1. I saw this same tip on Enki today, and then I saw it here. Coincidence? I think not :-) Seriously though, I’ve used Linux since the early 00s, and somehow I only learned about popd and pushd today!

    Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.