Może tylko wyglądają, jakby miały to samo imię.
Próbować:
$ touch Stéphane Stéphane Stéphane\ Stéphane
$ ls -1
Stéphane
Stéphane
Stéphane
Stéphane
Wyglądają prawie tak samo.
$ ls -1b
Stéphane
Stéphane
Stéphane
Stéphane\
Trochę lepiej. Znak spacji jest oznaczony jako \
(chociaż nie wszystkie ls
implementacje to robią).
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
Teraz rozmawiamy (wszystkie znaki spoza ASCII są renderowane jako ósemkowa wartość ich bajtów)
Możesz także zrobić, a to działa na każdym wejściu:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
Tutaj koniec linii jest oznaczony, $
co ułatwia dostrzeżenie końcowego odstępu. Nie pomoże to jednak w wykryciu pliku o nazwieSté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>
Wyjaśnia, co się stało.
Zobacz także inną odpowiedź, aby uzyskać więcej informacji na ten temat.
ls -la
?