Los siete tipos de archivo estándar de Unix son regular , directorio , enlace simbólico , FIFO especial , bloque especial , carácter especial y socket , según lo define POSIX . [ 1 ] Estos tipos se utilizan en el sistema de archivos de un sistema operativo (SO) Unix o similar a Unix . Las diferentes implementaciones específicas de cada SO permiten más tipos de los que requiere POSIX (por ejemplo, doors en Solaris ). El tipo de un archivo se puede identificar mediante el comando, que muestra el tipo en el primer carácter del campo de permisos del sistema de archivos .ls -l
Para los archivos regulares, Unix no impone ni proporciona ninguna estructura de archivo interna (esto puede denominarse formato de archivo ); [ 2 ] por lo tanto, su estructura e interpretación dependen completamente del software que los utiliza. [ 3 ] Sin embargo, el filecomando generalmente puede usarse para determinar qué tipo de datos contienen. [ 4 ]
Representaciones
Numérico
El tipo de archivo se especifica mediante el modo del archivo, que consta del tipo de archivo y los permisos de acceso . La llamada al sistema stat() devuelve información sobre un archivo en una estructura que incluye el modo del archivo en un campo llamado . Los tipos de archivo y los permisos de acceso se definen normalmente como macros que se expanden a literales enteros octales, y el campo de la estructura se define normalmente como una variable entera sin signo, que normalmente tiene un tamaño de 32 bits, aunque el estándar del lenguaje C permite que sea específico de la implementación. Sin embargo, comúnmente en sistemas tipo Unix , solo 16 bits (6 dígitos octales) del campo son utilizados por los literales enteros octales que representan diferentes tipos de archivo y permisos de acceso, donde los 4 bits más significativos (2 dígitos octales) se utilizan para el tipo de archivo, y los 12 bits restantes para los permisos de acceso, que consisten en los 3 bits de orden superior (1 dígito octal) que se utilizan para los atributos setuid, setgid y sticky, que comúnmente se denominan permisos especiales, seguidos de los 9 bits (3 dígitos octales) que se utilizan para los permisos normales. POSIX especifica que los 12 bits menos significativos del modo de un archivo son permisos de acceso, y deja los bits del tipo de archivo como un detalle de implementación. [ 1 ]statst_modest_modestatst_mode
Cuando se escribe en octal , un valor de modo muestra el tipo de archivo Unix por separado , como los dos primeros dígitos. Por ejemplo, el modo octal 100644 indica un archivo regular, ya que el campo de bits del tipo de archivo Unix es octal 10. Este formato se utiliza en git , tar , ar y otros contextos. [ 5 ]
Un programa puede probar un valor de modo para determinar el tipo de archivo Unix mediante macros proporcionadas en los encabezados C estándar . Por ejemplo, un programa puede enmascarar un valor de modo con S_IFMT(convención de octal 170000 para los primeros 4 bits) para obtener el tipo de archivo Unix y luego probar ese valor S_IFDIRpara determinar si el archivo es un directorio. Alternativamente, un programa puede usar la S_ISDIRmacro. S_IFMTno es un concepto central de POSIX, sino una extensión de X/Open System Interfaces (XSI). Los sistemas que cumplen solo con POSIX pueden usar otros métodos. [ 1 ]
Simbólico
POSIX especifica el formato largo del lscomando para representar el tipo de archivo Unix como la primera letra de una entrada. [ 6 ]
La versión de GNU coreutilsls llama a la función gnulib filemode()[ 7 ] para formatear la cadena de modo. FreeBSD utiliza un enfoque más simple, pero permite un número menor de tipos de archivo. [ 8 ]
Ejemplos
El comando ls -linforma la cadena de modo de archivo como la primera columna de salida para cada archivo. Esta cadena comienza con el indicador de tipo de archivo Unix. La siguiente salida es para el directorio raíz , del comando ls -l /, que comienza con dpara indicar que es un directorio. El resto de la primera columna ( rwxr-xr-x) indica los permisos .
d rwxr-xr-x 26 raíz raíz 4096 22 de septiembre 09:29 /
La salida del comando stat /incluye el nombre completo del tipo de archivo Unix:
Archivo: "/" Tamaño: 4096 Bloques: 8 Bloque de E/S: 4096 directorio Dispositivo: 802h/2050d Inodo: 128 Enlaces: 26 Acceso: (0755/ d rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) ...
La salida de un archivo de enlace simbólico comienza con una inicial l('l' minúscula) e identifica la ruta del archivo referenciado como en este ejemplo ls -lde salida: [ 6 ]
l rwxrwxrwx ... termcap -> /usr/share/misc/termcap l rwxrwxrwx ... S03xinetd -> ../init.d/xinetd
Una tubería con nombre es un archivo especial que se puede crear mediante el comando . Una tubería con nombre se identifica como en este ejemplo de salida: [ 6 ]mkfifonamepls -l
p rw-rw---- ... mi pipa
Un archivo de ruta de socket es un tipo de socket de dominio Unix , un archivo especial para la comunicación entre procesos que, a diferencia de las tuberías con nombre, permite la comunicación dúplex completa . Un socket se marca como sen esta ls -lsalida de ejemplo: [ 6 ]
s rwxrwxrwx /tmp/.X11-unix/X0
Los archivos de bloques y de caracteres representan dispositivos de hardware. Un archivo de dispositivo se puede usar para controlar el acceso a un dispositivo y permitir operaciones similares a las de un archivo en el dispositivo conectado. Un dispositivo de caracteres (acceso en serie) se marca con una cy un dispositivo de bloques (acceso aleatorio) se marca con una bcomo en esta ls -lsalida de ejemplo: [ 6 ]
c rw-rw-rw- ... /dev/null b rw-rw---- ... /dev/sda
Referencias
- 1 2 3 "<sys/stat.h>" . The Open Group Base Specifications Issue 8 . The Open Group. 14 de junio de 2024. Archivado del original el 25 de abril de 2025. Recuperado el 1 de junio de 2025 .
- ↑ p. ej. MW; MKD; Kaufman, Lar (octubre de 2002). "Compresión de archivos para ahorrar espacio". Unix Power Tools (3.ª ed.). O'Reilly. pág. 408. ISBN 9780596003302
Muchos formatos de archivos de audio y gráficos (como MP3 y JPEG) ya están bien comprimidos
. - ↑ Loukides, Mike (octubre de 2002). "¿Cuándo un archivo no es un archivo?". Unix Power Tools (3.ª ed.). O'Reilly. pág. 80. ISBN 9780596003302
Un archivo no es más que una secuencia de bytes
. - ↑ " " . IEEE Std 1003.1-2017 ( POSIX ) . The Open Group . 2018. Archivado del original el 12-10-2018 . Recuperado el 26-10-2023 .
file - ↑ Kitt, Stephen. "¿Qué modo de archivo es un enlace simbólico?" . Unix & Linux Stack Exchange .
- 1 2 3 4 5 " " . IEEE Std 1003.1-2008 ( POSIX ) . The Open Group. 11 de marzo de 2017. Archivado del original el 3 de agosto de 2017. Recuperado el 10 de febrero de 2017 .
ls - ↑ «función modo archivo en GNU coreutils» . ÑU. 11 de marzo de 2017.
- ↑ "Función printtype de FreeBSD" . FreeBSD. 11 de marzo de 2017.
- Tecnología del sistema de archivos Unix