52 votes

Linux/Windows/Unix/... noms de fichiers : Quels sont les caractères autorisés ? Quels sont ceux qui ne sont pas encapsulés ?

Quels sont les caractères autorisés et ceux qui doivent être échappés sur la ligne de commande dans les différents systèmes d'exploitation ?

30voto

David Points 344

Les seuls caractères non autorisés dans un nom de fichier sous *nix sont les suivants NUL y / . Dans Windows, seuls les NUL , : et \ ne sont vraiment pas autorisées, mais de nombreuses applications les restreignent encore davantage, empêchant également les ? , * , + et % .

À aucun moment, les caractères d'un nom de fichier ne peuvent être utilisés. besoin doivent être échappés, sauf si nécessaire, afin de ne pas être interprétés par le Shell.

30voto

jason saldo Points 5036

L'article de Wikipédia sur les caractères de noms de fichiers traite de la question. Noms de fichiers .

Vous trouverez peut-être cet essai instructif : Correction des noms de fichiers Unix/Linux/POSIX .

Cet article compare OS X et Windows XP : X vs. XP : Caractères interdits dans les noms de fichiers (PDF, voir pp. 64-66 environ).

Les choses qui ne devraient pas figurer dans les noms de fichiers pour 1 000 $ Alex

Je ne sais pas quels sont les caractères qui doivent être un -escaped, mais sous Linux, ce n'est probablement pas une bonne idée d'échapper les caractères qui peuvent avoir une signification spéciale comme "n" (nouvelle ligne), "t" (tabulation) et autres, mais ce n'est généralement pas un problème dans les opérations sur les fichiers. Vous voulez peut-être dire "échappé" plutôt que "non échappé". Les plus courants sont ceux que le Shell interprète comme l'espace, ">", "<", etc. Voir certains des articles que j'ai mis en lien pour une discussion à ce sujet.

16voto

Thecamelcoder Points 11

Si vous créez un fichier sous Windows avec l'explorateur en utilisant l'un des caractères suivants, l'explorateur vous signalera que ces caractères ne sont pas autorisés :

\ / : * ? " < > |

Une bonne référence est ici :

Nommer les fichiers, les chemins et les espaces de noms
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx

Microsoft précise en outre que

"... sur les plates-formes de bureau basées sur Windows, les caractères de chemin d'accès non valides peuvent inclure les caractères ASCII/Unicode 1 à 31, ainsi que les guillemets ("), les caractères inférieurs à (<), les caractères supérieurs à (>), les pipes (|), les espaces inversés ( \b ), null ( \0 ) et l'onglet ( \t )."

http://msdn.microsoft.com/en-us/library/system.io.path.getinvalidpathchars.aspx

7voto

KaoFloppy Points 66

Sous Linux et d'autres systèmes compatibles POSIX, "/" est réservé car il s'agit du séparateur de répertoires, et " \0 "(le caractère NULL) désigne la fin de la chaîne. Tout le reste est autorisé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X