Vielleicht sehen sie nur so aus, als hätten sie den gleichen Namen.
Versuchen:
$ touch Stéphane Stéphane Stéphane\ Stéphane
$ ls -1
Stéphane
Stéphane
Stéphane
Stéphane
Sie sehen ziemlich gleich aus.
$ ls -1b
Stéphane
Stéphane
Stéphane
Stéphane\
Etwas besser. Das Leerzeichen wird als gekennzeichnet \
(obwohl dies nicht bei allen ls
Implementierungen der Fall ist).
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
Jetzt sprechen wir (alle Nicht-ASCII-Zeichen werden als Oktalwert ihrer Bytebestandteile gerendert).
Sie können dies auch tun, und das funktioniert für jede Eingabe:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
Hier ist das Zeilenende markiert, mit $
dem der nachfolgende Raum leichter erkannt werden kann. Dies hilft jedoch nicht, eine aufgerufene Datei zu erkennenStéphane<newline>Stéphane
$ ls | perl -Mopen=locale -MUnicode::UCD=charinfo -lpe '
s/[^\41-\177]/"<".charinfo(ord$&)->{name}.">"/ge'
Ste<COMBINING ACUTE ACCENT>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane
St<ZERO WIDTH SPACE><LATIN SMALL LETTER E WITH ACUTE>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane<SPACE>
Macht es klarer, was passiert ist.
Siehe auch diese andere Antwort für weitere Informationen zu diesem Thema.
ls -la
bitte die Ergebnisse von zeigen ?