What do "." and ".." mean when in a folder?

. is the current folder.

.. is the folder above the current folder - the folder that contains the current folder.

You will sometimes see that single dot in use when someone wants to run a script from their home directory. For instance: ./install-app.sh. That means the file "install-app.sh" is in the current directory. It would be just as valid to do /home/username/directory/install-app.sh. The same way, you could also do ../install.app if the file is in the parent directory. The reason why it is this way, is not only for navigation, but also that it shouldn't be possible to accidentally hide system applications simply by misnaming a file in your home directory.


Those are hardlinks to self (.) and parent (..) directories. They are created when you crate a directory. They can never be deleted (without deleting directory pointed by them).

If you create a directory:

mkdir /tmp/foo

you can see, that there are actually 2 hardlink to /tmp/foo:

drwxr-xr-x 2 michal michal 4096 2011-08-07 18:40 /tmp/foo
           ^---- two hardlinks

first is from /tmp/ directory pointing to /tmp/foo, and the second is the '.' with in /tmp/foo/ pointing to it self.


Also, note that you can use ls -A (instead of ls -a) to list all files including hidden files, but excluding the . and .. directories.