Entonces, sí, como se dice muchas veces en otra parte, un nombre de archivo puede contener casi cualquier carácter. Pero hay que decir que un nombre de archivo no es un archivo. Tiene cierto peso como atributo de archivo, ya que normalmente necesita un nombre de archivo para abrir un archivo, pero el nombre de un archivo solo apunta al archivo real. Es un enlace, almacenado en el directorio que lo ha grabado, junto con el número de inodo , que es una aproximación mucho más cercana a un archivo real .
Entonces, ya sabes, llámalo como quieras. Al núcleo no le importa: todas las referencias de archivos que manejará tratarán con números de inodo reales de todos modos. El nombre de archivo es algo para consumo humano ; si quieres que sea una locura, bueno, es tu sistema de archivos. Aquí, haré algunas cosas locas:
Primero crearé 20 archivos y los nombraré con nada más que espacios, cada nombre de archivo contiene un espacio más que el anterior:
until [ $((i=$i+1)) -gt 20 ]
do v=$v' ' && touch ./"$v"
done
Esto es un poco gracioso. Mira mi ls
:
ls -d ./*
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
./ ./ ./ ./ ./
Ahora voy a reflejar este directorio:
set -- * ; mkdir ../mirror
ls -i1qdU -- "$@" |
sh -c 'while read inum na
do ln -T "$1" ../mirror/$inum
shift ; done' -- "$@"
ls -d ../mirror/*
Aquí están ../mirror/
los contenidos:
../mirror/423759 ../mirror/423764 ../mirror/423769 ../mirror/423774
../mirror/423760 ../mirror/423765 ../mirror/423770 ../mirror/423775
../mirror/423761 ../mirror/423766 ../mirror/423771 ../mirror/423776
../mirror/423762 ../mirror/423767 ../mirror/423772 ../mirror/423777
../mirror/423763 ../mirror/423768 ../mirror/423773 ../mirror/423778
Ok, pero tal vez estás preguntando, pero ¿de qué sirve eso? ¿Cómo puedes saber cuál es cuál? ¿Cómo puede estar seguro de haber vinculado el número de inodo correcto al nombre de archivo correcto?
Bien...
echo "heyhey" >>./' '
tgt=$(ls -id ./' ')
cat ../mirror/${tgt%% .*} \
$(ls -1td ../mirror/* | head -n1)
SALIDA
heyhey
heyhey
Vea, tanto el número de inodo contenido ../mirror/"${tgt%% .*}"
como el referenciado se ./' '
refieren al mismo archivo. Describen el mismo archivo. Lo nombran, pero nada más. No hay ningún misterio, en realidad, solo algunos inconvenientes que podrías hacerte, pero que finalmente tendrán poco o ningún efecto en el funcionamiento de tu sistema de archivos Unix al final.