File (Unix)
Este artigo ou secção contém uma lista de referências no fim do texto, mas as suas fontes não são claras porque não são citadas no corpo do artigo, o que compromete a confiabilidade das informações. (abril de 2017) |
file é um programa de computador padrão do sistema operacional Unix para determinar o tipo de dados contido em um arquivo (ou o tipo de arquivo). Apareceu UNIX System V com mudanças muito importantes, sendo a mais notável a remoção das informações do tipo de arquivo para um arquivo de texto externo, ao invés de compilar estas informações no próprio arquivo binário.
A maioria das distribuições Linux e BSD contém uma reimplementação livre que foi escrita por Ian Darwin. Ela foi expandida por Geoff Collyer em 1989 e desde então teve contribuições de muitos outros, como Guy Harris, Chris Lowth e Eric Fischer.
Especificação
A Single UNIX Specification (SUS) especifica que uma série de testes devem ser executados no arquivo especificado na linha de comando:
- se o arquivo não pode ser lido, seu estado é indeterminado ou seu tipo é indeterminado, file irá indicar que o arquivo foi processado e seu tipo foi indeterminado;
- file deve ser capaz de determinar os tipos diretório, FIFO, Socket e arquivos especiais;
- arquivos vazios devem ser identificados como tal;
- uma parte inicial do arquivo deve ser analisada usando testes sensíveis à posição;
- todo o arquivo deve ser analisado usando testes sensíveis ao contexto;
- o arquivo é identificado como um arquivo de dados;
Os testes sensíveis à posição são normalmente implementados comparando várias posições dentro do arquivo com uma base de dados textual de números mágicos. Esta base de dados é implementada em um arquivo chamado "magic", localizado geralmente em /etc/magic, /usr/share/file/magic ou um local similar. Este método difere de outros mais simples como verificar a extensão dos arquivos e esquemas como MIME.
Uso
A SUS define como requisitos as seguintes opções:
- -M arquivo, especifica um arquivo especialmente formatado contendo testes sensíveis à posição; testes padrão sensíveis à posição e ao contexto não serão executados;
- -m arquivo, como -M, mas testes padrão serão executados após os contidos em arquivo;
- -d, executa testes padrão sensíveis à posição e ao contexto no arquivo; esse é o modo padrão, a menos que -M ou -m sejam especificados;
- -h, identifica ligações como tal, a menos que a ligação aponte para um arquivo inexistente;
- -i, não classifica o arquivo com uma identificação que não seja: não existente, diretório, FIFO, Socket, especial de bloco, especial de caractere, ligação simbólica, aquivo comum, arquivo vazio, arquivo não legível, executável, arquivo TAR, formato cpio estendido, formato TAR estendido, shell script, arquivo fonte em C, arquivo fonte Fortran ou arquivo de dados.
Outros sistemas operacionais Unix ou Unix-like podem adicionar opções extras além dessas.
Exemplos
# file arquivo.c arquivo.c: C program text
# file programa programa: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
# file /dev/wd0a /dev/wd0a: block special (0/0)
# file -s /dev/hda1 /dev/hda1: Linux/i386 ext2 filesystem
# file -s /dev/hda5 /dev/hda5: Linux/i386 swap file
# file comprimido.gz comprimido.gz: gzip compressed data, deflated, original filename, `compressed', last modified: Thu Jan 26 14:08:23 2006, os: Unix
# file dados.ppm dados.ppm: Netpbm PPM "rawbits" image data
Referências
- «Especificações do Single Unix Specification» (em inglês)
Páginas do manual
- «file(1) - Páginas do manual» (em inglês)
Outras
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.