同一ファイル名のファイルが同一のディレクトリに現れる
言葉で説明するよりも見たほうがわかりやすので、下記のようなコマンドと結果が返るとします。
※前提として”同一ファイル名で同一のディレクトリに作成することはできません”ということを念頭に。
状況の調べ方
$ ls -li
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 app
この場合どうやって状況を調べますか?
iノードは別なので同一ファイルを間違って表示しているのではないように見えます。
まずはファイルの名前にフォーカスして疑ってみましょう。
- ファイル名の最後に空白がついている
- ファイル名がUNICODEのファイル名で、ASCIIの'aaa'とUNICODEの'aaa'で異なっている
などが経験的に可能性があります。ではこれをどうやって検証するかですが、
$ ls -m
app, app , test.sh
のような結果が得られれば、最後に空白がついているのが一目瞭然!です。
また
$ ls -m | od
のようにしてHEXの結果を得ることにより、空白を確実に見つけることもできます。
また別のパターンとして、UNICODEとASCIIで異なるような場合は、LANG=CとしてEnvironment Variableを変更の上lsコマンドを実行します。
このとき、Unicodeのコードの場合表示が変化します。
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
同じファイルが2個もある、という状況にもし遭遇するようなことがあったら頭に入れておくと混乱を避けられるかと思います。