![我的一个文件夹中的两个文件如何具有相同的名称?](https://linux22.com/image/54151/%E6%88%91%E7%9A%84%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%AD%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A6%82%E4%BD%95%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E5%90%8D%E7%A7%B0%EF%BC%9F.png)
我下载了两个文件,它们都保存为相同的文件名,然后我用 scp 将它们传输到另一台计算机。
为什么当第二个得救时他们没有合而为一?
答案1
也许他们只是看就像他们有相同的名字一样。
尝试:
$ 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>
让人更清楚发生了什么。
也可以看看这个另一个答案有关该主题的更多信息。