Play With Directory Stack

terminal logo

Sometimes we work with long paths in directories and it is hard to remember all of them. What about popping them when we need them?

There is a solution to this, it is called directory stack. As the name suggests, a directory stack is a stack in which we can push and pop directories when we need them.

The directory stack is based on the principle of LIFO. What is LIFO? LIFO means last in, first out. The last directory pushed in the stack will be the first directory which will go out of the stack. To play with the stack directory you need to learn and use the following commands:

dirs: Display the directory stack and the current directory

pushd: Push the directory into the stack

popd: Pop the directory out of the stack and change directory to it

It is time to push some directories into the stack. But, let me create some directories as shown below.

Figure 1

How to use dirs command? Just type dirs in the terminal like shown in Figure 2. As you see from Figure 2 my directory stack is empty and dirs command outputs the name of the current directory.

Figure 2

Now we cd to the directory we want to push to the stack and use the pushd command followed by a dot like shown in Figure 3. First I cd to test1, then I use pushd. like shown in Figure 3. After the pushd . is executed, the current directory goes into stack and stack automatically gives us information about items that are inside it.

Figure 3

There is only one directory in the stack, the first one is the current directory. We use the popd command to pop the directory out of the stack like shown in Figure 4.

Figure 4

To prove that the  first item in the stack is the current directory, use the dirs command or use popd again. If i use popd again, I will get a message that the directory stack is empty like shown in Figure 5.

Figure 5

But how does stack directory help you to navigate through directories? The popd command does this for us. After it pops out the directory it changes to that directory. It does the magic for us!