Podemos zerar, apagar todo o conteúdo de um arquivo no Linux de diversas formas. Isso sem termos que excluir e criar um arquivo com o mesmo nome.
Temos um arquivo falando sobre uma das formas que abordarei aqui: O que é e Como usar o comando “Truncate” ?
Vamos às maneiras de se fazer. Lembrando que essas não são as únicas.
Esvaziando um Arquivo Usando truncate
Às vezes, precisamos remover o conteúdo de um arquivo sem excluí-lo; para esse sistema operacional Linux oferece um comando chamado “truncate”.
Usamos o comando truncate -s 0
Aqui, -s vem de size ou tamanho e está definindo o tamanho do arquivo como zero.
Vamos fazer o teste no arquivo meuarquivo.txt que está com 11 Mega Bytes
[root@oraclelinux9 ~]# ls -lh /tmp/meuarquivo.txt -rw-r--r--. 1 root root 11M ago 3 18:29 /tmp/meuarquivo.txt
Vamos truncar esse arquivo,
[root@oraclelinux9 ~]# truncate -s 0 /tmp/meuarquivo.txt
confira agora e veja que seu novo tamanho é zero
[root@oraclelinux9 ~]# ls -lh /tmp/meuarquivo.txt -rw-r--r--. 1 root root 0 ago 3 18:30 /tmp/meuarquivo.txt
Esvaziando um arquivo com echo “”
Podemos usar echo “” com o redirecionador >
Esse exemplo usa o mesmo arquivo meuarquivo.txt com 11M
[root@oraclelinux9 ~]# echo "" > /tmp/meuarquivo.txt
Veja o tamanho do arquivo,
[root@oraclelinux9 ~]# ls -lh /tmp/meuarquivo.txt -rw-r--r--. 1 root root 1 ago 3 18:32 /tmp/meuarquivo.txt
Se usarmos dh -hs para verificar o tamanho do arquivo veremos que ele não está zerado, ainda está com 4 kilo bytes. Porém, de toda forma, todo o conteúdo se perdeu
[root@oraclelinux9 ~]# du -hs /tmp/meuarquivo.txt 4,0K /tmp/meuarquivo.txt
Esvaziando um arquivo com dd
Podemos usar a ferramenta dd para sobrescrever o arquivo com valores nulos, ou, mais precisamente, com /dev/null. Execute dd if=/dev/null of=/tmp/meuarquivo.txt
[root@oraclelinux9 ~]# dd if=/dev/null of=/tmp/meuarquivo.txt 0+0 registros de entrada 0+0 registros de saída 0 byte copiado, 0,00201496 s, 0,0 kB/s
Veja o tamanho do arquivo com ls
[root@oraclelinux9 ~]# ls -lh /tmp/meuarquivo.txt -rw-r--r--. 1 root root 0 ago 3 18:36 /tmp/meuarquivo.txt
agora com du -hs
[root@oraclelinux9 ~]# du -hs /tmp/meuarquivo.txt 0 /tmp/meuarquivo.txt