Eu sei como criar um arquivo vazio:
touch /var/tmp/nullbytes
mas como posso criar um arquivo de 1 MB que contenha apenas bytes nulos na linha de comando com bash?
command-line
files
rubo77
fonte
fonte
Respostas:
Com o GNU
truncate
:(supondo
nullbytes
que não existisse anteriormente) criaria um arquivo esparso de 1 mebibyte. Esse é um arquivo que aparece preenchido com zeros, mas que não ocupa espaço no disco.Sem
truncate
, você pode usardd
:(com algumas
dd
implementações, você pode substituir 1048576 por1M
)Se você preferir que o espaço em disco seja alocado , no Linux e em alguns sistemas de arquivos, você pode:
Isso aloca o espaço sem realmente gravar dados no disco (o espaço é reservado, mas marcado como não inicializado).
Na verdade, escreverá os zeros no disco. Essa é a menos eficiente, mas se você precisar que suas unidades girem ao acessar esse arquivo, é para isso que você deve procurar.
Ou a maneira do @ mikeserv de enganar
dd
para gerar os bytes NUL:Uma alternativa ao GNU
head
que não envolve a necessidade de especificar um tamanho de bloco (1M é OK, mas 10G, por exemplo, não):Ou para obter uma barra de progresso:
fonte
truncate
para criar um arquivo vazio para ser usado como volume de troca ... isso não funcionará! Usedd
neste caso.dd
pode criar arquivos esparsos como mostrei também.bs=1kx1k
. Ou<&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
para a coisa literal de gravação em disco. Não é 100% sobre quanta eficiência pode ser perdida ao forçar o erro de leitura.fonte