¿Es una mala práctica que el nombre de la carpeta contenga un punto (.)? ¿Qué hay de nombre de archivo con varios puntos?

25

A veces tiene sentido práctico que un nombre de carpeta contenga un punto (.). Por ejemplo, está almacenando datos para un experimento realizado en L = 0.5. Así que la carpeta podría ser nombrada:

experiment_L0.5

Puede surgir un problema similar para los nombres de archivos. Por ejemplo:

file_L0.5.txt

Trabajando en Ubuntu, ¿es esta mala práctica? ¿Qué tal si compartimos estos directorios con un usuario de Windows?

¡Gracias!

    
pregunta Hamid 30.01.2014 - 16:34

5 respuestas

34

Por lo que sé, no hay problemas para nombrar carpetas y archivos con uno o varios puntos.

Generalmente, Ubuntu no usa el punto y los tres caracteres (como .txt) para identificar el tipo de archivo. Así que esto no tiene un significado especial en el contexto de Ubuntu. Esto es útil cuando se comparten archivos con Windows. Ubuntu usa Números mágicos en los primeros bytes del archivo para identificar el tipo de archivo. Sin embargo, Nautilus. ignora los números mágicos si la extensión de punto y tres caracteres está disponible para identificar el tipo de archivo. Esta configuración se puede cambiar. Consulte Forzar a Nautilus a ignorar las extensiones

En Ubuntu, al iniciar un archivo o nombre de carpeta con un punto, como .experiment_L0.5 , se oculta el archivo o carpeta. Puede alternar la visualización de los archivos ocultos presionando Ctrl + H en Nautilus. En Windows un nombre de archivo que comienza con a. no esta oculto Entonces, si transfieres un archivo oculto llamado .experiment_L0.5 a un sistema Windows, será claramente visible.

En Ubuntu, un nombre de archivo puede terminar con un punto, ya que no tiene un significado especial al final. Sin embargo, en Windows, un punto separa el nombre y la extensión del archivo, y un nombre de archivo que termina con un punto pero no se permite ninguna extensión. Cuando intenté crear un archivo de este tipo en Windows obtuve un archivo con solo el nombre, sin punto, sin extensión.

Referencia: Wiki sobre nombres de archivos

Espero que esto ayude.

    
respondido por el user68186 30.01.2014 - 16:44
10

La respuesta corta

  • Windows no permite los siguientes caracteres: <>:"/\|?* ( source )
  • Más caracteres que se desalientan son: espacio y punto . ( fuente )
    • Las herramientas de la línea de comandos son más difíciles de usar cuando tiene espacios en los nombres (más difícil, no imposible)
    • Los puntos se usan en RegEx (por ejemplo, cuando quieres usar grep ). Un punto destacado hace que un archivo oculto por convención en Linux. En Windows, los puntos se usan en la extensión del archivo, que se usa para la detección del tipo de archivo.
  • Windows tampoco permitirá los nombres de archivo CON , PRN , AUX , CLOCK$ , NUL COM1 , COM2 , COM3 , COM4 , COM5 , COM6 , COM7 , COM8 , COM9 LPT1 , LPT2 , LPT3 , LPT4 , LPT5 , LPT6 , LPT7 , LPT8 y LPT9 . ( fuente )
  • Los únicos caracteres no permitidos en los sistemas de archivos Unix que conozco son / y nulo (el byte nulo, ext4 ).
  • Vea también: Límites del sistema de archivos (no sé a qué Windows desea que sea compatible) .

La respuesta larga

Antecedentes técnicos: Sistema de archivos

Ubuntu hace uso del sistema de archivos / . Un sistema de archivos rastrea donde los archivos se almacenan en el almacenamiento subyacente (disco o SSD o lo que sea), los permisos en forma de propietario / grupo / otro pueden leer / escribir / ejecutar, marcas de tiempo, nombre.

El sistema de archivos estructura el almacenamiento disponible. El primer bloque se llama el "superbloque". Este bloque se utiliza para montar un sistema de archivos. Que yo sepa, cada sistema de archivos moderno divide su espacio en bloques. Creo (y no estoy muy seguro de ello) que la mayoría de los sistemas de archivos también tienen un tamaño de bloque fijo, aunque el tamaño del bloque se puede configurar cuando se crea el sistema de archivos. ext4 (y también ext2 y ext3) utilizan los llamados "inodes" para archivos y directorios. Esos inodos contienen punteros a otros bloques (que también pueden ser inodos o "bloques de datos"). Y el "primer" inodo de un archivo contiene toda la información que mencioné anteriormente.

Otra información es el "tipo" del archivo. "Tipo" puede ser:

  • archivo regular
  • directorio
  • archivo de dispositivo (dispositivo de bloque o carácter)
  • ...

De hecho, también puede abrir directorios con un editor:

vim /home

Como el directorio no contiene la ruta completa, pero solo los nombres del contenido, no veo una razón por la que los archivos no puedan contener un / . Supongo que podría ser conveniencia. (¿Alguien sabe por qué .txt no está permitido?)

Sin embargo, las cosas son diferentes para otros sistemas de archivos. El FAT16 y FAT32 utilizaron una llamada "tabla de asignación de archivos". Esto significa que hay una tabla que contiene todos los archivos que están almacenados en su archivo, en qué "grupo" se inician y en qué grupo terminan como una lista enlazada individualmente.

Lo importante que quería decirte es que los caracteres no permitidos también podrían depender del sistema de archivos.

Fondo técnico: Tipos de archivos

  • Windows usa extensiones de archivo para detectar tipos de archivo
  • Linux usa "Magic Bytes" para detectar tipos de archivos. Magic Bytes son parte del contenido del archivo y, por lo tanto, completamente independientes del nombre. Estos bytes forman parte de la especificación del tipo de archivo (consulte especificación de png como un ejemplo). También utiliza las extensiones de nombre de archivo para archivos con los mismos bytes mágicos, como .html o %code% (ambos son archivos de texto).

Relacionado

respondido por el Martin Thoma 06.02.2014 - 20:21
5

Por razones de integridad, los nombres que consisten solo en un solo punto . o dos puntos .. son especiales:

  • . se refiere al directorio actual
  • .. se refiere al directorio padre

Esas entradas se agregan automáticamente y siempre existen, por lo que no puedes tener un archivo llamado . o .. .

    
respondido por el Sergey 04.02.2014 - 21:55
1

Esto no importa, ni en Linux ni en Windows.

Es una práctica común tener una carpeta llamada "program.d" - para guardar la configuración y las cosas para un programa (busque en el directorio / etc)

    
respondido por el Ohad Cohen 30.01.2014 - 16:47
0

La denominación de archivos es muy flexible en sistemas de archivos Unix, Linux. El único nombre de archivo que no puede tener es un carácter nulo o el que contiene un / en su nombre. Pero seguramente sería una buena práctica evitar el uso de los caracteres que están prohibidos / reservados en otros sistemas desde el punto de vista de la portabilidad de nombres; como no debería usar ninguno de los caracteres " * : < > ? \ / | (restringidos por NTFS) en su nombre de archivo si desea acceder al archivo en un sistema Windows.

Y sobre el uso de . (periodo) en el nombre de archivo , creo que debería estar bien ya que no parece ser un "reservado" carácter en cualquiera de los sistemas (excepto en OpenVMS, MS-DOS y Windows donde se permite su uso en el nombre de archivo / directorio, pero la última aparición se interpretará como el separador de extensión en VMS, MS-DOS y Windows) como se menciona en El enlace de Wikipedia que sigue:

En otros sistemas, generalmente se considera como parte del nombre de archivo y se puede permitir más de un período. En Unix, un período inicial significa que el archivo o la carpeta normalmente está oculto.

    
respondido por el precise 08.02.2014 - 09:57

Lea otras preguntas en las etiquetas