ソフトリンクは元のファイルreadlink
などを簡単に追跡できますが、元のファイルへのハードリンクを追跡するのに問題があります。
$ ll -i /usr/bin/bash /bin/bash
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash*
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash*
^
上記は期待どおりに機能します。 - クール - >両方のファイルは同じinode 1310813を指します
(しかし、表示されるリンクの数は^
1で表されます。その理由はGillesの答えで理解できます)。
$ find / -samefile /bin/bash 2>/dev/null
/usr/bin/bash
上記が予想されるので問題ありません。
$ find / -samefile /usr/bin/bash 2>/dev/null
/usr/bin/bash
上記はいいえクール。元のファイルを追跡する方法またはハードリンクごとこの/usr/bin/bash
記事を参考にしてもよろしいですか?
奇妙さ - 以下も役に立ちません。
$ find / -inum 1310813 2>/dev/null
/usr/bin/bash
ベストアンサー1
まず、ハードリンクの場合、元のファイルはありません。すべてのハードリンクが同じように作成されます。
ls -l
しかし、出力にリンク数が1で示されているように、ここには関連するハードリンクはありません。
$ ll -i /usr/bin/bash /bin/bash 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash* 1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash*
bin
を指すシンボリックリンクが原因で問題が発生しますusr/bin
。bash
利用可能なすべてのパスfind
、次のオプションを使用してシンボリックリンクに従うように指示する必要があります-L
。
$ find -L / -xdev -samefile /usr/bin/bash 2>/dev/null
/usr/bin/rbash
/usr/bin/bash
/bin/rbash
/bin/bash
-xdev
私はあなたのシステムが単一のファイルシステムにマウントされていることを知っているので、ここで使用します。これにより/dev
、などの/proc
問題が発生するのを防ぐことができます。/run
/sys