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 ?
Réponses
Trop de publicités?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.
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.
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