Sommaire:
- Windows: tout sauf les caractères de contrôle ASCII et
\/:*?"<>|
- Linux, OS-X: tout sauf null ou
/
Sur toutes les plates-formes, il est préférable d'éviter les caractères non imprimables tels que les caractères de contrôle ASCII.
les fenêtres
Sous Windows, l'Explorateur Windows n'autorise pas les caractères de contrôle ou \/:*?"<>|
vous pouvez utiliser des espaces. Si vous utilisez des espaces, vous devrez souvent citer le nom du fichier lorsqu'il est utilisé à partir de la ligne de commande (mais les applications de l'interface graphique ne sont pas affectées pour autant que je sache). Les systèmes de fichiers Windows tels que NTFS stockent apparemment le codage avec le nom de fichier, mais UTF-16 est standard.
Certaines parties de Windows sont sensibles à la casse, d'autres ne respectent pas la casse. Il est facile de créer des noms de fichiers distincts tels que "Ab" et "ab" sur un système de fichiers Windows NTFS. Ces noms font référence à des fichiers distincts contenant un contenu distinct. Cependant, bien que l'invite de commande Windows répertorie volontiers les deux fichiers à l'aide dir
, vous ne pouvez pas accéder facilement à l'un d'entre eux ni en manipuler à l'aide de commandes telles que type
. Voir ci-dessous.
Linux, OS-X
Sous Linux et OS-X, seul /
le jeu ASCII imprimable est interdit, je crois. Certains caractères (métacaractères du shell, par exemple *?!
) poseront des problèmes de ligne de commande et obligeront le nom de fichier à être cité ou échappé de manière appropriée.
Les systèmes de fichiers Linux tels que ext2, ext3 sont agnostiques en ce qui concerne les jeux de caractères (je pense qu'ils le traitent plus ou moins comme un flux d'octets - uniquement les valeurs NULL et /
sont interdites). Cela signifie que vous pouvez stocker les noms de fichiers au format UTF-8. Je pense qu'il appartient au shell ou à une autre application de savoir quel codage utiliser pour convertir correctement le nom de fichier en affichage ou en traitement.
Conclusion
Donc, vous pouvez probablement utiliser en toute sécurité quelque chose comme ✣
(si ce n’était pas si difficile à taper)
Sensibilité à la casse (in) sous Windows
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
Notez que nous ne pouvons pas taper le contenu du deuxième fichier, la type
commande Windows renvoie simplement le contenu de Ab à la place. Le troisième fichier serait également distinct de aB sous Linux.
(Windows 10 NTFS).