Sé cómo crear un archivo vacío:
touch /var/tmp/nullbytes
pero ¿cómo puedo crear un archivo de 1 MB que solo contenga nullbytes en la línea de comandos con bash?
command-line
files
rubo77
fuente
fuente
Respuestas:
Con GNU
truncate
:(suponiendo
nullbytes
que no existiera de antemano) crearía un archivo disperso de 1 mebibyte. Ese es un archivo que aparece lleno de ceros pero que no ocupa espacio en el disco.Sin
truncate
, puedes usardd
en su lugar:(con algunas
dd
implementaciones, puede reemplazar 1048576 con1M
)Si prefiere que se asigne el espacio en disco , en Linux y en algunos sistemas de archivos, puede hacer lo siguiente:
Eso asigna el espacio sin escribir datos en el disco (el espacio está reservado pero marcado como no inicializado).
Realmente escribirá los ceros en el disco. Eso es lo menos eficiente, pero si necesita que sus unidades giren al acceder a ese archivo, ese es el que querrá buscar.
O la forma de @ mikeserv de engañar
dd
para generar los bytes NUL:Una alternativa con GNU
head
que no implica tener que especificar un tamaño de bloque (1M está bien, pero 10G, por ejemplo, no):O para obtener una barra de progreso:
fuente
truncate
para crear un archivo vacío para usarlo como volumen de intercambio ... ¡esto no funcionará! Usedd
en este caso en su lugar.dd
puede crear archivos dispersos como mostré también.bs=1kx1k
. O<&1 dd bs=1kx1k conv=sync,noerror count="$rpt" | cat >file
para la cosa literal de escribir en el disco. Sin embargo, no es del 100% de cuánta eficiencia se puede perder al forzar el error de lectura.fuente