Me preguntaba cuál es la convención de nomenclatura para archivos en Unix. No estoy seguro de esto, pero creo que tal vez hay una convención de nomenclatura universal que uno debería seguir.
Por ejemplo, quiero nombrar un archivo que diga: backup
con part 2
yrandom
Debería hacerlo así:
backup_part2_random
O
backup-part2-random
O
backup.part2.random
Espero que la pregunta sea clara. Básicamente, quiero elegir un formato que se ajuste a la filosofía de Unix.
Respuestas:
.
se usa para separar una extensión de tipo de archivo, por ejemplofoo.txt
.-
o_
se usa para separar palabras lógicas, por ejemplo,my-big-file.txt
o algunas vecesmy_big_file.txt
.-
es mejor porque no tiene que presionar la tecla Mayús (al menos con un teclado de PC estándar en inglés de EE. UU.), otros prefieren_
porque se parece más a un espacio.Entonces, si entiendo su ejemplo,
backup-part2-random
obackup_part2_random
sería más cercano a la convención normal de Unix.CamelCase normalmente no se usa en sistemas Linux / Unix. Echa un vistazo a los nombres de archivo en
/bin
y/usr/bin
. CamelCase es la excepción más que la regla en los sistemas Unix y Linux.(
NetworkManager
es el único ejemplo que se me ocurre que usa CamelCase, y fue escrito por un desarrollador de Mac. Muchos se han quejado de esta elección de nombre. En Ubuntu, en realidad han cambiado el nombre del scriptnetwork-manager
).Por ejemplo,
/usr/bin
en mi sistema:e incluso entonces, ninguno de los archivos que comienzan con mayúscula usa CamelCase:
fuente
.
carácter también se puede usar para rotar cosas, no solo para especificar una extensión. Por ejemplomy.log my.log.1 my.log.2.gz
.ls
resultado/usr/bin
es una referencia. Esta es una pregunta sobre convenciones. )Mucho más importante que una convención particular sea ser consistente. Elige un estilo y quédate con él.
fuente
Mi opinión sobre las convenciones de nombre de archivo de Unix / Linux:
Los sistemas de archivos Unix / Linux no soportan inherentemente la noción de una extensión. El concepto de una extensión de archivo existe por completo como algo con el apoyo de los servicios públicos como
cp
,ls
o la cáscara que está utilizando. Creo que también es así en NTFS, pero podría estar equivocado.Los ejecutables, incluidos los scripts de shell, generalmente nunca tienen ningún tipo de extensión. Las secuencias de comandos tendrán una línea hashbang (es decir
#!/bin/bash
) que identifica qué programa debe interpretarlo./etc
que termina entab
es también muy importante, comofstab
,mtab
,inittab
..d
se agrega a los nombres de directorio, particularmente en/etc
, pero esto no está muy extendido (ACTUALIZACIÓN: https://serverfault.com/questions/240181/what-does-the-suffix-d-mean-in-linux )rc
es ampliamente utilizado para scripts o archivos de configuración, ya sea antes (por ejemplo,rc.local
) o sufijos (.vimrc
).htm
al final de archivos HTML en Unix / Linux, use.html
.Makefile
en los paquetes fuente. Solo haz esto para cosas comoREADME
.~
se usa para identificar un archivo de respaldo o un directorio, como enimportant_stuff~
, o/etc~
. Muchas conchas se expandirán un solitario~
a$HOME
.lib
. La excepción eszlib
y probablemente algunos otros.in.
, comoin.tftpd
.vmlinuz
significa comprimido, pero nunca he visto ningún otro archivo llamado de esta manera.fuente
.sh
"extensión" en ellos. Personalmente, me resulta un poco molesto, pero tengo que admitir que puedo ignorar alguna buena razón para usar el.sh
..sh
en scripts que (1) no están destinados a ejecutarse de manera interactiva, sino solo desde otros scripts / programas, o (2) están diseñados para el abastecimiento en lugar de la ejecución. Para el primero deben ser ejecutables; para este último, dejo el bit ejecutable desactivado y uso la línea shebang solo para documentar para qué shell están escritas las funciones.#!/bin/zsh
en la parte superior), sabe que puede obtener otro archivo de forma segura con la extensión .zsh y asegurarse de que contenga el código zsh legal. Si su script ejecutable es estrictamente compatible con Bourne Shell (es decir,#!/bin/sh
en la parte superior), entonces sabrá que obtener ese archivo .zsh será problemático.En unix, el nombre de archivo es solo una cadena, a diferencia de DOS, donde el nombre de archivo se compone de nombre y extensión. Por lo tanto, cualquiera de los nombres de archivo dados es completamente aceptable.
Pero muchos programas aún usan sufijos de archivos que comienzan con puntos para distinguir diferentes tipos de archivos, es decir, Apache Web Server usa sufijos para establecer el tipo MIME correcto en los encabezados de respuesta.
fuente
Dos pensamientos:
En la
Naming Variables, Functions, and Files
sección de los Estándares de codificación GNU encontrará:Si bien la OMI dice "Deberías usar
_
porque emacs" parece un poco anticuado, sin embargo, está en su documento de "estándares".Supongamos por un momento que todos estamos de acuerdo en que el kernel de Linux es el ser-todo-y-todo-fin * de los proyectos de Linux, y que las convenciones utilizadas allí son lo que podría considerarse una convención 'estándar'.
grep
-ing fuente para el kernel de Linux encontrará lo siguiente:Curiosamente, la fuente de git pesa 85% para guiones, 3.8% para guiones bajos y 11.1% para ambos.
La elección es clara, debate terminado. ;)
Opinión personal: uso guiones por razones estéticas y de cambio. Si está trabajando en un equipo, vote. Pero para reiterar lo que se ha dicho, sea consistente .
* o "be_all y end_all" si quieres
fuente
Caracteres que no debes usar en los nombres de archivo:
Delimitadores de caracteres que debe usar para facilitar la lectura de los nombres:
(En algunos casos, ":" tiene un significado especial)
fuente
/
separador de ruta y el terminador de cadena \ 0 (ASCII cero).Para agregar a lo que otros han dicho, solo diría que si bien las letras acentuadas y muchos caracteres especiales son legales en los nombres de archivo, pueden causar problemas en cualquiera de los siguientes escenarios:
...
fuente
Se adhieren a los nombres de archivo alfanuméricos. Evite espacios o reemplace espacios con guiones bajos (_). Limite la puntuación en los nombres de archivo a puntos (.), Guiones bajos (_) y guiones (-). En general, los nombres de los archivos están en minúsculas, pero uso CamelCase cuando tengo varias palabras en el nombre del archivo.
Use extensiones que indiquen el tipo de archivo. Los programas no necesitan extensiones ya que el bit de ejecución se usa para indicar programas, y los shells saben cómo ejecutar programas de varios tipos. Es común pero no es obligatorio (.sh) para los scripts de shell y (.pl) para los scripts de perl. Las extensiones ejecutables de Windows .bat, .com, .scr y .exe indican los ejecutables de Windows en Unix.
Elija un estándar y manténgalo. Pero no romperá las cosas si lo evitas.
Los archivos ocultos (o de punto) tienen nombres que comienzan con un punto. Estos normalmente no aparecen en las listas de directorios. Use 'ls -a' para incluir los archivos de puntos en la lista.
fuente
Una convención es usar "_" para reemplazar espacios como separadores entre palabras. Se podrían usar otros caracteres para reemplazar espacios, pero hay usos convencionales ligeramente más fuertes para "-" y "". en los nombres de ruta, por lo que generalmente se prefiere "_".
Los espacios son legales en los nombres de ruta, pero se evitan convencionalmente, ya que requieren citar el nombre de ruta ("foo bar") o escapar de los espacios (foo \ bar). Un script de shell correctamente escrito citará variables que pueden incluir espacios, particularmente nombres de ruta, pero no hacerlo es un descuido común, y es una gran cantidad de tipeo adicional cuando se hace un comando único ingresado en la línea de comando.
El uso de "-" para separar grupos de números, como en marcas de tiempo o números de serie, es una convención comúnmente utilizada fuera del contexto de los sistemas de archivos. Utilizando "." para separar "extensiones de archivo" que indican que el tipo de archivo es muy común, y algunas herramientas importantes dependen de él. Por ejemplo, el sistema de administración de paquetes en Red Hat Enterprise Linux y sus derivados, RPM, espera que los archivos de paquetes terminen con ".rpm". El tarball tradicional es un archivo tar (".tar") que se ha comprimido (".gz") y termina en ".tar.gz".
Entonces, al juntarlos, a menudo terminas con nombres de archivo que se parecen a "home_backup_2017-07-01.tar.gz"
fuente
usar
-
o_
para nombrar archivos_
para funciones.
para extensionesfuente
Estoy de acuerdo con David Oneill en que deberías ir con algo.
Pero es bueno si los archivos se pueden ordenar en el mismo directorio, así que no numere 0 ..10 sino número 00 ..10.
Cuando use fechas en los nombres, elija un formato de fecha estándar como ISO8601 .
Y no tenga miedo de usar varios caracteres para separar las partes lógicas en el nombre. Si usa _ (que era 3 _), puede simplificar las expresiones regulares en los nombres de archivo más adelante.
Entonces su ejemplo podría ser algo como esto:
Fácil de leer y fácil de analizar con scripts.
fuente
Las palabras en un nombre de archivo se pueden separar con
_
o-
según la convención de Unix.Si lo usa
-
, es más fácil escribir, le ahorra presionar MAYÚS. Pero dado que-
ocupa tan poco espacio, es un poco difícil leer separaciones de palabras en comparación_
. Usar_
para separar palabras hace que se vea mucho más limpio ya que_
ocupa más espacio.En los scripts de shell y otras programaciones de computadora,
_
se usan para variables de varias palabras, comoMY_ENVIRONMENT_FILE
. Haciendo uso de los nombres de archivo_
y la mantiene constante:MY_ENVIRONMENT_FILE=~/my_environment_file
.En desarrollo web,
-
se prefiere para nombrar archivos. Probablemente, una de las razones es que el subrayado en los enlaces web puede ocultar los guiones bajos y puede dificultarlo si escribe el enlace a mano.En la mayoría de los editores y en las páginas web,
this_long_word
se puede seleccionar completamente con un doble clic, pero nothis-long-word
.fuente
-
y_
tomar hasta exactamente el mismo espacio! :)_
ve más limpio a pesar de que ocupa el mismo espacio que-
. Debería haber usado la palabra "aparentemente". En cuanto a la_
y-
al utilizar fuentes de espacio sencillo, la diferencia puede explicarse mejor con esta imagen analógica: evsc.net/v8/wp/wp-content/uploads/2010/09/...Definitivamente hay un estándar para Linux. Si observa los nombres de archivo en cualquier sistema Linux, están en minúsculas con guiones: / usr / bin / ssh-keygen. Esto se especifica en uno de los documentos de Linux Standards Base que no puedo encontrar en este momento. También lo especifica GNU, que dice usar guiones bajos para nombres de variables y guiones para nombres de archivos.
fuente
Para agregar a lo que todos los demás han dicho:
1-A pesar de que a Linux no le importan mucho las extensiones, a Windows sí, así que asegúrese de que cualquier archivo que piense darle a alguien tenga la extensión adecuada.
2-Camel caps parece ser el guión más fácil de usar, sin caracteres especiales para preocuparse por las secuencias de escape.
fuente