Question Quelles sont les raisons techniques pour ne pas utiliser de caractères spatiaux dans les noms de fichiers?


Quelqu'un que je connais a exprimé aujourd'hui une irritation à l'égard de ceux d'entre nous qui ont tendance à ne pas utiliser d'espaces dans nos noms de fichiers, par exemple NamingThingsLikeThis.txt - malgré les systèmes d’exploitation les plus modernes supportant des espaces dans les noms de fichiers.

Sont là raisons techniques qu'il est toujours courant de voir les noms de fichiers sans espaces (appropriés)? Si oui, quelles sont ces raisons techniques pour lesquelles les espaces dans les noms de fichiers sont évités ou découragés et dans quelles circonstances sont-ils pertinents?

La raison la plus évidente à laquelle je pourrais penser, et pourquoi je l’évite généralement, ce sont les citations supplémentaires requises sur la ligne de commande pour traiter de tels fichiers. Y a-t-il d'autres raisons techniques importantes?


75
2017-08-25 00:25


origine


Comme vous l'avez dit, ils sont beaucoup plus faciles à gérer sur la ligne de commande. Et pour la programmation, je ne suis pas sûr s'il est même possible ou faisable d'utiliser des espaces dans les noms de fichiers. - Alvin Row


Réponses:


Les caractères d'espacement dans les noms de fichiers peuvent constituer un problème royal dans de nombreux contextes sur la ligne de commande, et dans les scripts, où vous devez vous assurer qu'ils sont correctement échappés. fonctionnement.

Il est juste prudent de ne pas les avoir là, même si vous êtes sûr que le fichier / dir / what-ever ne sera jamais utilisé dans un tel contexte.

Cela et les vieilles habitudes ont la vie dure.


64
2017-08-25 00:39



Ils sont également une bonne douleur royale à traiter alors vous devez composer des chemins et les modifier. Assurez-vous que les composants ne sont pas échangé et échapé avant d'être ré-échappé / re-cité, en particulier si des éléments sont envoyés à d'autres bits de code pour être manipulés. - afrazier
Si vous pensez que les espaces sont mauvais, essayez de manipuler des fichiers avec de nouvelles lignes ('\n') dans leurs noms. (Les systèmes de type Unix le permettent en fait, généralement Windows, ou du moins le rendent difficile.) - Keith Thompson


Outre les autres réponses concernant la ligne de commande et les anciennes habitudes, il existe également de nombreux protocoles réseau qui nécessitent une attention particulière lorsqu’il s’agit de gérer des noms de fichiers contenant des espaces.

(Si vous avez déjà essayé de télécharger "Product List.pdf" depuis un site Web et que vous vous êtes retrouvé avec un fichier appelé "Product", vous en avez été mordu, car le programmeur à l’autre extrémité ne pas comprendre les règles de citation pour l'en-tête http Content-Disposition.


30
2017-08-25 01:01



+1. HTTP pour commencer. Les espaces dans les URL (pour tout protocole, pas seulement HTTP) doivent être évités à% 20 ou +. La confusion peut survenir quand ils ne sont pas encodés comme il se doit. Pour les pages Web, il y a une raison visuelle d'éviter les espaces et le trait de soulignement ("_") couramment utilisés pour les remplacer - ils peuvent tous deux se ressembler dans un lien souligné. c'est faux. - David Spillett
L'une des choses les plus ennuyeuses à propos des espaces à encoder dans les URL est la tendance pour certains logiciels à conserver les espaces encodés ... - SamB
Est-ce réel? En 2018 cela arrive? - Chris Calo
@ChrisCalo Vous remarquerez peut-être que cette réponse a été donnée en 2009 et non en 2018. Mais oui, cela se produit toujours en 2018. Peut-être moins, maintenant que la plupart des développeurs novices utilisent des frameworks pour créer des sites Web plutôt un problème. - Stobor


Beaucoup de raisons sont historiques. Cela ne signifie pas qu'ils n'ont pas de sens aujourd'hui.

Problèmes de portabilité

Lorsque vous nommez un fichier, vous devrez peut-être également examiner comment d'autres systèmes (de fichiers) traiteront ce nom de fichier. Un caractère dans un nom de fichier peut convenir à votre système, mais cela peut poser problème pour un autre système.

Donc, tant qu'il y avait la moindre possibilité que vous souhaitiez pouvoir accéder facilement au fichier à partir d'un ancien système, vous ne choisiriez que sûr personnage. Cela peut inclure le démarrage dans un ancien système de récupération que vous avez conservé ou la crainte que les versions récentes de Windows soient toujours basées sur MS-DOS.

Longueur

Un système de fichiers peut limiter la longueur d'un fichier. C'était encore plus grave au cours des jours où MS-DOS était limité à 8.3 noms de fichiers. Ainsi, en laissant de côté les espaces, vous pouvez ajouter des caractères plus significatifs au nom.

Plusieurs autres systèmes de fichiers ont également défini des limites strictes pour la longueur de leur nom de fichier. Wikipedia a une table dans le article sur la comparaison du système de fichiers pour ceux qui veulent les détails.

Caractères réservés

MS-DOS a également défini le caractère d'espace comme un caractère réservé. Cela est dû au fait que le caractère d'espace était utilisé pour Rembourrage dans le FAT. En outre, MS-DOS ne fournissait pas un système d'échappement dans le shell.

Interprétation de la ligne de commande

La plupart des lignes de commande, je suis conscient de l'utilisation de la Caractère d'espace comme paramètre délimiteur. Lorsque vous négligez d'échapper correctement à un nom de fichier, cela peut avoir des conséquences désastreuses car des parties du nom de fichier peuvent être interprétées comme des paramètres de l'application que vous souhaitez appeler.

Considérez la différence entre

rm foo bar

et

rm "foo bar"

L'article de WikiPedia lié ci-dessus souligne même l'ambiguïté introduite par l'absence pour échapper correctement à une commande:

L'ambiguïté peut être évitée soit en interdisant les espaces incorporés dans les noms de fichiers et de répertoires (par exemple, en les substituant par des traits de soulignement «_»), soit par l'interpréteur de ligne et les programmes prenant ces paramètres comme arguments, en insérant un nom avec des espaces incorporés entre des guillemets ou en utilisant un caractère d'échappement avant l'espace, généralement une barre oblique inverse («\»). Par exemple

Long path/Long program name Parameter one Parameter two ...

est ambigu (est-ce que "nom du programme" fait partie du nom du programme, ou deux paramètres?); toutefois

Long_path/Long_program_name Parameter_one Parameter_two ...,
LongPath/LongProgramName ParameterOne ParameterTwo ...,
"Long path/Long program name" "Parameter one" "Parameter two" ...

et       Long \ path / Long \ program \ name Paramètre \ one Paramètre \ two ...

ne sont pas ambigus.

Uniform Resource Locators (URL)

Lorsque vous essayez de décrire l'emplacement d'un fichier, en utilisant une URL, vous devez échapper des espaces.

Les caractères peuvent être dangereux pour un certain nombre de raisons. L'espace      le caractère est dangereux car des espaces importants peuvent disparaître et      des espaces insignifiants peuvent être introduits lorsque des URL sont transcrites ou composées ou soumises au traitement de programmes de traitement de texte.

La source: RFC1738

Ainsi, un espace doit être remplacé par un %20 au lieu. Cela rend la partie du nom de fichier de l'URL moins lisible et, par conséquent, fait que les gens l'évitent en premier lieu.


28
2017-10-06 13:05



C'est vraiment une bonne réponse. Ça devrait être au top! - Kamil


Les espaces sont encodés ou convertis en %20 dans les noms de fichiers sur le Web, ce qui peut rendre plus difficile la gestion des actifs d'un site.

Ayant Image 1.png et Image%201.png prête à confusion. C'est plus facile à utiliser Image001.png au lieu.

Cela tombe vraiment dans la même catégorie que les séquences d'échappement pour la ligne de commande.


25
2017-08-25 02:30





Parfois, les espaces peuvent poser problème lorsqu’ils traitent en ligne de commande, lorsqu’ils utilisent des systèmes d’exploitation plus anciens ou lorsqu’ils écrivent des programmes qui seront compilés sur différents systèmes d’exploitation ou quand… Je trouve vraiment difficile d’écrire le fichier comme suit: fichier-sans-blanks.txt ou file_without_blanks.txt. Je préfère le dask car le trait de soulignement peut parfois devenir invisible lorsqu’il s’agit, par exemple, d’une police soulignée.

Mais surtout, c'est une habitude dès le plus jeune âge. Ce que je ne pense pas qu'il y en a assez pro raisons d'abandonner.


Une note supplémentaire, peut-être pas liée, mais néanmoins je vais le mettre ici. Les personnes qui nomment leurs fichiers avec des espaces n'y pensent généralement pas beaucoup; ceux qui ne savent pas souvent pourquoi il est bon de les éviter dans les noms de fichiers.
Et, nous pouvons tous être d'accord, il n'y a rien de pire qu'un fichier qui s'appelle "Cher Monsieur ou Madame, je vous écris cette lettre pour vous informer de yo.doc".

Pas seulement les espaces - la longueur du fichier compte aussi pour quelque chose, et à mon humble avis, il ne devrait pas être plus long que, disons, 30 caractères. Pour les noms de fichiers longs avec des espaces à l'intérieur sont également une bénédiction lors de l'enregistrement de CD, DVD et autres qui doivent être lus sous des systèmes d'exploitation plus anciens, et entre les plates-formes Win et * nix.


5
2017-08-25 00:50



Utilisateurs de Word paresseux ... - SamB