Como o Linux sabe o tipo do arquivo com o qual está lidando? [duplicado]

4

No Windows, o sistema operacional sabe o tipo de arquivo usando a extensão: exe, doc, ppt, pdf .... etc

No Linux, como sabemos, a extensão é inútil.

Minha pergunta é como o Linux pode saber o tipo de arquivo com o qual está lidando: shell script, arquivo de áudio, arquivo de vídeo .... etc ou está lidando com todos os arquivos da mesma maneira?

    
por Networker 28.05.2014 / 00:11

2 respostas

9

As extensões de arquivo não são inúteis para distribuições Linux, elas são apenas um atalho que geralmente não é necessário. Existem algumas ferramentas que o Linux usa, o que torna as extensões de arquivos em grande parte desnecessárias. O primeiro, e talvez o mais óbvio, é o shebang ( #! ).

A shebang é uma linha no topo dos scripts executados por um shell para dizer ao shell o que deve ser usado para executá-lo. Por exemplo, a linha padrão a ser incluída em um script bash é algo assim:

#!/usr/bin/bash

Esta linha informa ao shell que o conteúdo dos scripts deve ser executado pelo utilitário localizado em /usr/bin/bash . No entanto, os shebangs são realmente úteis apenas para itens executáveis.

A próxima ferramenta usada amplamente pelos aplicativos modernos são os tipos MIME. Os tipos Mime são uma declaração do tipo de arquivo usado amplamente na Internet para que os navegadores da Web e os clientes de e-mail possam saber que tipo de arquivo está sendo transferido. No entanto, muitos programas contam com esses tipos para saber como lidar com eles (por exemplo, os arquivos .desktop do X podem incluir uma linha MIMEYPE para declarar uma associação de tipo de arquivo com um programa específico).

Finalmente, uma biblioteca C e um front-end de linha de comando foram desenvolvidos para detectar os tipos MIME através da heurística. Estes são libmagic e file , respectivamente. Libmagic e file permitem que um programa, ou um usuário, detecte o tipo MIME de um arquivo, mesmo que ele não seja explicitamente declarado.

É verdade que os shebangs desempenham um papel muito menor na forma como os sistemas operacionais modernos determinam o tipo de um arquivo, mas ainda são amplamente usados no mundo dos scripts e certamente ainda fazem parte da equação.

Algumas das associações de tipos de arquivos declaradas através de tipos MIME para X podem ser encontradas no arquivo $HOME/.local/share/applications/mimeapps.list (por exemplo).

    
por 28.05.2014 / 00:31
2

Digite

% man file

Essencialmente, a maioria dos designers de formato de arquivo reserva os primeiros 4 caracteres para identificar o formato.

Esses caracteres são conhecidos como magic number do arquivo.

Tenha em mente que, ao contrário do Windows ou Mac, no Unix não há associação de arquivos.

Os arquivos executáveis são identificados por alguns sinalizadores internos ('x').

O comando

ls -l

mostra essas bandeiras.

    
por 28.05.2014 / 00:30

Tags