La gente dice que no deberías usar espacios en los nombres de archivos Unix. ¿Hay buenas razones para no usar letras mayúsculas en los nombres de archivo (es decir, File_Name.txt
vs. file_name.txt
)? ¿O es solo una cuestión de preferencia personal?
28
Respuestas:
La gente dice muchas cosas. Hay algunas herramientas que pueden arruinarse, pero es de esperar que sean pocas en este momento, ya que los espacios son un virus proliferado por corporaciones gigantes de sistemas operativos propiedad del consumidor y ahora imposible de evitar.
Los espacios hacen que la especificación de nombres de archivo en la línea de comando, etc., sea incómoda. Eso es todo. Los únicos caracteres categóricamente prohibidos en los sistemas * nix son NUL (no se preocupe, no está en su teclado ni en el de nadie más) y
/
, dado que ese es el separador de ruta. 1 Aparte de eso, todo vale. Los elementos de ruta individuales (nombres de archivo) están limitados a 255 bytes (una posible complicación si está utilizando conjuntos de caracteres extendidos) y rutas completas a 4 KiB.Yo diría que lo es. La mayoría de DE parecen crear una serie de directorios en mayúsculas en su
$HOME
(Downloads
,Desktop
,Documents
- elD
es muy popular), por lo que no hay nada extraño en ello. También hay archivos tradicionales muy comunes con mayúsculas, como.Xclients
y.Xauthority
.Un valor de capitalizar las cosas al principio es que, cuando se enumeran lexicográficamente, aparecerán antes que las minúsculas, al menos, con muchas herramientas y sujetas a la configuración regional.
Soy fanático de camel case (también conocido como camelCase) y lo uso con nombres de archivos, por ejemplo,
/home/goldilocks/blueSuedeShoes
no importa lo que haya allí. Definitivamente es una cuestión de preferencia personal, pero aún no me causa pena.Los archivos de clase de Java tienden a contener mayúsculas por naturaleza, porque los nombres de clase de Java sí. Y, por supuesto, no lo olvidemos
NetworkManager
, incluso si algunos de nosotros preferiríamos hacerlo.1. Existe un "conjunto de caracteres de nombre de archivo portátil" mucho más delimitado, recomendado por POSIX que no incluye el espacio, ¡pero sí mayúsculas! POSIX también especifica la restricción más general con respecto al "carácter de barra diagonal y el byte nulo" en otra parte del mismo documento . Esto refleja o se refleja en prácticas convencionales de larga data .
fuente
README
s yMakefile
s y así sucesivamente.Una razón para evitar mayúsculas en los nombres de archivo es que el orden de clasificación en Unix distingue entre mayúsculas y minúsculas, por lo que los archivos que comienzan con una letra mayúscula aparecerán desordenados. Esa es la razón por la
Makefile
que generalmente se nombra con mayúsculaM
: es uno de los archivos que desea ver primero, sin desplazarse / saltar hacia abajoa-l
.Dicho esto, puede hacerlo mucho peor en términos de nombres de archivo:
-
puede causar problemas, ya que muchos programas lo verán como una opción de línea de comandos en lugar de un nombre de archivo (por ejemplorm -r
, no eliminarán un archivo llamado-r
)..
lo ocultará de muchas utilidades y el bloqueo de shell (por ejemplorm *
, no eliminará archivos como.config
)|<>*?
e incluso caracteres no imprimibles comonewline
es técnicamente posible, pero puede romper scripts / programas similares al carácter de espacio. La diferencia es que el carácter espacial se usa a menudo, por lo que los programadores tienden a probar sus programas contra él, mientras que los personajes menos populares a menudo permanecen sin probar.fuente
rm *
no eliminará archivos como.config
?Makefile
yREADME
son ejemplos perfectos de eso. Tenga en cuenta también que este efecto es insignificante si la letra no es la primera letra del nombre, por lo que no es un gran problema si usa camelCase. Claro, te sorprendería verloanOctagon
antesangle
, pero al menos estarían juntos en la lista.Si va a interactuar con un entorno de Windows, debe evitar las mayúsculas porque Windows lo pondrá todo en minúsculas. Esto es más a menudo un problema al revés; un enlace a
Page_2.html
encontrarápage_2.html
en Windows, pero fracasará en Unix.fuente
NUL
y/
prohibido.cat > Foo
recurso compartido NTFS, sobrescribirá el archivofoo
. Este comportamiento es probable que sea inesperado y confuso si estás acostumbrado a mayúsculas y preservar y sistemas de archivos entre mayúsculas y minúsculas, como ext *.\0
y/
, mayúsculas y minúsculas). Al menos así es como lo recuerdo. Pero estoy de acuerdo en que es un desastre. Hay más restricciones en el ...Una razón para evitar mayúsculas es que
bash
la finalización de tabulación distingue entre mayúsculas y minúsculas (al menos de manera predeterminada); esto todavía me hace tropezar cada vez que termino frente a unabash
configuración predeterminada. Claro, hay otros shells populares, pero esto combinado con el hecho de quebash
es el shell de inicio de sesión predeterminado en muchos sistemas operativos significa que a menudo se completa con mayúsculas y minúsculas. El uso de nombres de archivo en minúsculas simplifica las cosas aquí.fuente
echo set completion-ignore-case On >> ~/.inputrc
puede ayudar un poco, al menos en su propio sistema.Foo
y luego escribecat f
(Tab), fallará. Pero lo mismo sucede si escribecat foo
,cat Foobar
ocat Fu
el hecho de que tendrá problemas para acceder a un archivo cuyo nombre no recuerda correctamente no tiene nada que ver con el autocompletado.Como NL_Derek abrió esta lata de gusanos, pero no la articuló correctamente, diré esto:
Está bien usar letras mayúsculas, pero debe evitar crear archivos (en el mismo directorio) que difieran solo por mayúsculas y minúsculas , por ejemplo,
File_Name.txt
yfile_name.txt
, porqueFILENA~1.TXT
yFILENA~2.TXT
- escribadir /x
para ver qué nombre corto (si corresponde) va con qué nombre largo).cmd1 > foo
cmd2 > Foo
cmd2
fuente
Además de razones técnicas, tengo un aspecto práctico para esto. Pegarse en letras minúsculas asegurará que las búsquedas sean más fáciles a menos que uno sea demasiado aficionado a usar grep -i o localizar -i. A veces, incluso camelCase puede ser confuso si uno tiene que usar una cadena de palabras similares como en el almacenamientoNYCDCPrimary. Por lo tanto, creo que es mejor atenerse a las minúsculas y salpicarlas con guiones bajos o guiones para facilitar la lectura, como storage_nyc_dc_primary.
fuente
storageNycDcPrimary
yStorageNycDcPrimary
ambos son raros de leer.Puedo hacer considero que es la mejor práctica para evitar el uso de mayúsculas y espacios en los nombres de archivo.
Algunos dirán que no están de acuerdo, pero es un asunto o lo que yo llamo creencias religiosas : difícil de discutir y acordar. Los que no están de acuerdo dicen que la mayoría de las herramientas ahora están arregladas para ser mayúsculas y espacios amigables: tienen razón, pero esta no es la pregunta.
La pregunta correcta es cuánto necesita usar mayúsculas y espacios en los nombres de archivo. A esta pregunta, excepto cuando estoy programando en Java, la respuesta es principalmente todo el tiempo: no necesito mayúsculas y espacios en mis nombres de archivo . Todos los espacios los reemplazo por un guión bajo (
_
) o un signo menos (-
), y por eso no uso el caso de camello (también conocido como camelCase) contrario a alguna otra religión.Muchas personas me criticaron por hacer y enseñar eso, algunos todavía lo hacen, algunos tropezaron con una herramienta que no era amigable con el capital / espacio y vinieron a mí diciendo que tenía razón y que deberían haberme escuchado. Haga lo que quiera , y si usa mayúsculas y espacios en el nombre del archivo, espero que nunca se tropiece con una herramienta mal escrita. Sin embargo, si tropieza con dicha herramienta, con suerte nuevamente, no será difícil de arreglar y no le costará a su negocio y / o mucho dinero y / o tiempo. Pero si termina teniendo malas repercusiones, recordará que algunos le dijeron en el pasado que usar mayúsculas y espacios en los nombres de archivos es una mala práctica.
Y una última cosa, si desea evitar todos los problemas , no hay caracteres especiales en los nombres de archivo (solo letras minúsculas, dígitos, guiones bajos y menos [1]). Esta lista de caracteres no deseados también incluye todos los caracteres no ascii (sí, francés y otras personas no inglesas, y yo soy uno de ellos), ninguno de esos: à, â, ä, ç, é, ..., ö, æ, œ , ...) Esto también se extiende a muchas otras cosas, incluido el inicio de sesión y la contraseña . Te dejaré adivinar qué sucede cuando pones una cita o una cita doble (
'
o"
) en un nombre de usuario o contraseña manejado por un script bash no escrito por un administrador de sistemas confirmado ...[1]: tal vez podríamos extender el proceso a
~
,@
,#
y algunos otros, pero esto está en busca de problemas (y sí sé acerca de los archivos de Emacs ...).fuente