O que é produzido depois de usar o gato em uma imagem?

8

Digamos que um crie um arquivo assim:

touch myFile

Você insere algum texto nele com o vim ou qualquer outro, e então usa cat myFile para cuspir o conteúdo no terminal.

Agora, o que acontece quando eu uso o gato em alguma imagem? Diga,

cat myPNG.png

Acabei de receber um monte de lixo. Apenas me fez pensar sobre o que o comando cat está tentando fazer e de onde vem todo esse "lixo". Apenas curioso.

    
por Qcom 26.04.2011 / 03:31

2 respostas

22

Pode ser útil explicar como os arquivos funcionam no nível mais baixo:

Um arquivo é um fluxo de bytes com zero ou mais de comprimento. Um byte é 8 bits. Como há 256 combinações de 8 bits, isso significa que um byte é qualquer número de 0 a 255. Portanto, todo arquivo tem, no nível mais baixo, um grande número de números, variando de 0 a 255.

Cabe aos programas e usuários decidir o que os números "significam". Se queremos armazenar texto, provavelmente é uma boa idéia usar os números como código, onde cada número é atribuído a uma letra. Isso é o que ASCII e Unicode fazem. Se quisermos exibir texto, talvez seja uma boa ideia criar um dispositivo ou escrever um programa que possa pegar esses números e exibir um bitmap com o código ASCII / Unicode correspondente. Isso é o que os terminais e os emuladores de terminal fazem.

Claro, para gráficos, provavelmente queremos que os números representem pixels e suas cores. Então, precisaremos de um programa que passe pelo arquivo, leia todos os bytes e renderize a imagem de acordo. Um emulador de terminal está esperando que os bytes sejam números ASCII / Unicode e vai se comportar de maneira diferente, para o mesmo bloco de bytes (ou arquivo).

    
por 26.04.2011 / 04:58
9

O Cat despeja o conteúdo do arquivo de entrada na saída padrão, que, nesse caso, é um dispositivo de texto: sua janela de terminal. Como uma imagem consiste em dados binários, o que você está vendo são os dados binários brutos interpretados como se fossem texto ASCII. Por exemplo, um byte com o valor 65 seria exibido como maiúscula A, 66 é maiúscula B, etc. Se você abrir o arquivo com um aplicativo capaz de interpretar o arquivo de imagem corretamente, o conteúdo binário do arquivo será exibido como uma imagem.

    
por 26.04.2011 / 03:43