The current directory . and the parent directory .. exist under each directory in the Linux filesystem. But how come we can't see them when we run the ls command?
elliot@ubuntu-linux:~/Desktop$ pwd
/home/elliot/Desktop
elliot@ubuntu-linux:~/Desktop$ ls
hello.txt
elliot@ubuntu-linux:~/Desktop$ ls -l
total 4
-rw-r--r-- 1 elliot elliot 37 Jan 19 14:20 hello.txt
As you can see, I even tried to run ls -l and still can't see the current directory or the parent directory.
You need to use the -a option with the ls command as follows:
elliot@ubuntu-linux:~/Desktop$ ls -a
. .. hello.txt
Hooray! Now you can see all the files. The -a option shows you all the files, including hidden files and of course you can use the full option name --all, which will do the same thing:
elliot@ubuntu-linux:~/Desktop$ ls --all
. .. hello.txt
It turns out that any filename that starts with . (a dot) is hidden.
Any filename that starts with a dot is hidden. That's why current and parent directories are hidden.
To demonstrate further, go to your user home directory and run the ls command:
angela@ubuntu-linux:~$ ls
Music
Now run the ls -a command:
angela@ubuntu-linux:~$ ls -a
. .. .bash_logout .bashrc Music .profile
You can now see the hidden files in your home directory! Notice all the hidden filenames start with a dot.