Buen estilo / prácticas para separadores en nombres de archivo (o directorio) [cerrado]

16

No estoy exactamente seguro de si esta es una pregunta "correcta" para publicar aquí. Probablemente estoy preguntando más sobre "opiniones" que respuestas categóricas reales (de aquellas que funcionan o no, y eso es todo).

Me preguntaba qué separadores de nombres serían los más amigables con Linux (o más específicamente, Bash ) y humanos al mismo tiempo.

Digamos que quiero crear un directorio que contenga algo relacionado con el Sr. Foo Bar ( Foo es el nombre, Bar es el apellido)

Tener el nombre " Foo-Bar/" es muy conveniente. -es un personaje "normal", no necesita ser escapado, lo demuestra claramente Fooy Barson dos cosas separadas ... Agradable.

Ahora, " Foo.Bar" es un poco más complicado. Alguien puede pensar que en Foo.Barrealidad es un archivo (a primera vista, especialmente si no tiene terminales con coloración habilitada) donde " Foo" es el nombre de archivo y " Bar" la extensión.

También podría usar " Foo Bar", pero luego necesito escapar del espacio en blanco cuando quiero acceder al directorio y, si quiero enumerar el contenido del directorio principal (donde Foo Barse encuentra) y poner dicha lista en una matriz bash, el el espacio en blanco va a causar problemas (mucho). No está bien.

Los corchetes ()también causan muchos problemas. También necesitan escapar, para causar problemas con los comandos como scp... No es agradable.

Entonces ... la pregunta (por fin) es: si necesita hacer que el nombre de un archivo sea claro y significativo a simple vista, y necesita usar separadores, ¿qué usa?

BorrajaX
fuente
55
Como referencia: el juego de caracteres POSIX Portable Filename .
jw013
A menudo uso guiones, pero depende de lo que estoy haciendo. Algunos pueden considerar el caso del camello como apropiado como FooBar.
klapaucius

Respuestas:

14

Respuesta corta: "Foo _-_ Bar"

Respuesta larga:

Para hacer que las cosas sean fáciles de detectar, tiendo a usar una secuencia de caracteres en las áreas donde esto es necesario, la idea es usar algo que sea fácil de detectar para que sepas que este es el separador, tal vez algo como "_-_" o " ___ ".

Un ejemplo práctico donde uso esto es mi colección de mp3 donde los nombres de los archivos contienen el título del artista y la canción, y a veces el número de secuencia. Y si usa una secuencia mágica para separarlos, es fácil tanto para el ojo como para los guiones. El ejemplo mp3 podría verse así.

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

Ahora esto se puede traducir a su ejemplo si Foo y Bar son dos cosas lógicas que no deberían mezclarse, y que podrían ser Foo _-_ Bar.

Johan
fuente
2
Y de esta manera también puede distinguir nombres que ya contienen guiones (o separadores en general).
lynxlynxlynx
1
También es muy bueno para reg ex parse! : ^ (. +) _-_ (. +) \. mp3 $
DanDan
Dado que los humanos verían estos archivos, esta es una buena respuesta; En esencia, consideraría esto una cadena de separación; Un separador único de varios caracteres. En Vagrant, me di cuenta de que usa la cadena VAGRANTSLASHen los nombres de archivo donde está la separación.
ThorSummoner
9

Con tantos caracteres que quizás no creas que deberían ser especiales, de hecho siendo especiales, solo uso los caracteres especiales de todos modos. Esto también me pone en los buenos hábitos de usar bash complete, donde escapará automáticamente a todos los caracteres especiales en un nombre de archivo. Pero también me pone en los buenos hábitos de escapar / citar TODO en scripts y multi-part 1-liners en bash.

Por ejemplo, en un simple 1-liner:

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

De esa manera, incluso si uno de los archivos tiene un espacio, o algún otro carácter, la doparte del bucle seguirá actuando sobre él, y no perderá en 2 o más partes de nombre de archivo, lo que posiblemente cause efectos secundarios no deseados.

Dado que no puedo controlar el nombre de espacio / no espacio de CADA archivo que encuentro, y si lo intentara, probablemente rompería algunos enlaces simbólicos en alguna parte, causando aún más consecuencias no deseadas, solo espero que todo nombre de archivo / nombre de directorio pueda tener espacios en él, y solo cita / escapa todas las variables para compensar.

Entonces, solo uso los caracteres que quiero (a menudo espacios) en los nombres de archivo.

Incluso uso espacios en los nombres de los conjuntos de datos ZFS, lo que debo admitir que ha causado una gran cantidad de rasguños entre los desarrolladores que escriben el software para el NAS que uso.

Resumen: los espacios no son un carácter no válido , por lo que no hay razón para no usarlos.

asesino
fuente
6

Yo uso guiones -, por las razones que mencionas anteriormente. Evito los guiones bajos porque requieren el uso de la tecla Mayús, así que toma al menos el doble de tiempo para escribir (también, creo que son feos)

Estoy más inclinado a hacer esto para los nombres de archivo de script que cualquier otra cosa; creo que es más importante para mí identificar claramente para qué sirve un script. Los archivos de documentos son solo datos inertes, pero los scripts son potencialmente peligrosos si se usan incorrectamente.

cas
fuente
5

Yo uso guiones bajos ( _). Visualmente se desvanecen, son fáciles de escribir y no especiales.

bahamat
fuente
44
Me encontrarlos más feo que -, y más difícil de tipo (uno tiene que usar tecla de mayúsculas)
Tshepang