Title: A few tips about the cd command | |
Author: Solène | |
Date: 04 September 2020 | |
Tags: unix | |
Description: | |
While everyone familiar with a shell know about the command `cd` | |
there are a few tips you should know. | |
### Moving to your $HOME directory | |
$ pwd | |
/tmp | |
$ cd | |
$ pwd | |
/home/solene | |
Using `cd` without argument will change your current directory to | |
your $HOME. | |
### Moving into someone $HOME directory | |
While this should fail most of the time because people shouldn't allow | |
anyone to visit their $HOME, there are use case it can be used though. | |
$ cd ~user1 | |
$ pwd | |
/home/user1 | |
$ cd ~solene | |
$ pwd | |
/home/solene | |
Using `~user` as a parameter will move to that user $HOME directory, | |
note that `cd` and `cd ~youruser` have the same result. | |
### Moving to previous directory | |
This is a very useful command which allow going back and forth between | |
two directories. | |
$ pwd | |
/home/solene | |
$ cd /tmp | |
$ pwd | |
/tmp | |
$ cd - | |
/home/solene | |
$ pwd | |
/home/solene | |
When you use `cd -` the command will move to the previous directory | |
in which you were. There are two special variables in your shell: | |
`PWD` and `OLDPWD`, when you move somewhere, `OLDPWD` will hold | |
your current location before moving and then `PWD` hold the new | |
path. When you use `cd -` the two variables get exchanged, this | |
mean you can only jump from two paths using `cd -` multiple times. | |
Please note that when using `cd -` your new location is displayed. | |
### Changing directory by modifying current PWD | |
thfr@ showed me a cd feature I never heard about, and it's the | |
perfect place to write about it. Note that this work in ksh and zsh | |
but is reported to not work in bash. | |
One example will explain better than any text. | |
$ pwd | |
/tmp/pobj/foobar-1.2.0/work | |
$ cd 1.2.0 2.4.0 | |
/tmp/pobj/foobar-2.4.0/work | |
This tells `cd` to replace first parameter pattern by the second | |
parameter in the current `PWD` and then cd into it. | |
$ pwd | |
/home/solene | |
$ cd solene user1 | |
/home/user1 | |
This could be done in a bloated way with the following command: | |
$ cd $(echo $PWD | sed "s/solene/user1/") | |
I learned it a few minutes ago but I see a lot of uses cases where | |
I could use it. | |
### Moving into the current directory after removal | |
In some specific case, like having your shell into a directory that | |
existed but was deleted and removed (this happens often when you | |
working into compilation directories). | |
A simple trick is to tell `cd` to go to the current location. | |
$ cd . | |
or | |
$ cd $PWD | |
And `cd` will go into the same path and you can start hacking | |
again in that directory. |