Ocasionalmente, enquanto lida com arquivos no terminal Linux, você pode querer limpar o conteúdo de um arquivo sem necessariamente abri-lo usando qualquer editor de linha de comando do Linux. Como isso pode ser conseguido? Neste artigo, vamos passar por várias formas diferentes de esvaziar o conteúdo de um ficheiro com a ajuda de alguns comandos úteis.
Cautela: Antes de continuarmos a olhar para as várias maneiras, note que porque no Linux tudo é um ficheiro, deve sempre certificar-se que o(s) ficheiro(s) que está a esvaziar não são ficheiros importantes do utilizador ou do sistema. Limpar o conteúdo de um sistema ou arquivo de configuração crítico pode levar a um erro ou falha fatal da aplicação/sistema.
Por isso, abaixo estão os meios de limpar o conteúdo do arquivo da linha de comando.
Importante: Para o propósito deste artigo, usamos o arquivo access.log
nos exemplos a seguir.
Empty File Content by Redirecting to Null
Uma maneira mais fácil de esvaziar ou apagar o conteúdo de um ficheiro usando o redireccionamento da shell null
(objecto inexistente) para o ficheiro como abaixo:
# > access.log
Empty File Using ‘true’ Command Redirection
Aqui usaremos um símbolo :
é um comando embutido na shell que é equivalente à essência do comando true
e pode ser usado como um no-op (nenhuma operação).
Um outro método é redirecionar a saída de :
ou true
comando embutido para o arquivo assim:
# : > access.logOR # true > access.log
Empty File Using cat/cp/dd utilities with /dev/null
No Linux, o dispositivo null
é basicamente utilizado para descartar fluxos de saída indesejados de um processo, ou então como um arquivo vazio adequado para fluxos de entrada. Isto é normalmente feito pelo mecanismo de redirecionamento.
E o arquivo /dev/null
device é, portanto, um arquivo especial que anula (remove) qualquer entrada enviada para ele ou sua saída é a mesma de um arquivo vazio.
Adicionalmente, você pode esvaziar o conteúdo de um arquivo redirecionando a saída de /dev/null
para ele (arquivo) como entrada usando o comando cat:
# cat /dev/null > access.log
Próximo, usaremos o comando cp para apagar o conteúdo de um arquivo como mostrado.
# cp /dev/null access.log
No seguinte comando, if
significa o ficheiro de entrada e of
refere-se ao ficheiro de saída.
# dd if=/dev/null of=access.log
Empty File Using echo Command
Aqui, você pode usar um comando echo com uma string vazia e redirecioná-lo para o arquivo como a seguir:
# echo "" > access.logOR# echo > access.log
Note: Deve ter em conta que uma string vazia não é o mesmo que nula. Uma string já é um objecto tanto quanto pode estar vazio enquanto nulo significa simplesmente a não existência de um objecto.
Por esta razão, quando redirecciona a saída do comando echo acima para o ficheiro, e vê o conteúdo do ficheiro utilizando o comando cat, é imprimida uma linha vazia (string vazia).
Para enviar uma saída nula para o ficheiro, utilize a bandeira -n
que diz ao echo para não sair a nova linha que leva à linha vazia produzida no comando anterior.
# echo -n "" > access.log
Empty File Using truncate Command
O comando truncate ajuda a encolher ou estender o tamanho de um arquivo para um tamanho definido.
Pode empregá-lo com a opção -s
que especifica o tamanho do arquivo. Para esvaziar um conteúdo de arquivo, use um tamanho de 0 (zero) como no próximo comando:
# truncate -s 0 access.log
É isso por enquanto, neste artigo nós cobrimos múltiplos métodos de limpar ou esvaziar o conteúdo do arquivo usando utilitários simples de linha de comando e mecanismo de redirecionamento da shell.
Estas provavelmente não são as únicas formas práticas disponíveis para fazer isto, portanto você também pode nos informar sobre quaisquer outros métodos não mencionados neste guia através da seção de feedback abaixo.