Estoy usando el shell bash y me gustaría canalizar la salida del comando openssl rand -base64 1000al comando ddcomo 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/urandomgenera un archivo binario y no un archivo de texto verdadero.dd if=/dev/urandom bs=750M count=1 | uuencode my_sample > sample.txt.ddLee 750,000,000 bytes/dev/urandomy los canalizauuencode.uuencodecodifica 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=fullblockque creará un archivo truncado, agregue laiflag=fullblockbandera, entonces funciona.Cree un archivo de contenido aleatorio de 1GB.bin:
fuente
iflag=fullblockfue 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/randomen esto a menos que haya una muy buena razón para hacerlo./dev/urandomEs mucho más barato.$var=(command)no es una sintaxis válida en este contexto.random=$(openssl rand -base64 1000). Aunque me preguntaría sibashle permitiría asignar un valor de gigabyte de longitud a una variable. E incluso si lo dicesrandom=$(openssl rand -base64 1000), lo posteriorif=$randomno tiene sentido.