異なるINODESを持つ同じファイル名

異なるINODESを持つ同じファイル名

最近、RHEL6がインストールされているシステムで次のものが見つかりました。 ls -lbi

917921 -rw-r-----. 1 alex pivotal  5245 Dec 17 20:36 application.yml
917922 -rw-r-----. 1 alex pivotal  2972 Dec 17 20:36 application11.yml
917939 -rw-r-----. 1 alex pivotal  3047 Dec 17 20:36 application11.yml
917932 -rw-r-----. 1 alex pivotal  2197 Dec 17 20:36 applicationall.yml

これをどのように実装するのか疑問に思います。

ベストアンサー1

この動作を再現できます。例をご覧ください。

ls -lib
268947 -rw-r--r-- 1 root root  8 Dez 20 12:32 app
268944 -rw-r--r-- 1 root root 24 Dez 20 12:33 aрр

これは私のシステムにあります(Linux debian 4.9.0-7-amd64 #1 SMP Debian 4.9.110-3+deb9u2 (2018-08-13) x86_64 GNU/Linux)。

UTF-8ロケールがあり、上記の出力の文字はp異なりますが、似ているようです。最初の行はaLATIN SMALL LETTER Pで、2行目はaですCYRILLIC SMALL LETTER ER(参照:https://unicode.org/cldr/utility/confusables.jsp?a=p&r=None)。これは単なる例であり、ファイル名の任意の文字、さらにはドットまで可能です。

UTF-8ロケールを使用すると、シェルは上記の出力を提供します。ただし、デフォルトのlocalなど、すべてのUnicode文字を含まないロケールを使用すると、c出力は次のようになります(設定でロケールを変更できますLC_ALL)。

LC_ALL=c ls -lib
268947 -rw-r--r-- 1 root root  8 Dec 20 12:32 app
268944 -rw-r--r-- 1 root root 24 Dec 20 12:33 a\321\200\321\200

CYRILLIC SMALL LETTER ERこれはASCIIには存在しないためです。

おすすめ記事