Uso básico del comando de archivo en el sistema Linux
- 1. Introducción al comando de archivo
- 2. Ayuda sobre el uso del comando de archivo
- 3. Introducción a los tipos de archivos
- 4. Uso básico del comando de archivo
-
- 4.1 Consultar versión del archivo
- 4.2 Mostrar tipo de archivo
- 4.3 No mostrar el nombre del archivo durante la salida
- 4.4 Mostrar categorías MIME
- 4.5 Mostrar el tipo de archivo al que apunta el enlace
- 4.6 Consulta por lotes
- 4.6 Buscar un archivo y mostrar su tipo de archivo
- 4.7 Ver información del archivo del dispositivo de bloque
- 5. Precauciones al utilizar el comando de archivo
1. Introducción al comando de archivo
1.1 Introducción a Linux
Linux es un sistema operativo de código abierto y su núcleo es el kernel de Linux. El sistema operativo Linux fue lanzado originalmente en 1991 por Linus Torvalds de Finlandia. Se diferencia de sistemas operativos como Windows y Mac OS X en que es gratuito y puede modificarse y distribuirse libremente. La naturaleza de código abierto del sistema operativo Linux permite a los usuarios modificar, copiar y distribuir libremente el sistema operativo, y puede adaptarse a diversas necesidades. El sistema operativo Linux se utiliza ampliamente en servidores, supercomputadoras, dispositivos móviles y sistemas integrados, y cada vez más usuarios lo eligen como su sistema operativo diario.
1.2 Introducción al comando de archivo
El comando de archivo es un comando utilizado en Linux para detectar tipos de archivos y puede determinar su tipo en función de los datos binarios del archivo.
2. Ayuda sobre el uso del comando de archivo
2.1 Información de ayuda del comando de archivo
Utilice –help para consultar la información de ayuda del comando de archivo
[root@jeven ~]# file --help
Usage: file [OPTION...] [FILE...]
Determine type of FILEs.
--help display this help and exit
-v, --version output version information and exit
-m, --magic-file LIST use LIST as a colon-separated list of magic
number files
-z, --uncompress try to look inside compressed files
-b, --brief do not prepend filenames to output lines
-c, --checking-printout print the parsed form of the magic file, use in
conjunction with -m to debug a new magic file
before installing it
-e, --exclude TEST exclude TEST from the list of test to be
performed for file. Valid tests are:
ascii, apptype, compress, elf, soft, tar, tokens, troff
-f, --files-from FILE read the filenames to be examined from FILE
-F, --separator STRING use string as separator instead of `:'
-i, --mime output MIME type strings (--mime-type and
--mime-encoding)
--apple output the Apple CREATOR/TYPE
--mime-type output the MIME type
--mime-encoding output the MIME encoding
-k, --keep-going don't stop at the first match
-l, --list list magic strength
-L, --dereference follow symlinks (default)
-h, --no-dereference don't follow symlinks
-n, --no-buffer do not buffer output
-N, --no-pad do not pad output
-0, --print0 terminate filenames with ASCII NUL
-p, --preserve-date preserve access times on files
-r, --raw don't translate unprintable chars to \ooo
-s, --special-files treat special (block/char devices) files as
ordinary ones
-C, --compile compile file specified by -m
-d, --debug print debugging messages
Report bugs to http://bugs.gw.com/
2.2 Explicación de la sintaxis del comando de archivo
- sintaxis del comando de archivo
file(选项)(参数)
- explicación de la opción de comando de archivo
-b:仅显示文件类型,不显示文件名;
-i:显示MIME类型;
-z:对压缩文件也进行检测。
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号链接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-s: 查询(块/字符设备)文件信息
- Explicación de los parámetros del comando de archivo.
文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
2.3 manual de hombre para comando de archivo
Consultar el uso del comando de archivo en el manual de hombre.
man file
3. Introducción a los tipos de archivos
Los tipos de archivos comunes en Linux incluyen:
-
Archivo normal: se utiliza para almacenar texto, datos y otra información. La abreviatura es "-" (guion).
-
Archivo de directorio: se utiliza para almacenar información sobre otros archivos y directorios. Abreviado como "d".
-
Archivo de enlace simbólico: un acceso directo que apunta a otro archivo o directorio. Abreviado como "l".
-
Archivo de socket: un archivo utilizado para la comunicación entre procesos. Abreviado como "s".
-
Archivo de dispositivo de bloqueo: un archivo utilizado para acceder a dispositivos de almacenamiento (como discos duros, unidades flash USB, etc.). Abreviado como "b".
-
Archivo de dispositivo de caracteres: un archivo utilizado para acceder a los dispositivos del sistema (como teclado, mouse, etc.). Abreviado como "c".
-
Archivo FIFO: un archivo utilizado para la comunicación entre procesos. Abreviado como "p".
4. Uso básico del comando de archivo
4.1 Consultar versión del archivo
Utilice la opción -v para consultar la versión del archivo.
[root@jeven ~]# file -v
file-5.11
magic file from /etc/magic:/usr/share/misc/magic
4.2 Mostrar tipo de archivo
Por ejemplo, si necesitamos consultar el tipo de archivo de un archivo, podemos usar directamente el comando de archivo para consultar.
[root@jeven ~]# file test.txt
test.txt: ASCII text
4.3 No mostrar el nombre del archivo durante la salida
Al utilizar la opción -b, el nombre del archivo no se muestra al generar los resultados.
[root@jeven ~]# file -b test.txt
ASCII text
4.4 Mostrar categorías MIME
Utilice la opción -i para mostrar la categoría MIME de un archivo
[root@jeven ~]# file -i test.txt
test.txt: text/plain; charset=us-ascii
4.5 Mostrar el tipo de archivo al que apunta el enlace
Ver información del directorio /var/mail
[root@server-01 ~]# ls -l /var/mail
lrwxrwxrwx. 1 root root 10 Jul 11 2019 /var/mail -> spool/mail
Consultar tipo de archivo /var/mail
[root@server-01 ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'
Muestra el tipo de archivo al que apunta un enlace simbólico.
[root@server-01 ~]# file -L /var/mail
/var/mail: directory
4.6 Consulta por lotes
En el directorio actual, consulte por lotes los tipos de todos los archivos en el directorio actual.
[root@jeven tmp]# file *
clr-debug-pipe-8952-724-in: fifo (named pipe)
clr-debug-pipe-8952-724-out: fifo (named pipe)
clr-debug-pipe-8970-1925-in: fifo (named pipe)
clr-debug-pipe-8970-1925-out: fifo (named pipe)
dotnet-diagnostic-8952-724-socket: socket
dotnet-diagnostic-8970-1925-socket: socket
\passwd: ASCII text
start-015d97ac.sh: ASCII text, with no line terminators
start-109f1a86.sh: ASCII text, with no line terminators
start-26c0fb80.sh: ASCII text, with no line terminators
start-4203b95e.sh: ASCII text, with no line terminators
start-92889412.sh: ASCII text, with no line terminators
start-ddceaaa1.sh: ASCII text, with no line terminators
systemd-private-08fc6e47aa874539ac4d70bc789f5282-bolt.service-mnASgU: directory
systemd-private-08fc6e47aa874539ac4d70bc789f5282-colord.service-HplXU8: directory
systemd-private-08fc6e47aa874539ac4d70bc789f5282-cups.service-xyIPUs: directory
systemd-private-08fc6e47aa874539ac4d70bc789f5282-rtkit-daemon.service-bw5Sug: directory
systemd-private-b900215aacec4b86a1e8d464980a5c54-bolt.service-VNJiad: directory
systemd-private-b900215aacec4b86a1e8d464980a5c54-colord.service-ZUXvYP: directory
systemd-private-b900215aacec4b86a1e8d464980a5c54-cups.service-RlD3bV: directory
systemd-private-b900215aacec4b86a1e8d464980a5c54-rtkit-daemon.service-zH4Tz7: directory
vmware-root_8951-3886978998: directory
vmware-root_8974-2832928238: directory
vmware-root_8984-2865826809: directory
vmware-root_8989-3852833186: directory
vmware-root_8994-2857503325: directory
4.6 Buscar un archivo y mostrar su tipo de archivo
Buscar un archivo y mostrar su tipo de archivo
[root@jeven boot]# find /etc/httpd -type f -name "*.conf" -exec file {} \;
/etc/httpd/conf/httpd.conf: ASCII text
/etc/httpd/conf.d/autoindex.conf: ASCII text
/etc/httpd/conf.d/userdir.conf: ASCII text
/etc/httpd/conf.d/welcome.conf: ASCII text
/etc/httpd/conf.modules.d/00-base.conf: ASCII text
/etc/httpd/conf.modules.d/00-dav.conf: ASCII text
/etc/httpd/conf.modules.d/00-lua.conf: ASCII text
/etc/httpd/conf.modules.d/00-mpm.conf: ASCII text
/etc/httpd/conf.modules.d/00-proxy.conf: ASCII text
/etc/httpd/conf.modules.d/00-systemd.conf: ASCII text
/etc/httpd/conf.modules.d/01-cgi.conf: ASCII text
4.7 Ver información del archivo del dispositivo de bloque
Utilice la opción -s para ver información sobre los archivos del dispositivo de bloqueo
[root@server-01 ~]# file -s /dev/vda*
/dev/vda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 2048, 104854207 sectors, code offset 0x63
/dev/vda1: Linux rev 1.0 ext4 filesystem data, UUID=1114fe9e-2309-4580-b183-d778e6d97397 (needs journal recovery) (extents) (large files) (huge files)
5. Precauciones al utilizar el comando de archivo
- Es posible que la determinación del tipo de archivo no sea precisa: aunque el comando de archivo puede determinar los tipos de archivos según algunos estándares, no todos los archivos se pueden determinar con precisión.
- El nombre del archivo y la ruta no pueden contener espacios: si el nombre del archivo o la ruta contienen espacios, es posible que el comando de archivo no identifique correctamente el tipo de archivo.
- Necesita usar permisos sudo: si desea usar el comando de archivo en algunos archivos del sistema, necesita usar permisos sudo.
- Las diferentes plataformas del sistema deben procesarse de manera diferente: los diferentes sistemas operativos pueden juzgar los tipos de archivos de manera diferente, por lo que se debe realizar un procesamiento diferente en función de las diferentes plataformas del sistema.
- Solo se pueden juzgar archivos locales: el comando de archivo solo puede juzgar archivos locales y no puede juzgar archivos remotos o archivos de red.