GNU/Linux >> Tutoriales Linux >  >> Linux

Varias preguntas sobre la codificación de caracteres del sistema de archivos en Linux

He reformulado un poco sus preguntas, por razones que deberían parecer evidentes cuando las lee en secuencia.

1. ¿Es posible configurar el sistema de archivos de Linux usando codificación de caracteres fijos para almacenar nombres de archivo independientemente del entorno LANG/LC_ALL?

No, esto no es posible:como menciona en su pregunta, un nombre de archivo UNIX es solo una secuencia de bytes; el kernel no sabe nada acerca de la codificación, que es completamente un concepto de espacio de usuario (es decir, nivel de aplicación).

En otras palabras, el núcleo no sabe nada sobre LANG /LC_* , por lo que no se puede traducir.

2. ¿Es posible permitir que diferentes nombres de archivo se refieran al mismo archivo?

Puede tener múltiples entradas de directorio que se refieran al mismo archivo; puede hacerlo a través de enlaces duros o enlaces simbólicos.

Tenga en cuenta, sin embargo, que los nombres de archivo que no son válidos en la codificación actual (por ejemplo, su cadena de caracteres GBK cuando está trabajando en una configuración regional UTF-8) se mostrarán mal, si es que se muestran.

3. ¿Es posible parchear el núcleo para traducir la codificación de caracteres entre el sistema de archivos y el entorno actual?

No puede parchear el kernel para hacer esto (ver 1.), pero podría, en teoría, parchear la biblioteca C (por ejemplo, glibc) para realizar esta traducción, y siempre convertir los nombres de archivo a UTF-8 cuando llama al kernel, y convertirlos de nuevo a la actual codificación cuando lee un nombre de archivo del kernel.

Un enfoque más simple podría ser escribir un sistema de archivos superpuesto con FUSE, que simplemente redirige cualquier solicitud del sistema de archivos a otra ubicación después de convertir el nombre del archivo a/desde UTF-8. Idealmente, podría montar este sistema de archivos en ~/trans , y cuando se accede a ~/trans/a/GBK/encoded/path entonces el sistema de archivos FUSE realmente accede a /a/UTF-8/encoded/path .

Sin embargo, el problema con estos enfoques es:¿qué hace con los archivos que ya existen en su sistema de archivos y no están codificados en UTF-8? No puede simplemente pasarlos sin traducir, porque entonces no sabe cómo convertirlos; no puedes manipularlos traduciendo secuencias de caracteres no válidas a ? porque eso podría crear conflictos...


Linux
  1. Cómo convertir archivos a codificación UTF-8 en Linux

  2. Las 25 preguntas y respuestas principales de la entrevista de Linux

  3. Linux – ¿Todo es un archivo?

  4. Uso del comando mkfs en Linux para formatear el sistema de archivos en un disco o partición

  5. Preguntas de la entrevista de Linux:Archivos abiertos / Descriptores de archivos abiertos

Comprender los permisos de archivos de Linux

Comando de cola de Linux

Cómo montar un sistema de archivos Linux remoto usando SSHFS

Todo lo que necesita saber sobre el sistema de archivos de Linux

Todo lo que necesita saber sobre el comando Chmod de Linux

Preguntas de la entrevista del sistema de archivos de red de Linux (NFS)