La scommessa più sicura è fare riferimento alla voce di Wikipedia per il set di caratteri consentito per qualsiasi sistema operativo. Può essere trovato da qui .
Ad esempio, per la maggior parte dei sistemi basati su unix, il set di caratteri consentito è impostato su 8 bit e il carattere riservato è il carattere null (NUL, '\0'
). Tuttavia, non è una buona pratica utilizzare i caratteri speciali nei nomi dei file poiché rappresentano un problema durante la loro rimozione.
Ad esempio, posso avere un nome file come -ramesh.txt
e provo a rimuoverlo come di seguito.
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.
Devo eliminare il file come,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Maggiori dettagli possono essere trovati anche da questa risposta .
In Linux e OS-X /
è vietato solo il set ASCII stampabile, credo. Alcuni caratteri (come i metacaratteri della shell *?!
) causeranno problemi nelle righe di comando e richiederanno che il nome del file sia opportunamente citato o sfuggito.
I filesystem Linux come ext2, ext3 sono agnostici di set di caratteri (penso che lo trattino più o meno come un flusso di byte - solo null e /
sono proibiti). Ciò significa che è possibile memorizzare i nomi di file nella codifica UTF-8. Credo che spetti alla shell o ad altra applicazione sapere quale codifica utilizzare per convertire correttamente il nome file per la visualizzazione o l'elaborazione.
Quindi, per concludere, il problema non sta nell'utilizzare i caratteri speciali per i nomi dei file ma su come gestirli.