What is double dot(..) and single dot(.) in Linux?

LinuxFileUnixDirectory

Linux Problem Overview


The ls -ai command shows that . and .. have their inodes the same as the current directory and parent directory, respectively.

What exactly are . and ..?

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.

Linux Solutions


Solution 1 - Linux

. represents the directory you are in and .. represents the parent directory.

From the dot definition:

> This is a short string (i.e., sequence of characters) that is added to > the end of the base name (i.e., the main part of the name) of a file > or directory in order to indicate the type of file or directory. > > On Unix-like operating systems every directory contains, as a minimum, > an object represented by a single dot and another represented by two > successive dots. The former refers to the directory itself and the > latter refers to its parent directory (i.e., the directory that > contains it). These items are automatically created in every > directory, as can be seen by using the ls command with its -a option > (which instructs it to show all of its contents, including hidden > items).

Solution 2 - Linux

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)

Solution 3 - Linux

. represents the current directory that you are using and .. represents the parent directory.

Example:

Suppose you are in the directory /etc/mysql and you wanted to move to the parent directory, i.e. /etc/. Then use cd..:

/etc/mysql> cd ..

And if you wanted to set the path of one file in the current directory bash file, use . with file name like this: ./filename

Solution 4 - Linux

They are not hard links. You can more think of it like a shorthand for this directory (.) and parent of this directory (..).

Try to remove or rename . or ... Then you understand why it is not a hard link.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCubarcoView Question on Stackoverflow
Solution 1 - LinuxRahul TripathiView Answer on Stackoverflow
Solution 2 - Linuxe.danView Answer on Stackoverflow
Solution 3 - LinuxDevaView Answer on Stackoverflow
Solution 4 - LinuxNafis AhmadView Answer on Stackoverflow