Bon style / bonnes pratiques pour les séparateurs dans les noms de fichiers (ou de répertoires) [fermé]


16

Je ne sais pas exactement si c'est une "bonne" question à publier ici. Je demande probablement plus sur les "opinions" que sur les réponses catégoriques réelles (de celles qui fonctionnent ou non, et c'est tout).

Je me demandais quels séparateurs de noms seraient les plus compatibles avec Linux (ou plus précisément, Bash ) et humains en même temps.

Disons que je veux créer un répertoire contenant quelque chose en rapport avec M. Foo Bar ( Foo étant le prénom, Bar étant le nom de famille)

Avoir le nom " Foo-Bar/" est très pratique. -est un personnage "régulier", il n'a pas besoin d'être échappé, cela le montre clairement Fooet ce Barsont deux choses distinctes ... Sympa.

Maintenant, " Foo.Bar" est un peu plus délicat. Quelqu'un peut penser qu'il Foo.Bars'agit en fait d'un fichier (à première vue, surtout si vous n'avez pas de terminaux avec la coloration activée) où " Foo" est le nom du fichier et " Bar" l'extension.

Je pourrais également utiliser " Foo Bar", mais je dois ensuite échapper à l'espace blanc lorsque je veux accéder au répertoire et, si je veux répertorier le contenu du répertoire parent (où il Foo Barse trouve) et mettre ladite liste dans un tableau bash, le l'espace blanc va causer beaucoup de problèmes. Pas gentil.

Les supports ()posent également de nombreux problèmes. Ils doivent également être échappés, puis causer des problèmes avec les commandes comme scp... Pas sympa.

Alors ... la question (enfin) est: si vous devez rendre le nom d'un fichier clair et significatif d'un coup d'œil et que vous devez utiliser des séparateurs, qu'utilisez-vous?



J'utilise souvent des tirets, mais cela dépend de ce que je fais. Certains peuvent considérer le cas de chameau comme approprié, comme FooBar.
klapaucius

Réponses:


14

Réponse courte: "Foo _-_ Bar"

Longue réponse:

Pour rendre les choses faciles à repérer, j'ai tendance à utiliser une séquence de caractères dans les zones où cela est nécessaire, l'idée est d'utiliser quelque chose qui est facile à repérer afin que vous obteniez que c'est le séparateur peut-être quelque chose comme "_-_" ou " ___ ".

Un exemple pratique où j'utilise ceci est ma collection mp3 où les noms de fichiers contiennent l'artiste et le titre de la chanson, et parfois le numéro de séquence. Et si vous utilisez une séquence magique pour les séparer, c'est facile à la fois pour l'œil et pour les scripts. L'exemple mp3 pourrait ressembler à ceci.

  • 01_Blue_Man_Group _-_ Above.mp3
  • 02_Blue_Man_Group _-_ Time_to_Start.mp3
  • 03_Blue_Man_Group _-_ Sing_Along.mp3

Maintenant, cela peut être traduit dans votre exemple si Foo et Bar sont deux choses logiques qui ne devraient pas se mélanger, et qui pourraient alors être Foo _-_ Bar.


2
Et de cette façon, vous pouvez également distinguer les noms qui contiennent déjà des tirets (ou des séparateurs en général).
lynxlynxlynx

1
Aussi vraiment sympa de reg ex parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan

Étant donné que les humains afficheraient ces fichiers, c'est une bonne réponse; En substance, je considérerais cela comme une chaîne de séparation; Un séparateur unique à plusieurs caractères. Dans Vagrant, j'ai remarqué qu'il utilise la chaîne VAGRANTSLASHdans les noms de fichiers où se trouve la séparation.
ThorSummoner

9

Avec autant de caractères que vous ne pensez peut-être pas spéciaux, en fait étant spéciaux, j'utilise quand même les caractères spéciaux. Cela me met également dans les bonnes habitudes d'utilisation de la complétion bash, où elle échappera automatiquement à tous les caractères spéciaux d'un nom de fichier. Mais cela me met également dans les bonnes habitudes d'évasion / de citation de TOUT dans les scripts et les doublures en 1 partie en bash.

Par exemple, dans une simple doublure simple:

for file in *.txt; do something.sh "$file"; done

De cette façon, même si l'un des fichiers a un espace, ou un autre caractère, la dopartie de la boucle agira toujours sur lui, et ne manquera pas sur 2 ou plusieurs parties de nom de fichier, provoquant éventuellement des effets secondaires involontaires.

Étant donné que je ne peux pas contrôler la dénomination espace / non-espace de CHAQUE fichier que je rencontre, et si j'essayais, cela casserait probablement certains liens symboliques quelque part, provoquant des conséquences encore plus involontaires, je m'attends juste à ce que tous les nom de fichier / nom de répertoire puissent contenir des espaces, et juste citer / échapper toutes les variables pour compenser.

Donc, j'utilise simplement les caractères que je veux (souvent des espaces) dans les noms de fichiers.

J'utilise même des espaces dans les noms de jeux de données ZFS, ce qui, je dois l'admettre, a causé pas mal de grattage de tête parmi les développeurs qui écrivent le logiciel pour le NAS que j'utilise.

Résumé: les espaces ne sont pas un caractère invalide , il n'y a donc aucune raison de ne pas les utiliser.


6

J'utilise des tirets -, pour les raisons que vous mentionnez ci-dessus. J'évite les traits de soulignement car ils nécessitent l'utilisation de la touche Maj, alors prenez au moins deux fois plus de temps pour taper (aussi, je pense qu'ils sont moches)

Je suis plus enclin à faire cela pour les noms de fichiers de script qu'autre chose - je suppose qu'il est plus important pour moi d'identifier clairement à quoi sert un script. Les fichiers de document ne sont que des données inertes, mais les scripts sont potentiellement dangereux s'ils sont mal utilisés.


5

J'utilise des traits de soulignement ( _). Visuellement, ils disparaissent et sont faciles à taper et pas spéciaux.


4
je les trouve plus moche que -, et plus difficiles à taper (il faut utiliser la touche Maj)
tshepang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.