Soluzione 1:
Gli unici caratteri non consentiti in un nome file in *nix sono NUL
e /
. In Windows, solo NUL
, :
e \
non sono davvero consentiti, ma molte app lo limitano ulteriormente, impedendo anche ?
, *
, +
e %
.
In nessun momento i caratteri in un nome file hanno bisogno essere sfuggito tranne quanto richiesto per non essere interpretato dalla shell.
Soluzione 2:
C'è una discussione sui caratteri dei nomi dei file nell'articolo di Wikipedia sui nomi dei file.
Potresti trovare informativo questo saggio:Fixing Unix/Linux/POSIX Filenames.
Questo articolo mette a confronto OS X e Windows XP:X vs. XP:caratteri proibiti nei nomi dei file (PDF, vedi pp circa 64-66).
Cose che non dovrebbero essere nei nomi dei file per $ 1.000 Alex
Non so quali caratteri debbano essere un -escaped, ma in Linux probabilmente non è una buona idea sfuggire ai caratteri che possono avere un significato speciale come "n" (newline), "t" (tab) e altri, ma generalmente non è un problema nelle operazioni sui file. Forse intendi "scappato" piuttosto che "non scappato". I più comuni sono quelli che la shell interpreterà come spazio, ">", "<", ecc. Guarda alcuni degli articoli che ho collegato per una discussione su questi.
Soluzione 3:
Se crei un file su Windows con Explorer utilizzando uno dei seguenti caratteri, si lamenterà che i caratteri non sono consentiti:
\ / : * ? " < > |
Un buon riferimento è qui:
Denominazione di file, percorsi e spazi dei nomi
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
Microsoft afferma inoltre:
"... su piattaforme desktop basate su Windows, i caratteri di percorso non validi possono includere caratteri ASCII/Unicode da 1 a 31, nonché virgolette ("), minore di (<), maggiore di (>), barra verticale (|), backspace (\b), null (\0) e tab (\t)."
http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx
Soluzione 4:
Su Linux e altri sistemi compatibili con POSIX, "/" è riservato poiché è il separatore di directory e "\0" (il carattere NULL) indica la fine della stringa. Tutto il resto è consentito.