Linux / Windows / Unix /… dosya adları: Hangi karakterlere izin verilir? Hangisi çıkmadı?


43

Farklı işletim sistemlerinde hangi karakterlere izin verilir ve hangileri komut satırından geçilmelidir?


Aşağıda bazı yararlı cevaplar var, fakat ne elde etmeye çalışıyorsunuz? Kendi karakterinizin beyaz listeleme yordamlarını kodlamak muhtemelen en iyi yol değildir.
medina

Herkese teşekkürler! Tüm cevaplar yardımcı olur. Bilgiye ihtiyacım olan şey: Adlarını değiştirerek (meta veri içermeyen), dosya sistemindeki dosyaları etiketleyecek bir araç yazıyorum.
java.is.for.desktop

Süper kullanıcı hakkındaki cevaba da bakınız .
pevik

Yanıtlar:


26

Dosya Adları hakkındaki Wikipedia makalesinde bir dosya adı karakteri tartışması var .

Bu makaleyi bilgilendirici bulabilirsiniz: Unix / Linux / POSIX Dosya Adlarını Düzeltme .

Bu makale OS X ve Windows XP: X - XP: Dosya Adlarındaki Yasaklı Karakterleri karşılaştırır (PDF, bkz. Sf. Yaklaşık 64-66).

1000 $ 'lık Dosya Adında Olmaması Gerekenler Alex

Ben olması gereken karakterler bilmiyorum un öncelemeli ama Linux, muhtemelen böyle "n" (yeni satır) gibi özel anlama sahip olabilir karakterleri "t" (sekme) ve diğerleri kaçmak için iyi bir fikir değil, ancak bu genellikle dosya işlemlerinde bir sorun değildir. Belki de "kaçırılmamış" yerine "kaçtı" demek istedin. En yaygın olanlar kabuğun boşluk, ">", "<", vb. Gibi yorumlayacağılardır.


7
Bu gerçekten bir cevap değil - tüm bilgiler dış. Ve bu bağlantıların bazıları şimdi koptu.
Steve Bennett

26

* Nix içindeki bir dosya adına izin verilmeyen tek karakterler NULve /. Windows'ta sadece NUL, :ve \gerçekten izin verilir, ancak birçok uygulamalar, daha ileri de önlenmesi olduğunu kısıtlamak değil ?, *, +, ve %.

Hiçbir noktada bir dosya adı herhangi karakterler yapmak ihtiyacı kabuk tarafından yorumlanamaz için gerekmediği sürece çıkış yapılmasını.


İkinci nokta, vurguyu hak ediyor. Genellikle, “kaçış”, kullanıcının kabuğun aksi takdirde özel bir şekilde ele alacağı karakterleri içeren karakter dizileri (örn. Yol adları) belirtmesine izin veren bir kabuk mekanizması anlamına gelir. OP, aksi takdirde izin verilmeyen karakterleri kodlamak için “yüzde kodlama” gibi bir şey kullanmak anlamına geliyorsa, bu, ilgili her bir programın benimsemesi gereken (ya da uygulamaması gereken) tamamen uygulama düzeyinde bir “yol adı protokolü” dür.
Chris Johnsen

Readdir ile bir klasör tarıyorum, sonra döndürdüğü isimlerle dosyaları açmaya çalışıyorum. Bazıları ENOENT ile açılamıyor ve bu da işletim sistemi için bile bazen kaçmanız gerektiğini gösteriyor.
gman

13

Windows'da Explorer ile aşağıdaki karakterlerden birini kullanarak bir dosya oluşturursanız, karakterlerin girilmesine izin verilmediğinden şikayet edecektir:

\ / : * ? " < > |

İyi bir referans burada:

Dosyaları, Yolları ve Ad Alanlarını Adlandırma
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft ayrıca belirtiyor:

"... Windows tabanlı masaüstü platformlarında, geçersiz yol karakterleri ASCII / Unicode karakterleri 1 ila 31'in yanı sıra alıntı ("), (<) 'den küçük, (>), pipe (|), backspace (\ b), null (\ 0) ve sekme (\ t). "

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx


Birkaç yıl önce, kullanıcı modu Windows'un büyük / küçük harf duyarlı olmasının yanı sıra bu kısıtlamalara sahip olduğunu da hatırlıyorum ("ABC.txt" === "abc.txt"). Ancak, çekirdek modu Windows daha az kısıtlamaya sahiptir ve büyük-küçük harf duyarlıdır ("ABC.txt"! == "abc.txt", tıpkı * NIX gibi). Yine de tüm amaç ve amaçlar için yukarıdaki karakterler, kullanıcı modunda çalışan programların çoğu için geçerli olacaktır.
CubicleSoft

\ / : * ? " < > |Hepsinden kaçabilirim ve GNU / Linux sistemimde mkdir ile oluşturabilirim. Dizini mkdir '?'oluşturmak için de kullanabilirsiniz ?. Bunu test etmek için ramdisk ve XFS dosya sistemini kullandım.
S.Goswami

5

Linux ve diğer POSIX uyumlu sistemlerde, "/", dizin ayırıcısı olduğu için ayrılmıştır ve "\ 0" (NULL karakter) dizgenin sonunu belirler. Her şey izin verilir.


1
Her ne kadar yeni satırlardan, sekmelerden, kontrol karakterlerinden ve benzerlerinden kaçınmak ve dosya adının geçerli UTF-8 olduğundan emin olmak için kesinlikle tavsiye edilir.
Flimm
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.