Uso básico do comando de arquivo no sistema Linux

Insira a descrição da imagem aqui

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

Insira a descrição da imagem aqui

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.

Acho que você gosta

Origin blog.csdn.net/jks212454/article/details/134037147
Recomendado
Clasificación