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 é de 8 bits. Como existem 256 combinações de 8 bits, isso significa que um byte é qualquer número de 0 a 255. Portanto, todo arquivo é, no nível mais baixo, um grande número de números que variam de 0 a 255.
Depende completamente dos programas e usuários decidirem o que os números "significam". Se queremos armazenar texto, provavelmente é uma boa ideia usar os números como código, onde cada número recebe uma letra. É o que ASCII e Unicode fazem. Se quisermos exibir texto, provavelmente é uma boa ideia criar um dispositivo ou escrever um programa que possa receber esses números e exibir um bitmap parecido com o código ASCII / Unicode correspondente. É isso que os terminais e emuladores de terminal fazem.
Obviamente, para gráficos, provavelmente queremos que os números representem pixels e suas cores. Em seguida, precisaremos de um programa que analise o arquivo, leia todos os bytes e renderize a imagem adequadamente. Um emulador de terminal espera que os bytes sejam números ASCII / Unicode e se comportará de maneira diferente, para o mesmo pedaço de bytes (ou arquivo).
Excelente explicação! Que bom que você desceu ao nível mais baixo.
QCOM
2
@ Boss eu jogaria na definição de um pouco. Um bit é um DIgit binário ou um número que pode ser um ou zero. Um bit tem duas possibilidades ou 2 ^ 1 = 2. Dois bits podem ter quatro combinações ou 2 × 2 = 4. Mais corretamente, é 2² = 4 para 2 dígitos. 8 DIgits ou bits binários podem ter 2 ^ 8 = 2 × 2 × 2 × 2 × 2 × 2 × 2 × 2 = 256 combinações possíveis.
penguin359
2
Nitpick / pediatria menores: um byte é de tamanho arbitrário. Você pode encontrar situações em que não tem 8 bits de largura. "Octeto" é a terminologia preferida.
Chris Baixo
9
O Cat despeja o conteúdo do arquivo de entrada na saída padrão, que neste caso é um dispositivo de texto: a janela do seu 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 A maiúsculo, 66 é B maiúsculo, 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.
OK legal. Obrigado pela resposta. Você mencionou um "modo de texto". Existem outros modos para um terminal padrão? Ou, é a única outra maneira de interpretá-lo como você disse, por meio de um aplicativo que pode renderizar adequadamente esse tipo de arquivo?
QCOM
4
@ Boss, não, acredito que gordoco quis dizer que um terminal é um dispositivo de texto. O objetivo original caté reunir arquivos como emcat filea fileb > filec , se você não transitar pelo terminal (como neste exemplo), não importa se o arquivo é texto ou binário. No mundo unix, os arquivos binários e de texto são armazenados da mesma forma, apenas os arquivos de texto contêm um conjunto de bytes um tanto restrito. Um uso comum do gato é direcionar o conteúdo do arquivo para comandos que não tomam nomes de arquivos como parâmetros, mas aceitam entrada da entrada padrão.
asoundmove
O @BOSS, dizendo que um arquivo é um arquivo de texto em vez de binário, significa apenas que o conteúdo binário do arquivo pode ser interpretado como texto. As coisas costumavam ser simples, ou o arquivo era ASCII ou não. Atualmente, o arquivo pode ter vários formatos de texto diferentes, incluindo ASCII, UTF8, UTF16 ... No disco rígido, todos são binários.
precisa saber é o seguinte
@asoundmove: Você está correto, eu deveria ter dito dispositivo de texto, em vez do termo ambíguo "modo de texto". Eu editei minha resposta.
malabarista
Eu usei cat em um bitmap agora e ele imprimiu no terminal não apenas símbolos ASCII, mas também caracteres unicode (como "ڣ" e "漥"). Alguma ideia de por que é assim?
O Cat despeja o conteúdo do arquivo de entrada na saída padrão, que neste caso é um dispositivo de texto: a janela do seu 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 A maiúsculo, 66 é B maiúsculo, 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.
fonte
cat
é reunir arquivos como emcat filea fileb > filec
, se você não transitar pelo terminal (como neste exemplo), não importa se o arquivo é texto ou binário. No mundo unix, os arquivos binários e de texto são armazenados da mesma forma, apenas os arquivos de texto contêm um conjunto de bytes um tanto restrito. Um uso comum do gato é direcionar o conteúdo do arquivo para comandos que não tomam nomes de arquivos como parâmetros, mas aceitam entrada da entrada padrão.