GNU/Linux >> Tutoriels Linux >  >> Linux

Noms de fichiers Linux/Windows/Unix/... :Quels caractères sont autorisés ? Quels sont les non échappés ?

Solution 1 :

Les seuls caractères non autorisés dans un nom de fichier en *nix sont NUL et / . Sous Windows, seulement NUL , : , et \ ne sont vraiment pas autorisés, mais de nombreuses applications restreignent cela davantage, empêchant également ? , * , + , et % .

À aucun moment les caractères d'un nom de fichier n'ont besoin à échapper sauf si nécessaire pour ne pas être interprété par le shell.

Solution 2 :

Il y a une discussion sur les caractères des noms de fichiers dans l'article de Wikipedia sur les noms de fichiers.

Vous trouverez peut-être cet essai instructif :Fixing Unix/Linux/POSIX Filenames.

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

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

Je ne sais pas quels caractères 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 particulière tels que "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. Peut-être voulez-vous dire "échappé" plutôt que "non échappé". Les plus courants sont ceux que le shell interprétera comme l'espace, ">", "<", etc. Voir certains des articles que j'ai liés pour une discussion à ce sujet.

Solution 3 :

Si vous créez un fichier sous Windows avec l'Explorateur en utilisant l'un des caractères suivants, il se plaindra que les caractères ne sont pas autorisés :

\ / : * ? " < > |

Une bonne référence est ici :

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

Microsoft déclare en outre :

"... sur les plates-formes de bureau Windows, les caractères de chemin non valides peuvent inclure les caractères ASCII/Unicode 1 à 31, ainsi que les guillemets ("), inférieur à (<), supérieur à (>), pipe (|), retour arrière (\b), null (\0) et tabulation (\t)."

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

Solution 4 :

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


Linux
  1. Que sont les fichiers /dev/zero et /dev/null sous Linux

  2. Comment obtenir le chemin d'un processus sous Unix / Linux

  3. Caractères autorisés dans les noms de variables d'environnement Linux

  4. Pourquoi y a-t-il autant de /dev/tty sous Linux ?

  5. unix:///var/run/supervisor.sock aucun fichier de ce type

Comment convertir un fichier Windows en un fichier UNIX

Linux – Les différents noyaux Linux/unix sont-ils interchangeables ?

Commande AWK sous Linux/Unix

/dev/null sous Linux

Fichiers /proc/cpuinfo et /proc/meminfo sous Linux

Quels caractères sont interdits dans les noms de répertoires Windows et Linux ?