Files

相同的文件名不同的 INODES

  • June 9, 2020

我最近在一台裝有 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上面輸出中的字元不一樣,但看起來很相似。第一行是 a LATIN SMALL LETTER P,第二行是 a CYRILLIC SMALL LETTER ER(參見https://unicode.org/cldr/utility/confusables.jsp?a=p&r=None)。這只是一個範例,它可以是文件名中的每個字元,甚至是點。

當我使用 UTF-8 語言環境時,我的 shell 會給出上述輸出。但是,如果我使用的語言環境不是所有的 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 ERASCII 中不存在 。

引用自:https://unix.stackexchange.com/questions/558220