The pushd command in Linux or any Unix-based system is a great command-line utility to work with a directory stack. With this command, you can add the working directory to the stack and assign it to the top position.
As the name suggests, the directory stack refers to the list of directories you’ve operated or at least navigated to. Keep in mind that the current working directory always sits at the top of the stack.
The current working directory is the directory/folder that you’re currently using. To view your system’s directory stack, you can use the dirs command. Now, when you wish to save the current directory and add it to the stack, you’ll invoke the pushd
command.
pushd Command in Linux: Syntax
The basic structure (syntax) of the pushd command in Linux looks something like this:
$ pushd [OPTIONS] [DIRECTORY]

Working of pushd Command
Before talking about the uses of the pushd command in Linux, let us quickly walk through its working mechanism. The pushd
command, when invoked, starts by saving the current working directory to the very top of the stack. It then navigates to the directory provided.
It is crucial to keep in mind that the current working directory always takes the top spot in the stack. When an alteration is initiated, the new current directory replaces the previous one in the stack. Still, it is not saved until the pushd
command is employed.
In case you fail to run the pushd
command and use the cd
command instead to navigate forward, the item at the top of the stack will get lost.
Using pushd Command in Linux
As already discussed, the pushd command in Linux helps a user work with the directory stack and save the current working directory to the top. For instance, if you’re willing to assign the /var/www
directory to the top of the stack, run the pushd
command as:
$ pushd /var/www

On successful completion, your system will start displaying the desired directory on the top of the stack. It will be followed by the tilde symbol ~
which defines the home directory.
Output:
/var/www ~
Suppressing the Directory Change
Apart from assigning the current working directory to the top of the stack, the pushd command in Linux can help suppress the alteration as well. You’ll need to pass the -n
flag for this.
If you’re willing to add a directory /var/www
but don’t want to bring any changes to the order of the stack, run the pushd
command as:
~$ pushd -n /var/www

It will add the /var/www
directory while keeping ~
at the top of the stack. From the output, you can see it;/var/www
gets added at the second position from the left.

pushd Command: Options and Arguments
The push command in Linux accepts one option and three arguments. While suppressing the order alteration is the sole option, some arguments assist in navigating across the directory stack.
Options:
-n
: It helps suppress the usual change of directory when new directories are added to the stack. It ensures that only the stack is manipulated.
Arguments:
+N
: Using this flag will rotate the stack in a manner that the Nth directory (when counted from the left of the list, as displayed by dirs
starting with zero) appears at the top.
-N
: It simply does the opposite to +N
. -N
flag rotates the entire stack so that the Nth directory (when counted from the right of the list as displayed by dirs
, starting with zero) appears at the top.
dir
: It adds DIR to the top of the directory stack, making it the current working directory.
How to Work with Arguments
The +N
and -N
arguments associated with the pushd
command are great for navigating to the desired directory and bringing it to the stack’s top. Where N denotes the number you want to hover over to, the +
and -
sign respectively indicates that the counting is done from the left and right.
To instruct your system, print the list of available directories, launch the Terminal, and run the following command:
$ dirs -l -v

For instance, you’ve got an index list that looks like this:
0 /opt 2 /usr/local1 3 /var/www 4 /usr local2 5 /home/arbas19
Now, if you want to change to the /usr/local1
and bring it to the very top position in the stack, you can use either of the following:
pushd +2
or pushd -4
When counted from the top to bottom, the index of the desired directory is 2
; hence you can run the command as:
$ pushd +2
In case you’re counting from the bottom, the index will change to -4
. Thus, for navigating and setting /usr/local1
to the top of the stack, you’ll need to run the following command:
$ pushd -4
When the pushd
command is invoked without any argument, it toggles the position of the first two directories and assigns the new one as the current working directory. It is similar to how the cd
command in Linux works.
pushd Command Vs. popd Command
Although the pushd
command and the popd
commands are shell builtins, both differ from one shell to the other. While the former helps add a directory to the stack, the latter helps in the removal of the same.
And with that, we’re done discussing the pushd command in Linux. In most situations, we tend to employ the cd
command for navigating from one directory to the next; however, the same can be efficiently concluded with the pushd
command.
In this article, we’ve looked at how the pushd
command works and talked about the options and arguments associated.
If this guide helped you, please share it.