Uso básico do comando de arquivo no sistema Linux
- 1. Introdução ao comando de arquivo
- 2. Ajuda sobre como usar o comando file
- 3. Introdução aos tipos de arquivo
- 4. Uso básico do comando de arquivo
-
- 4.1 Consultar versão do arquivo
- 4.2 Exibir tipo de arquivo
- 4.3 Não exibir o nome do arquivo durante a saída
- 4.4 Exibir categorias MIME
- 4.5 Exibir o tipo de arquivo apontado pelo link
- 4.6 Consulta em lote
- 4.6 Encontre um arquivo e exiba seu tipo de arquivo
- 4.7 Visualizar informações do arquivo do dispositivo de bloco
- 5. Precauções ao usar o comando file
1. Introdução ao comando de arquivo
1.1 Introdução ao Linux
Linux é um sistema operacional de código aberto e seu núcleo é o kernel Linux. O sistema operacional Linux foi originalmente lançado em 1991 por Linus Torvalds da Finlândia. É diferente de sistemas operacionais como Windows e Mac OS X porque é gratuito e pode ser modificado e distribuído gratuitamente. A natureza de código aberto do sistema operacional Linux permite aos usuários modificar, copiar e distribuir livremente o sistema operacional e pode se adaptar a diversas necessidades. O sistema operacional Linux é amplamente utilizado em servidores, supercomputadores, dispositivos móveis e sistemas embarcados, sendo também escolhido por cada vez mais usuários individuais como seu sistema operacional diário.
1.2 Introdução ao comando de arquivo
O comando file é um comando usado no Linux para detectar tipos de arquivo.Ele pode determinar seu tipo com base nos dados binários do arquivo.
2. Ajuda sobre como usar o comando file
2.1 Informações de ajuda do comando de arquivo
Use –help para consultar as informações de ajuda do comando de arquivo
[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 Explicação da sintaxe do comando de arquivo
- sintaxe de comando de arquivo
file(选项)(参数)
- explicação da opção de comando de arquivo
-b:仅显示文件类型,不显示文件名;
-i:显示MIME类型;
-z:对压缩文件也进行检测。
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号链接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-s: 查询(块/字符设备)文件信息
- Explicação dos parâmetros de comando do arquivo
文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
2.3 manual manual para comando de arquivo
Consulte o uso do comando de arquivo no manual man
man file
3. Introdução aos tipos de arquivo
Os tipos de arquivos comuns no Linux incluem:
-
Arquivo normal - usado para armazenar texto, dados e outras informações. A abreviatura é "-" (hífen).
-
Arquivo de diretório - usado para armazenar informações sobre outros arquivos e diretórios. Abreviado como "d".
-
Arquivo de link simbólico - Um atalho para outro arquivo ou diretório. Abreviado como "l".
-
Arquivo de soquete - Um arquivo usado para comunicação entre processos. Abreviado como "s".
-
Arquivo de dispositivo de bloqueio - um arquivo usado para acessar dispositivos de armazenamento (como discos rígidos, unidades flash USB, etc.). Abreviado como "b".
-
Arquivo de dispositivo de caractere - Um arquivo usado para acessar dispositivos do sistema (como teclado, mouse, etc.). Abreviado como "c".
-
Arquivo FIFO - Um arquivo usado para comunicação entre processos. Abreviado como "p".
4. Uso básico do comando de arquivo
4.1 Consultar versão do arquivo
Use a opção -v para consultar a versão do arquivo
[root@jeven ~]# file -v
file-5.11
magic file from /etc/magic:/usr/share/misc/magic
4.2 Exibir tipo de arquivo
Por exemplo, se precisarmos consultar o tipo de arquivo de um arquivo, podemos usar diretamente o comando file para consultar.
[root@jeven ~]# file test.txt
test.txt: ASCII text
4.3 Não exibir o nome do arquivo durante a saída
Usando a opção -b, o nome do arquivo não é exibido na saída dos resultados.
[root@jeven ~]# file -b test.txt
ASCII text
4.4 Exibir categorias MIME
Use a opção -i para exibir a categoria MIME de um arquivo
[root@jeven ~]# file -i test.txt
test.txt: text/plain; charset=us-ascii
4.5 Exibir o tipo de arquivo apontado pelo link
Ver informações do diretório /var/mail
[root@server-01 ~]# ls -l /var/mail
lrwxrwxrwx. 1 root root 10 Jul 11 2019 /var/mail -> spool/mail
Consultar tipo de arquivo /var/mail
[root@server-01 ~]# file /var/mail
/var/mail: symbolic link to `spool/mail'
Mostra o tipo de arquivo apontado por um link simbólico
[root@server-01 ~]# file -L /var/mail
/var/mail: directory
4.6 Consulta em lote
No diretório atual, consulte em lote os tipos de todos os arquivos no diretório atual.
[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 Encontre um arquivo e exiba seu tipo de arquivo
Encontre um arquivo e exiba seu tipo de arquivo
[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 Visualizar informações do arquivo do dispositivo de bloco
Use a opção -s para visualizar informações sobre arquivos de dispositivos de bloqueio
[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. Precauções ao usar o comando file
- A determinação do tipo de arquivo pode não ser precisa: embora o comando file possa determinar os tipos de arquivo com base em alguns padrões, nem todos os arquivos podem ser determinados com precisão.
- O nome e o caminho do arquivo não podem conter espaços: Se o nome ou caminho do arquivo contiver espaços, o comando file poderá não identificar corretamente o tipo de arquivo.
- Você precisa usar permissões sudo: Se quiser usar o comando file em alguns arquivos do sistema, você precisa usar permissões sudo.
- Diferentes plataformas de sistema precisam ser processadas de maneira diferente: Diferentes sistemas operacionais podem julgar os tipos de arquivos de maneira diferente, portanto, diferentes processamentos precisam ser feitos com base em diferentes plataformas de sistema.
- Somente arquivos locais podem ser julgados: O comando file só pode julgar arquivos locais e não pode julgar arquivos remotos ou de rede.