La respuesta corta
- Windows no permite los siguientes caracteres:
<>:"/\|?*
( fuente )
- Más personajes que se desaniman son: espacio
y punto .
( fuente )
- Las herramientas de línea de comando 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 se quiere usar
grep
). Un punto inicial crea un archivo oculto por convención en Linux. En Windows, los puntos se usan en la extensión de archivo, que se usa para la detección del tipo de archivo.
- Windows también no permitirá que 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 que no están permitidos en los sistemas de archivos Unix que conozco son
/
nulos (el byte nulo \0
).
- Consulte también: Límites del sistema de archivos (no sé con qué Windows desea ser compatible).
La respuesta larga
Antecedentes técnicos: sistema de archivos
Ubuntu hace uso del ext4
sistema de archivos. Un sistema de archivos rastrea dónde se almacenan los archivos 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 "superbloque". Este bloque se usa para montar un sistema de archivos. Hasta donde yo sé, cada sistema de archivos moderno divide su espacio en bloques. Creo (y no estoy muy seguro) 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 inodes contienen punteros a otros bloques (que también pueden ser inodes 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 de caracteres)
- ...
De hecho, también puede abrir directorios con un editor:
vim /home
Como el directorio no contiene la ruta completa, sino solo los nombres del contenido, no veo una razón por la cual los archivos no pueden contener un /
. Supongo que podría ser conveniente. (¿Alguien sabe por qué /
no está permitido?)
Sin embargo, las cosas son diferentes para otros sistemas de archivos. El FAT16 y FAT32 usaban la 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" comienzan y en qué grupo terminan como una lista individualmente vinculada.
Lo importante que quería decirte es que los caracteres no permitidos también pueden depender del sistema de archivos.
Antecedentes técnicos: tipos de archivo
- Windows usa extensiones de archivo para detectar tipos de archivo
- Linux usa "Bytes mágicos" para detectar tipos de archivos. Los bytes mágicos son parte del contenido del archivo y, por lo tanto, son completamente independientes del nombre. Estos bytes son parte de la especificación del tipo de archivo (consulte la especificación png como ejemplo). También utiliza las extensiones de nombre de archivo para archivos con los mismos bytes mágicos como
.txt
o .html
(ambos son archivos de texto).
Relacionado