我下载了两个文件,它们都保存为相同的文件名,然后我将它们通过scp传输到另一台计算机。
为什么当第二个被保存时它们不合而为一?
也许他们只是看起来像他们具有相同的名字。
尝试:
$ touch Stéphane Stéphane Stéphane\ Stéphane
$ ls -1
Stéphane
Stéphane
Stéphane
Stéphane
它们看起来几乎一样。
$ ls -1b
Stéphane
Stéphane
Stéphane
Stéphane\
稍微好一些。空格字符被标记为\
(尽管并非所有ls
实现都这样做)。
$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\
St\342\200\213\303\251phane
现在,我们正在讨论(所有非ASCII字符均表示为其字节组成部分的八进制值)
您也可以这样做,并且适用于任何输入:
$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $
此处,行的末端标记有$
,这使得更容易发现尾随空间。但是,这将无助于发现一个名为Sté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>
更清楚地说明了发生了什么。
有关该主题的更多信息,请参见此其他答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句