¿Uso de subrayado en los nombres de archivo?

26

Utilizo la línea de comando con frecuencia para navegar por mis archivos, así que trato de no tener espacios en los nombres de archivo. Por lo general, he usado un guión bajo para conectar palabras, pero recientemente se sugirió que debería usar un guión. ¿Hay alguna desventaja al usar un guión bajo en los nombres de archivo? ¿Debo cambiar a un guión? Mi sistema ejecuta Xubuntu y uso casi exclusivamente el bash shell.

Gracias

DQdlM
fuente
1
Si va a usar LaTeX, es posible que deba proteger el nombre del archivo dentro de un par de paréntesis {...}. En caso de script automático, debe considerarlo. El _se utiliza para crear un subíndice y debe incluirse, por ejemplo, $...$para evitar errores, pero generará un texto diferente al que esperaba. En la terminal mejorada de gnuplot también ..
Hastur

Respuestas:

23

En lo que respecta al sistema operativo, ambos son tan utilizables como el otro.

Una cosa que destacaría es que algunos programas (como algunos sistemas de reproducción de video, XBMC, etc.) reemplazarán automáticamente los guiones bajos con espacios al mostrar los archivos para que se vean mejor.

Por esa sola razón, me sentiría tentado a mantener los guiones bajos.

Además, los guiones se usan para cambiar a comandos, por lo que puede ser un poco confuso tener guiones en los nombres de archivo y en los interruptores de comando.

Aparte de eso, es puramente una elección personal.

Majenko
fuente
1
Yo uso hythens, pero eso es porque me gusta más el aspecto. A razón técnica detrás de esto.
beatgammit
¡Gracias! Eso es lo que sospechaba, pero también descubrí que seguir mis sospechas solo puede meterme en problemas.
DQdlM
16

Dash no requiere que presiones MAYÚS, lo que significa que escribes más rápido. Ese es el único otro beneficio que puedo pensar más arriba de lo que ha sugerido el Sr. Jenkins.

Probablemente la persona que hace esa sugerencia es un ávido usuario de Vim y desea hacer todo con la menor cantidad de movimiento del teclado.

LawrenceC
fuente
77
Si ese fuera el caso, usarían vien su lugar, una tecla menos;)
Majenko
44
@ Matt es alias'ed que vde todos modos ;-)
Daniel Beck
+1 Por esta misma razón, uso guiones bajos con nombres en mayúsculas, como FOO_BAR(no uso mayúsculas, así que es bueno poder mantener presionada la tecla Mayús todo el tiempo).
Richard Hansen el
@DanielBeck De hecho, tengo eso en mis alias de bash, así como gpara git:)
Jan Warchoł
Creo que vim considera dos palabras separadas por guiones como una sola palabra, por lo que esta podría ser una razón para usar guiones bajos en los nombres de archivo como usuario de vim.
oddRaven
8

Mi recomendación es usar guiones bajos en lugar de espacios. Los guiones bajos suelen ser la convención que las personas usan cuando reemplazan espacios, aunque los guiones también están bien, diría yo. Pero dado que los guiones pueden aparecer de otras maneras, como palabras con guiones, tendrá más éxito al preservar un valor de nombre mediante el uso de guiones bajos. Por ejemplo, si tiene un archivo llamado "Una imagen tomada en Winston-Salem, NC.jpg" y desea convertir los espacios en guiones bajos, puede conservar el guión en el nombre y conservar su significado.

Los espacios causan problemas a las personas que desean utilizar la línea de comandos de forma avanzada, como en bucles for como este:

for file in *.mp3 ; do mpg321 $file -w - | oggenc -o ${file%%.mp3}.ogg - ; done

Si alguno de los archivos mp3 que coinciden con ese comodín tiene espacios en su nombre, hará que el nombre del archivo se divida en secciones en lugar de todo. Puede solucionar esto cambiando la variable IFS del shell BASH o utilizando el comando find, pero es una molestia y mucha gente no lo sabe, por lo que puede causar problemas.

Dudo que esto o incluso una campaña de pegatina para el parachoques evite que las personas pongan espacios en los nombres de archivo, pero si desea ayudarse, más poder para usted y gracias en nombre de aquellos de nosotros que nos importa.

deltaray
fuente
1
Estoy totalmente de acuerdo. Un nombre de archivo bien construido no necesita espacios.
DQdlM
44
@KennyPeanuts, pero un programa bien escrito no se ahoga en los espacios.
detly
2
@detly - touche '
DQdlM
1
@detly No, un buen programador entiende que tiene que haber límites en lo que puede y debe hacer. Si dice que no debería ahogarse en espacios, entonces alguien podría adivinar eso y decir que no debería ahogarse al final de la línea, entonces alguien diría que no debería ahogarse con /, entonces alguien podría decir que no debería ahogarse al final del archivo. Hay un viejo dicho "Fórmula para el fracaso: intenta complacer a todos".
deltaray 05 de
1
La especificación del sistema de archivos le dice a qué codificar, ni más, ni menos. En Ext2 / 3/4, por ejemplo, un nombre de archivo puede contener cualquier carácter excepto \0o \\\`. Coding to anything less than that is broken by design. So, no, it shouldn't choke on spaces, or EOL, or non-ASCII characters, or anything that isn't \ 0` o `\`. Usar las funciones de la biblioteca para la manipulación de la ruta del archivo es el camino a seguir, porque muchas otras personas ya han resuelto estos problemas.
detly
5

La única razón por la que debería considerar el uso de guiones en lugar de guiones bajos es la legibilidad básica. Los guiones bajos frecuentes tienden a distorsionar la lectura, ya que cambia la línea de su visión desde el centro del eje y hacia abajo. Sin embargo, los guiones lo hacen más fácil a la vista.

En lo que respecta al sistema operativo, ambos caracteres son igualmente válidos y no requieren escapar (qué espacios sí lo hacen, y por lo tanto es difícil trabajar con ellos).

Varun Madiath
fuente
2
Creo que la razón básica de legibilidad es puramente subjetiva. Encuentro los guiones bajos más fáciles de leer porque puedo ignorarlos visualmente, no leerlos, mientras que los guiones realmente tengo que leerlos.
goliatone
3

Personalmente prefiero guiones sobre guiones bajos porque no es necesario mantener presionada la tecla Mayús para ellos. Pero una cosa para recordar es que si principalmente está haciendo codificación de python, y su árbol de códigos tiene archivos / directorios con guiones y tiene la intención de usarlos como módulos (haga un nombre de archivo de importación en su código), entonces esto causará errores ya que los módulos python no pueden tener guiones en ellos. Por supuesto, hay formas indirectas de importar módulos que tienen guiones, pero me quedaría con el guión bajo ya que también sigue las pautas de PEP-8.

Entonces, para la mayoría de mis bin / programas o alias, utilizo guiones, pero cuando se trata de escribir programas / módulos de Python, uso guiones bajos.

Saurabh Hirani
fuente
2

Hay buenas razones para usar guiones en cualquier contexto basado en la web que se asigne a un sistema de archivos Unix.

URL               What search indexes see
foo-baz-bang      foo baz bang
foo_baz_bang      foobazbang

Como desarrollador web, esto me ha obligado a seguir los guiones al separar las palabras.

rico remer
fuente
1
El contexto mencionado anteriormente probablemente esté relacionado, entre otras cosas, con una publicación de blog de Matt Cutts de 2005 que involucra la preferencia algorítmica de Google por guiones versus guiones bajos como un mejor indicador de un marcador de espacio en blanco.
jmmygoggle