. & .. & ~
You may have noticed a couple of oddities when running
ls -la. Specifically, you may have noticed that
.. are listed in the output.
. represents the directory you are currently in, or, if it is a part of a path, it means "this directory". For example, if you are in the
/depot/datamine/data directory, and run
ls -la, you will see the following.
total 57 drwxrwsr-x+ 42 root tdm-admin 4096 Aug 17 13:08 . drwxr-s---+ 9 root tdm 4096 Aug 15 22:36 .. drwxrwsr-x+ 4 kamstut tdm-admin 4096 Sep 1 2019 8451 drwxrwsr-x+ 32 kamstut tdm-admin 4096 Jun 30 2020 airbnb drwxrwsr-x+ 2 kamstut tdm-admin 4096 Jun 22 2020 amazon ... drwxrwsr-x+ 2 kamstut tdm-admin 4096 Jul 28 2020 zillow
. in this context means the directory
/depot/datamine/data. If you run the following bash command, the
. is redundant and refers to the
ls -la /depot/datamine/data/.
.. represents the parent directory, relative to the rest of the path. The parent directory is the directory that contains the directory you are currently in. For example, if you are in
/depot/datamine/data/yelp, the parent directory is
.. is extremely useful. You can use it with any command line utility, for example,
# this will list the contents of the parent directory ls -la ..
Any path that contains either
.. is considered a relative path. Any path that contains the path, in its entirety, starting from the root directory,
/, is considered an absolute path.
For example, if we are currently in the
/depot/datamine/data/yelp directory, a relative path to
/depot/datamine/data is simply
.., whereas the absolute path is
~ represents the location which is in the
$HOME environment variable. If you change
~ will also change.
~ can be used just like
.., for example, to change to your home directory, all 3 of the following commands will work.
cd ~ cd $HOME cd
In addition to representing the current user’s
~ can be combined with another user’s username to represent that user’s
$HOME directory. For example, if my username is
kamstut, and I want to references a path in Dr. Ward’s
$HOME directory, and Dr. Wards username is
mdw, I can use
~mdw to represent his
echo ~ # /home/kamstut echo ~kamstut # /home/kamstut echo ~mdw # /home/mdw echo ~mdw/projects # /home/mdw/projects
As you are navigating directories, to jump to the most previously visited directory, you can run
~-. For example, if you navigate to
/home/$USER/projects/project1/output, then to
/home/$USER, and you’d like to jump directly back to
/home/$USER/projects/project1/output, you can run
~- is simply a reference to the location stored in the environment variable
pwd # /home/kamstut cd /home/kamstut/projects/project1/output pwd # /home/kamstut/projects/project1/output cd ~ pwd # /home/kamstut cd ~- pwd # /home/kamstut/projects/project1/output
If I am in the directory
/home/kamstut/projects/project1, what is the absolute path to the file