Files
相同的文件名不同的 INODES
我最近在一台裝有 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
上面輸出中的字元不一樣,但看起來很相似。第一行是 aLATIN SMALL LETTER P
,第二行是 aCYRILLIC 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 ER
ASCII 中不存在 。