最近、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
このようなことをどのようにして達成できるのでしょうか?
その振る舞いを再現することができました。例を見てください:
_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
は同じではありませんが、似ています。 1行目は_LATIN SMALL LETTER P
_で、2行目は_CYRILLIC SMALL LETTER ER
_です( を参照してください)https://unicode.org/cldr/utility/confusables.jsp?a = p&r = None )。これは単なる例であり、ファイル名のすべての文字、ドットも含まれます。
UTF-8ロケールを使用すると、シェルが上記の出力を表示します。ただし、デフォルトのロケールc
など、すべてのUnicode文字を含まないロケールを使用すると、出力は次のようになります(_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に存在しないためです。
私は同じ問題を抱えていました。 inodeが異なるが、どうやら同じ名前(フランス語)の2つのファイル。Chaosの優れた答えは、私を軌道に乗せました。2番目のファイルの名前の2つの文字éは、最初のファイルのものとは異なります。ファイルには同じiノードがありません。
me @ ubuntu:〜$ ls -li 2020\06\03\CR\R *
9586921 -rw-rw-r-- 1 francis francis 107933 jun 4 18:53 '2020 06 03 CRRéunionéquipe.docx'
9569690 -rw-rw-r-- 1 francis francis 107933 jun 4 17:11 '2020 06 03 CRRéunionéquipe.docx'
そして、それらは完全に同じ名前ではありません:
me @ ubuntu:〜$ LC_ALL = c ls 2020\06\03\CR\R *
bash:警告:setlocale:LC_ALL:ロケールを変更できません(c)
'2020 06 03 CR Re' $ '\ 314\201''union e' $ '\ 314\201''quipe.docx' '2020 06 03 CR R' $ '\ 303\251' 'ユニオン '$'\303\251''quipe.docx '
そしてそれらの内容は同じです:
me @ ubuntu:〜$ cmp '2020 06 03 CRRéunionéquipe.docx' '2020 06 03 CRRéunionéquipe.docx'
説明は、2番目のファイルの名前では、éはUTF8ラテン小文字E(AC3付き)(C3 A9)であり、最初のラテン小文字E +複合アクセント(65 CC 81)では次のとおりです。
注意:ラテン小文字E +組み合わせアクセントのアクセントをWebフォームに貼り付けると、ラテン小文字Eとアクセント付きに変換できます。