Le pari le plus sûr est de se référer à l'entrée wikipedia pour le jeu de caractères autorisé pour tout système d'exploitation. Il peut être trouvé à partir d' ici .
Par exemple, pour la plupart des systèmes basés sur Unix, le jeu de caractères autorisé est un jeu de 8 bits et le caractère réservé est le caractère nul (NUL, '\0'
). Cependant, ce n'est pas une bonne pratique d'utiliser les caractères spéciaux dans les noms de fichiers car ils posent un problème lors de leur suppression.
Par exemple, je peux avoir un nom de fichier comme -ramesh.txt
et j'essaye de le supprimer comme ci-dessous.
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.
J'ai besoin de supprimer le fichier car,
rm -- "-ramesh.txt"
rm: remove regular empty file `-ramesh.txt'? y
Vous trouverez également plus de détails sur cette réponse .
Sous Linux et OS-X, seul /
l'ensemble ASCII imprimable est interdit, je crois. Certains caractères (comme les métacaractères shell *?!
) causeront des problèmes dans les lignes de commande et nécessiteront que le nom de fichier soit correctement cité ou échappé.
Les systèmes de fichiers Linux tels que ext2, ext3 sont indépendants des jeux de caractères (je pense qu'ils le traitent plus ou moins comme un flux d'octets - uniquement des valeurs nulles et /
sont interdits). Cela signifie que vous pouvez stocker les noms de fichiers dans le codage UTF-8. Je crois qu'il appartient au shell ou à une autre application de savoir quel encodage utiliser pour convertir correctement le nom de fichier à afficher ou à traiter.
Donc, pour conclure, le problème n'est pas d'utiliser les caractères spéciaux pour les noms de fichiers mais de savoir comment les gérer.