web-dev-qa-db-fra.com

Existe-t-il des noms de fichiers Linux invalides?

Si je voulais créer une chaîne qui est garantie de ne pas représenter un nom de fichier, je pourrais y mettre l'un des caractères suivants sous Windows:

\ / : * ? | < >

par exemple.

this-is-a-filename.png

?this-is-not.png

Existe-t-il un moyen d'identifier une chaîne comme "probablement pas un fichier" sous Linux?

49
izb

Il n'y a presque aucune restriction - à part '/' et '\0', vous pouvez utiliser n'importe quoi. Cependant, certaines personnes pense que ce n'est pas une bonne idée de laisser autant de flexibilité.

42
Vinay Sajip

Une chaîne vide est le seul nom de chemin vraiment invalide sous Linux, qui peut fonctionner pour vous si vous n'avez besoin que d'un seul nom invalide. Vous pouvez également utiliser une chaîne comme "///foo ", qui ne serait pas un nom de chemin canonique, bien qu'il puisse faire référence à un fichier (" /foo "). Une autre possibilité serait quelque chose comme" /dev/null/foo", puisque /dev/null a une signification non-répertoire définie par POSIX. Si vous n'avez besoin que de chaînes qui ne peuvent pas faire référence à un fichier normal, vous pouvez utiliser "/" ou ". ", car ce sont toujours des répertoires.

15
mark4o