The difference between cd - vs cd ~-

pfreitag

Pete Freitag

Posted on September 27, 2019

The difference between cd - vs cd ~-

The other day I posted one of my old (from 16 years ago) blog entries on twitter, Backtracking with Bash which shows a cool trick you can use to go to the directory you were previously in using cd ~- for example:

$ cd /var
$ cd /etc
$ cd ~-
$ pwd
/var

Ryan Guill pointed out that cd - also works, so what is the difference between cd ~- and cd -?

$ cd /var
$ cd /etc
$ cd -
/var
$ pwd
/var

So what is the difference?

The biggest difference between cd ~- and cd - is that ~- can be used in any command because it is part of the shells tilde expansion. The - shortcut can only be used with the cd command.

So for example if your directory was previously /var/log/apache2 and you want to tail the access_log file in there you can just tail ~-/access_log

$ cd /var/log/apache2
$ cd /etc
$ tail ~-/access_log
It Works...
$ tail -/access_log
tail: illegal option -- /

The second difference is that cd - will print the directory it changed to out to standard output, and cd ~- just changes directories without printing anything.

Cool trick eh?

💖 💪 🙅 🚩
pfreitag
Pete Freitag

Posted on September 27, 2019

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

The difference between cd - vs cd ~-
linux The difference between cd - vs cd ~-

September 27, 2019