$ ln fun fun-hard
$ ln fun dir1/fun-hard
$ ln fun dir2/fun-hard
$ ls -1
total 16
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir1
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir2
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard
したがって、ファイルfunにはfunの4つのインスタンスがあり、fun-hardリストの2番目のフィールドには両方とも4が含まれます。これは、現在のファイルに存在するハードリンクの数です。
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir1
drwxrwxr-x 2 me 4096 2018-01-14 16:17 dir2
dir1とdir2に2つのファイルfun-hardインスタンスがあるのはなぜですか?単一のハードリンクがありませんか?楽しい - 難しい?
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard
この4つの面白くて難しい例を詳しく説明できますか?なぜ再発するのですか?
次の場合、dir1とdir2に2つのハードリンクがあります。
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun
-rw-r—-r—- 4 me 1650 2018-01-10 16:33 fun-hard
...4つのハードリンクインスタンスがありますが、なぜdir1とdir2も4つのインスタンスではないのですか?
ベストアンサー1
最大ディレクトリには少なくとも2つのハードリンクがあります。通常3つ以上です。次の2つのコマンドを実行すると、3つのハードリンクがあり、foo
もちろんすべてが同じinodeを持っていることがわかります(同じディレクトリへのリンクなので)。
$ mkdir -p foo/bar
$ ls -ldi foo foo/. foo/bar/..
ディレクトリは通常少なくとも次のハードリンク:
- 自体(例
foo
:) - 独自のリンク(例
foo/.
:) foo/bar/..
たとえば、親ディレクトリである各子ディレクトリ(存在する場合)から自分へのリンクです。
ディレクトリ自体へのハードリンクはその内容から完全に独立しており、各ディレクトリ内の各ファイルのハードリンクの数とは完全に別々にカウントされます。