Eu não sei o que você está tentando alcançar, então só posso descrever o que seu comando está realmente fazendo.
dd if=/dev/zero
Você está lendo de um dispositivo especial que retorna um número infinito de bytes zero (ou NUL).
of=/EMPTY
Você está criando um novo arquivo usando a entrada acima (infinita).
bs=1M
Você lê e grava o fluxo de dados infinito em blocos de megabytes. Você nunca deve fazer algo como você provavelmente irá preencher o sistema de arquivos e muitas ferramentas não podem lidar com tais situações. Enquanto o sistema de arquivos ext4 é efetivamente preenchido e o comando termina, um sistema de arquivos compactado é capaz de compactar o fluxo de zero bytes de forma agressiva.
| true
Isso não faz sentido, pois o dd
com of=
não tem saída. Você provavelmente quis dizer || true
para neutralizar o código de status de dd
, mas isso não é muito útil, pois falhas de comando individuais não eliminam todo o script.
Um uso típico de dd if=/dev/zero
é zerar todo o dispositivo, como /dev/sdb
. Conforme observado em outra resposta, talvez você queira usar shred
. Em ambos os casos, você quer referir-se a todas as partições do sistema apresentadas no sistema como dispositivos de bloco, não aos arquivos individuais (que podem não existir mais). Existem muitos livros e recursos on-line em dispositivos de bloco linux e páginas de manual de shred
e dd
também são muito úteis.
Quando você exclui um arquivo, seus blocos ficam imediatamente disponíveis. Você não precisa realizar nenhuma magia negra. Se você quiser eliminar o conteúdo de um arquivo para evitar técnicas forenses, use apenas schred --delete
para remover o arquivo em vez de uma exclusão normal. Enxugar os blocos de um arquivo já excluído não é tão fácil e você não pode simplesmente confiar na criação de um grande arquivo vazio. Você precisaria de uma ferramenta específica do sistema de arquivos para fazê-lo com segurança.