En güvenli bahis, herhangi bir işletim sistemi için izin verilen karakter kümesi için wikipedia girişine başvurmaktır. Bu gelen bulunabilir burada .
Örneğin, çoğu unix tabanlı sistem için, izin verilen karakter kümesi 8 bitlik settir ve ayrılmış karakter null karakterdir (NUL, '\0'
). Ancak, dosya adlarındaki özel karakterleri kaldırırken sorun teşkil ettikleri için kullanmak iyi bir uygulama değildir.
Örneğin, bir dosya adına sahip olabilirim -ramesh.txt
ve aşağıdaki gibi kaldırmaya çalışıyorum.
rm -ramesh.txt
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
rm "-ramesh.txt"
rm: invalid option -- 'a'
Try `rm ./-ramesh.txt' to remove the file `-ramesh.txt'.
Try `rm --help' for more information.
Dosyayı silmem gerekiyor,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Bu yanıtta daha fazla ayrıntı bulunabilir .
Linux ve OS-X'te sadece /
yazdırılabilir ASCII setinin yasaklandığını düşünüyorum. Bazı karakterler (kabuk metakarakterleri gibi *?!
) komut satırlarında sorunlara neden olur ve dosya adının uygun şekilde alıntılanmasını veya kaçmasını gerektirir.
Ext2, ext3 gibi Linux dosya sistemleri karakter kümesi agnostiktir (bence bunu sadece bir bayt akışı olarak görürler - sadece boştur ve /
yasaktır). Bu, dosya adlarını UTF-8 kodlamasında saklayabileceğiniz anlamına gelir. Ben görüntü veya işleme için dosya adını düzgün dönüştürmek için kullanmak için hangi kodlama bilmek kabuk veya başka bir uygulama kalmış.
Sonuç olarak, sorun dosya adları için özel karakterlerin kullanılması değil, bunların nasıl ele alınacağıdır.