2012-06-05 15 views
13

Puede utilizar¿Cómo consigo un equivalente de/dev/Linux en una

dd if=/dev/zero of=file count=1024 bs=1024 

a cero relleno de un archivo.

En lugar de eso quiero llenar un archivo. ¿Cómo puedo hacer eso?

No hay archivo/dev/one, entonces, ¿cómo puedo simular ese efecto a través de Bash Shell?

+0

Escribir un programa C para hacerlo, debe ser trivial. –

Respuesta

10

Prueba esto:

dd if=<(yes $'\01' | tr -d "\n") of=file count=1024 bs=1024 

Sustituto $'\377' o $'\xFF' si desea que todos los bits a ser queridos.

4

Bueno, se podría hacer esto:

dd if=/dev/zero count=1024 bs=1024 | 
    tr '\000' '\001' > file 
+0

Un relleno sería '\ 377', ¿no? – Neil

+0

Hmm, supongo que depende de lo que quieras. Esto llenará un archivo con bytes de valor '1' (' 01 01 01 01 ... '). Usando '\ 377' obtiene todos los * bits * configurados en 1 (entonces' FF FF FF FF ... '). Depende de los requisitos del OP. – larsks

23
tr '\0' '\377' < /dev/zero | dd bs=64K of=/dev/sdx 

Esto debería ser mucho más rápido. Elija sus tamaños de bloques (o agregue conteos) como lo necesita en. Escribir unos en un disco SSD hasta completar con un tamaño de bloque de 99M me dio un rendimiento de escritura de 350M/s.

+0

Confirmo que es al menos dos veces más rápido que la solución aceptada. Sin embargo, no noté ninguna mejora notable en el rendimiento al variar el tamaño de bloques (aunque hay una gran disminución del rendimiento sin el argumento bs). –

0
pv /dev/zero |tr \\000 \\377 >targetfile 

... donde \377 es la representación octal de 255 (un byte con todos los bits puestos a uno). Por qué tr solo funciona con números octales, no sé, pero tenga cuidado de no traducir inconscientemente esto a 3FF.


La sintaxis para usar tr es propensa a errores. Recomiendo la verificación de que está haciendo la traducción deseada ...

cat /dev/zero |tr \\000 \\377 |hexdump -C 

Nota: pv es una utilidad que sustituye cat y añade una indicación de progreso/tasa.

+1

Nota: Si intenta llenar un dispositivo completo, probablemente sea mejor evitar 'dd', ya que eso disminuirá la velocidad (por mucho) si no selecciona manualmente un valor' bs' óptimo. – nobar

+0

'pv' también dará una estimación del tiempo restante si tiene suficiente información para hacerlo. – nobar

+0

Mientras estás en ello, tal vez el prefijo con 'tiempo' y' bonito'. – nobar

Cuestiones relacionadas