Estoy usando el shell bash y me gustaría canalizar la salida del comando openssl rand -base64 1000
al comando dd
como dd if={output of openssl} of="sample.txt bs=1G count=1
. Creo que puedo usar variables, pero no estoy seguro de cuál es la mejor manera de hacerlo. La razón por la que me gustaría crear el archivo es porque me gustaría un archivo de 1GB con texto aleatorio.
88
/dev/urandom
genera un archivo binario y no un archivo de texto verdadero.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt
.dd
Lee 750,000,000 bytes/dev/urandom
y los canalizauuencode
.uuencode
codifica su entrada en una forma de codificación base64 (no necesariamente coherente con otros programas). En otras palabras, esto convierte los datos binarios en texto. Utilicé 750M porque confié en la declaración de Grawity de que la codificación base64 expande los datos en un 33%, por lo que debe solicitar ¾ tantos datos binarios como desee en su archivo de texto.dd: warning: partial read (33554431 bytes); suggest iflag=fullblock
que creará un archivo truncado, agregue laiflag=fullblock
bandera, entonces funciona.Cree un archivo de contenido aleatorio de 1GB.bin:
fuente
iflag=fullblock
fue la adición necesaria en comparación con otras respuestas.Si desea EXACTAMENTE 1GB, puede usar lo siguiente:
openssl rand -out $ testfile -base64 792917038; truncar -s-1 $ archivo de prueba
El comando openssl hace que un archivo sea exactamente 1 byte demasiado grande. El comando truncar recorta ese byte.
fuente
-base64
. Eliminarlo dará como resultado un archivo con el tamaño correcto.Prueba este script.
Este script puede funcionar siempre y cuando no te importe usarlo
/dev/random
.fuente
/dev/random
en esto a menos que haya una muy buena razón para hacerlo./dev/urandom
Es mucho más barato.$var=(command)
no es una sintaxis válida en este contexto.random=$(openssl rand -base64 1000)
. Aunque me preguntaría sibash
le permitiría asignar un valor de gigabyte de longitud a una variable. E incluso si lo dicesrandom=$(openssl rand -base64 1000)
, lo posteriorif=$random
no tiene sentido.