Klasörlerimden birindeki iki dosya nasıl aynı ada sahip olabilir?


12

İki dosya indirdim, ikisi de aynı dosya adına kaydedildi ve scp ile başka bir bilgisayara aktardım.

İkincisi kurtarıldığında neden bir olmadılar?


2
ls -laLütfen sonuçlarını gösterebilir misiniz ?
ryekayo

2
Daha da iyisi, ls -lb(veya ls -labisim ile başlıyorsa .).
G-Man 'Monica'yı Yeniden Başlat' diyor

1
Ayrıca, tam olarak ne oldu? Sen indirilen dir1/foove dir2/foomakine X, daha sonra scp'bunları ed dir42makine Y üzerinde ve aynı adla ayrı dosyalar olarak çıktı? Yoksa aynı ada sahip iki dosyayı aynı dizine (X makinesinde) indirdiniz ve aynı ada sahip ayrı dosyalar mı çıktılar?
G-Man 'Monica'yı Yeniden Başlat' diyor

Yanıtlar:


39

Belki de sadece aynı ada sahipmiş gibi görünürler .

Deneyin:

$ touch Stéphane Stéphane Stéphane\  St​éphane
$ ls -1
Stéphane
Stéphane
St​éphane
Stéphane 

Hemen hemen aynı görünüyorlar.

$ ls -1b
Stéphane
Stéphane
St​éphane
Stéphane\ 

Biraz daha iyi. Boşluk karakteri olarak işaretlenir \ (ancak tüm lsuygulamalar bunu yapmaz).

$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\ 
St\342\200\213\303\251phane

Şimdi konuşuyoruz (ASCII olmayan tüm karakterler bayt bileşenlerinin sekizlik değeri olarak oluşturuluyor)

Ayrıca yapabilirsiniz ve bu herhangi bir girdi için işe yarar:

$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $

Burada, satırların sonu ile işaretlenir, $bu da sondaki alanı bulmayı kolaylaştırır. Ancak, bu adlı bir dosyayı tespit etmeye yardımcı olmazSté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>

Olanları daha net hale getirir.

Konu hakkında daha fazla bilgi için bu diğer cevaba da bakınız .


1
Stephane'e sormamın bir sakıncası yoksa, borulu komut LC_ALL=C sed -n 1ne işe yarar ?
ryekayo

3
sedbireyin lkomut görsel kesin biçimde girişi. LC_ALL = C ile bunun için sadece ASCII karakterleri kullandığından emin oluruz (en azından GNU ile sedgerekli değildir).
Stéphane Chazelas

2
@ StéphaneChazelas Ayrıca kullanabilirsiniz:LC_ALL=C ls -b
vinc17

@ vinc17, iyi bir nokta, bu da yeni satır karakterlerine sahip dosyaları tespit etmek için sed'den daha iyi, ancak her zaman arkadaki alanı tespit etmek değil. Cevaba ekledim.
Stéphane Chazelas

Lanet olsun, bir dosya adının sonunda boşluklara sahip olabileceğiniz TIL ve dosya sisteminde iki özdeş isim dosyası var gibi görünüyor.! Harika cevap, ls | LC_ALL=C sed -n lgerçekten şimdi büyük bir zaman tasarrufu oldu, teşekkürler!
Elijah Lynn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.