Ele cria um arquivo no diretório atual, se eu abrir esse arquivo, ele aparece como um arquivo de texto em branco.
Se você executar touch non_existing_filename
, ele criará um arquivo vazio. O arquivo está vazio, contendo nada. Isso não significa que seja um arquivo de texto ou qualquer outro tipo de arquivo.
Se você executar touch existing_file
, toque em atualizará os carimbos de data e hora no arquivo.
echo "test" > file
cat file
E o que eu recebo é uma string. Então, um arquivo vazio é igual a um arquivo de texto?
Sim, se você escrever uma string em um arquivo vazio, você receberá uma string quando ler o conteúdo do arquivo. Note que >
sobrescreve todo conteúdo em um arquivo, e o resultado seria o mesmo se o arquivo estivesse vazio, não existente ou algum outro arquivo (como uma imagem). Você pode usar >>
para anexar texto a um arquivo.
Observe que as ferramentas, como o redirecionamento ( >>
, >
e assim por diante), não se importam com o tipo de arquivo. É uma operação perfeitamente válida para acrescentar uma string de texto a um arquivo contendo, por exemplo, uma imagem JPEG. Também é uma operação perfeitamente válida para cat
de algum arquivo de imagem. Não que eu recomendo que você tente; não será exibido corretamente no seu terminal.
O sistema de arquivos não possui conceito de tipos de arquivos. Ele não se importa com o conteúdo de um arquivo - e não há diferença entre os diferentes tipos de arquivos no nível do sistema de arquivos.
Tradicionalmente, o Unix depende muito menos de tipos de arquivos do que o Windows, e é perfeitamente razoável ter um arquivo de texto chamadoREADME
, enquanto no Windows seria comum ter a extensão .txt
para um arquivo de texto.
Se você quer saber que tipo de arquivo você tem em mãos, o utilitário file
é bastante útil:
$ file auth.log
auth.log: ASCII text
$ file Dokken.mp4
Dokken.mp4: ISO Media, MP4 Base Media v1 [IS0 14496-12:2003]
file
decide o tipo de conteúdo com base em uma descrição das características comuns de cada arquivo, geralmente chamada de assinatura de arquivo . Por exemplo, um debian sempre começará com os bytes 21 3C 61 72 63 68 3E
, e se nós vermos esses bytes no começo do arquivo, nós provavelmente temos um pacote debian em nossas mãos.
O utilitário file
usa os chamados arquivos mágicos para decidir em qual tipo de arquivo ele está olhando. Mais informações sobre isso podem ser encontradas na página pessoal de magic (por exemplo, man magic
em um sistema Linux).
Note que file
não é infalível, apenas um bom indicador. Se eu criar um arquivo que contenha os bytes ed ab ee db 0d 25
, o arquivo identificará isso como /tmp/foobar: RPM v13.37 bin
. ed ab ee db
é o cabeçalho necessário para arquivos RPM e 0d 25
é 1337 em hexadecimal ... Este arquivo não será um pacote RPM válido de nenhuma forma.