Solusi 1:
Satu-satunya karakter yang tidak diperbolehkan dalam nama file di *nix adalah NUL
dan /
. Di Windows, hanya NUL
, :
, dan \
benar-benar tidak diizinkan, tetapi banyak aplikasi membatasinya lebih jauh, juga mencegah ?
, *
, +
, dan %
.
Karakter apa pun dalam nama file yang diperlukan sama sekali tidak perlu untuk diloloskan kecuali sebagaimana diperlukan agar tidak ditafsirkan oleh shell.
Solusi 2:
Ada diskusi tentang karakter nama file di artikel Wikipedia tentang Nama File.
Anda mungkin menganggap esai ini informatif:Memperbaiki Nama File Unix/Linux/POSIX.
Artikel ini membandingkan OS X dan Windows XP:X vs. XP:Karakter Terlarang dalam Nama File (PDF, lihat hal. 64-66).
Hal-Hal yang Tidak Boleh Ada dalam Nama File seharga $1.000 Alex
Saya tidak tahu karakter mana yang harus un -escaped, tetapi di Linux, mungkin bukan ide yang baik untuk menghindari karakter yang mungkin memiliki arti khusus seperti "n" (baris baru), "t" (tab) dan lainnya, tetapi itu umumnya tidak menjadi masalah dalam operasi file. Mungkin maksud Anda "melarikan diri" daripada "tidak lolos". Yang paling umum adalah yang akan ditafsirkan oleh shell seperti spasi, ">", "<", dll. Lihat beberapa artikel yang saya tautkan untuk diskusi tentang itu.
Solusi 3:
Jika Anda membuat file di Windows dengan Explorer menggunakan salah satu karakter berikut, ia akan mengeluh bahwa karakter tersebut tidak diperbolehkan:
\ / : * ? " < > |
Referensi yang bagus ada di sini:
Memberi Nama File, Jalur, dan Ruang Nama
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
Microsoft lebih lanjut menyatakan:
"... pada platform desktop berbasis Windows, karakter jalur yang tidak valid mungkin menyertakan karakter ASCII/Unicode 1 hingga 31, serta tanda kutip ("), kurang dari (<), lebih besar dari (>), pipa (|), backspace (\b), null (\0) dan tab (\t)."
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx
Solusi 4:
Di Linux dan sistem lain yang kompatibel dengan POSIX, "/" dicadangkan sebagai pemisah direktori, dan "\0" (karakter NULL) menunjukkan akhir dari string. Segala sesuatu yang lain diizinkan.