How to go to the previous working directory in terminal?

In terminal, how can I define a key to go to the previous directory which I was in when changing directory with the cd command?

For example, I’m in /opt/soft/bin and I cd into /etc/squid3 and I want to get back to the first directory.

Asked By: Hojat Taheri

$ cd - 

will change to the previous working directory.

Answered By: mezi

You can use

cd -

or you could use

cd "$OLDPWD"
Answered By: Raphael Ahrens

The other answers are definitely complete in the direct answer sense. cd - and cd $OLDPWD are definitely the main choices for this. However, I often find that getting into a workflow with pushd and popd works better.

Long story short, if you are moving into a directory with the ultimate intent of coming back to where you started, use pushd/popd.

Extended example

The major difference is easily shown by an example.

$ cd dir1
$ pushd dir2

At this point, you have a directory stack that is dir2, dir1. Running pushd with no arguments will put you back in dir1 with the stack now as dir1, dir2. popd would do the same, but would leave you with an empty directory stack. This is not much different than how you would have been with the cd - workflow.

However, now you can now change directories multiple times and get back to dir1. For example,

$ cd dir1
$ pushd dir2
$ cd dir3

If you run popd at this point, you will go back to dir1.

Answered By: Josh Berry

You can “define a key” for cd - by editing your ~/.bashrc file and including an alias for the command. For example you could add cdc to make it cd - which would provide you with a shorter way to get to the last directory by adding:

alias cdc='cd -'

This way you would simply type cdc and it would put you in your last working directory.

Answered By: Atari911

You should use:

cd ~-

it does the same as cd - (from the currently accepted answer) without the annoying echo of the directory and is easier to type than cd "$OLDPWD" or cd - > /dev/null.

Answered By: Anthon

cd .. goes to the precedent folder in the folder’s tree.
cd - goes to the folder which it was before. This command didn’t work on some distros (ubuntu 16.04), works in debian 9.

Answered By: Scorpion

I find the combination of fzf and dirs to be powerful for quickly navigating to any previously visited directory. fzf helps me sift through my directory history as dirs helps me list the directories on the directory stack.

I define the following alias called ch as follows:

alias ch="cd $(dirs -pl | fzf)"

Now, if you type ch in the terminal you will see the following, and you can select the directory you want to move into.
enter image description here

Answered By: Harsh Verma
Categories: Answers Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.