The ls -ai
command shows that .
and ..
have their inodes same as current directory and parent directory, respectively.
Could anyone tell me what exactly .
and ..
are?
Are they real files or even hard links? But as I have known, it's not allowed to create a hard link to a directory.
They are special name-inode maps which do count as hard-links (they do increase the link-count) though they aren't really hard-links, since, as you said, directories can't have hard-links. Read more here: Hard links and Unix file system nodes (inodes)
.
represents the current directory that you are using and..
represents the parent directory of current directory.example: Suppose you are in the directory
/remote/speed3/users/devraj/
and you wanted to move to parent directory i.e./remote/speed3/users
then usecd..
/remote/speed3/users/dpawar> cd ..
and if you wanted to set path of one file in current directory bash file use
.
with file name like this ./filename.
represents the directory you are in and..
represents the parent directory.From the dot definition:
They are not hard links. You can more think it like a short hand for (.) this Directory and (..) parent of this directory.
try to remove or rename . or .. then you understand why it is not a hard link.