No Ubuntu, um arquivo vazio é o mesmo que um arquivo de texto? [fechadas]

6

Sou novo no Ubuntu.

Se no shell eu faço:

touch file

Cria um arquivo no diretório atual e, se eu abrir esse arquivo, ele aparecerá como um arquivo de texto em branco. Além disso, eu posso fazer

echo "test" > file
cat file

E o que eu recebo é uma string.

Então, um arquivo vazio é igual a um arquivo de texto?

    
por Tantaros 01.01.2018 / 17:10

6 respostas

15

  

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 chamado README , 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.

    
por vidarlo 01.01.2018 / 17:39
8

Se você usar o toque em um arquivo que não existe, ele criará um arquivo vazio para você. Se você usá-lo em um arquivo existente, ele atualizará os horários de acesso, etc. Verifique o tipo de um arquivo com o comando file. Pode haver arquivos binários nulos.

Para esses arquivos file utility retorna o seguinte:

$ touch new
$ file new
new: empty

Mas para o arquivo com algum texto, ele retornará "Texto ASCII"

$ echo "text" > text
$ file text 
text: ASCII text

Mas alguns aplicativos gráficos como o Pluma ou o Gedit abrirão os dois arquivos como texto.

    
por Kyle H 01.01.2018 / 17:20
4

Existe um ditado antigo no Linux / Unix

  

Tudo é um arquivo

Com isso dito, o Linux identifica tipos de arquivos por mágica, não necessariamente pelo conteúdo

Veja Como o Ubuntu sabe que tipo de arquivo é um arquivo sem extensão?

    
por Panther 01.01.2018 / 17:51
1

Um arquivo vazio é apenas um arquivo vazio - ele não tem conteúdo, portanto, não é um arquivo de texto. Você pode preencher um arquivo vazio com o que quiser (para torná-lo um arquivo de texto, um arquivo binário ou qualquer outro tipo de arquivo desejado). Aqui está um teste simples:

Crie um arquivo vazio: $ touch somefile

Veja o que é o tipo de arquivo:

$ touch somefile
$ file somefile
$ somefile: empty

Adicione um texto a "somefile" e veja que tipo de arquivo é:

$ echo "Some text..." >> somefile
$ file somefile
somefile: ASCII text

Crie um pequeno binário:

#include <iostream>
int main(int argc, char *argv[]) {
    std::cout << "Hello, cruel world!" << std::endl;
    return 0;
}

$ g++ test.cpp -o test

Exclua "somefile", toque nele novamente e, em seguida, inclua o conteúdo do binário em "somefile":

$ rm somefile
$ touch somefile
$ cat test >> somefile
$ file somefile
somefile: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=18c391d1f1bba8069fe85962458c7609bd8f516e, not stripped
    
por Vanessa Deagan 01.01.2018 / 18:55
1

TLDR: Não. Um arquivo de texto não deve estar vazio para ser detectado como tal. Claro, pode estar vazio.

touch define o registro de data e hora do arquivo e cria o arquivo se ele não existir. Então, que tipo de arquivo é um arquivo vazio?

$ ls -l test
-rw-r--r-- 1 user users 0  1. Jän 18:36 test
$ file test
test: empty

O utilitário file informa como um tipo de arquivo separado. Isso ocorre porque um arquivo vazio pode ser qualquer coisa que faça sentido para vários aplicativos: pode ser um arquivo de texto simples vazio, uma tabela CSV vazia, um fluxo de dados bruto vazio (não pode ser um arquivo vazio do tipo GZ, JPEG etc. , porque esses arquivos não têm 0 bytes, mesmo que os aplicativos os tratem como vazios, já que todos eles contêm cabeçalhos e outras coisas). Então, o tipo não pode ser melhor definido como vazio .

    
por rexkogitans 01.01.2018 / 18:48
0

Em suma, o arquivo vazio é chamado de arquivo de zero bytes. Este arquivo não tem dados nem mesmo apenas cabeçalho, então você não pode dizer o tipo, embora alguns gerenciadores de arquivos e outros programas possam tratá-los como arquivos de texto simples (isso não é verdade, mas é uma boa opção para tratar). Leia mais de aqui .

    
por WailenB 01.01.2018 / 20:13