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.
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.
You can use
cd -
or you could use
cd "$OLDPWD"
cd -
. For example when you type cd /usr/local
you know that you are in /usr/loal
, but when you type cd -
you don't always remember from which directory you came from. So it saves you from typing cd -; pwd
. But this is all speculation.
– Raphael Ahrens
Sep 01 '15 at 04:37
alias -- -='cd -'
then use -
(1 char) instead of cd -
(4 char). Faster :D
– ADTC
Feb 16 '16 at 04:38
cd -
" so now cd -\n
takes me directly to the next directory
– Rajkiran
Mar 10 '16 at 11:28
cd -
)?
– André Kuhlmann
Jan 06 '19 at 12:51
cd -
twice. Do cd /; cd /usr; cd -; cd -
you should be in /usr
. But maybe I miss understood your question.
– Raphael Ahrens
Jan 07 '19 at 19:42
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
.
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
.
pushd
and go back to previous folder while popd
-ing.
– Bernhard
Jun 30 '13 at 19:08
dirs -v
, but the reality for me is that often the simple case is all I really use. (Or, worse, I make a mistake when trying push +2
or similar) Also, I thought baby steps for getting someone to try the workflow. :)
– Josh Berry
Jul 01 '13 at 02:53
popd
at all? Could you not just cd
and pushd
everywhere? Are there any disadvantages to doing so?
– Hashim Aziz
Nov 12 '19 at 16:35
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
.
alias -- -='cd "$OLDPWD"'
then using -
(1 char) instead of cd ~-
(5 char). :)
– ADTC
Feb 16 '16 at 04:37
cd ~-/..
works but cd -/..
does not!
– Ray Foss
Jun 07 '19 at 14:27
--help
.
– Константин Ван
Jun 24 '21 at 06:56
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.
I never get confused. Its just a shortcut, when you are on another system just use the long-hand way.
– Atari911 Jul 01 '13 at 19:25bind '"\e[24~":"\C-k \C-ucd -\n"'
(or more preferably move it to inputrc
file as mentioned in the answer).
– ADTC
Feb 16 '16 at 05:00
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.
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.