Por lo que vale, headno entiende -cen mi máquina Solaris 10.
rahmu
2
Interesante que headpuede leer /dev/urandom, pero tailno puede.
Stefan Lasiewski
22
@StefanLasiewski tailprimero intenta ir al final del archivo de entrada, lo que lleva una eternidad (literalmente).
Gilles
Ah, como 'tail / dev / infinity', si existiera tal dispositivo.
Stefan Lasiewski
3
@StefanLasiewski También tienes /dev/zero, si no te gusta la variedad.
Gilles
35
Suponiendo que los datos pseudoaleatorios son suficientes, dd if=/dev/urandom of=target-file bs=1M count=1000hará lo que desee.
dd (1) leerá bloques de datos de un archivo de entrada y los escribirá en un archivo de salida. El lenguaje de línea de comandos es un poco peculiar, pero es una de esas herramientas realmente útiles que vale la pena dominar los conceptos básicos.
En este caso ifes un archivo de entrada, ofes un archivo de salida, bses "tamaño de bloque", y utilicé la extensión GNU para establecer el tamaño más convenientemente. (También puede usar 1048576 si ddno tiene la extensión GNU.) countEs el número de bloques para leer ify escribir of.
/dev/urandomes una mejor opción que /dev/randomporque, en Linux, recurrirá a datos pseudoaleatorios fuertes en lugar de bloquear cuando se agoten los datos realmente aleatorios.
También puede considerar http://www.random.org/ como otra ruta para obtener algunos datos aleatorios sin tener que generarlos usted mismo.
Una nota: las especificaciones de la unidad como 1Mno están disponibles en todas las ddvariantes estándar . Si su versión de ddse ve afectada, use bs=1048576.
Chris Down
44
El comando de ejemplo creará un archivo de recuento de 1,000,000 de bloques cada uno de tamaño 1 MB. Eso es aproximadamente 1 TB (1M x 1MB), no 1 GB (que sería 1K x 1MB). Por otro lado, hasta cierto punto, aumentar el tamaño del bloque y reducir el recuento de bloques tiende a producir un mejor rendimiento para una cantidad dada de datos de salida.
un CVn
2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee 5000kb
Lo usé para generar datos de caracteres aleatorios de 5 MB. Si necesita un tamaño diferente, cambie el -cvalor de head, cambie el nombre del archivo, ejecute y espere hasta que se complete la ejecución.
vi
convi -w randomfile
y pida a alguien que nunca ha vistovi
para salir del programa. ;)Respuestas:
En la mayoría de las unidades:
Si
head
no comprende elG
sufijo, puede especificar el tamaño en bytes:Si
head
no entiende la-c
opción (es común pero no POSIX; probablemente tenga OpenBSD):No lo use
/dev/random
en Linux, use/dev/urandom
.fuente
head
no entiende-c
en mi máquina Solaris 10.head
puede leer/dev/urandom
, perotail
no puede.tail
primero intenta ir al final del archivo de entrada, lo que lleva una eternidad (literalmente)./dev/zero
, si no te gusta la variedad.Suponiendo que los datos pseudoaleatorios son suficientes,
dd if=/dev/urandom of=target-file bs=1M count=1000
hará lo que desee.dd (1) leerá bloques de datos de un archivo de entrada y los escribirá en un archivo de salida. El lenguaje de línea de comandos es un poco peculiar, pero es una de esas herramientas realmente útiles que vale la pena dominar los conceptos básicos.
En este caso
if
es un archivo de entrada,of
es un archivo de salida,bs
es "tamaño de bloque", y utilicé la extensión GNU para establecer el tamaño más convenientemente. (También puede usar 1048576 sidd
no tiene la extensión GNU.)count
Es el número de bloques para leerif
y escribirof
./dev/urandom
es una mejor opción que/dev/random
porque, en Linux, recurrirá a datos pseudoaleatorios fuertes en lugar de bloquear cuando se agoten los datos realmente aleatorios.También puede considerar http://www.random.org/ como otra ruta para obtener algunos datos aleatorios sin tener que generarlos usted mismo.
fuente
1M
no están disponibles en todas lasdd
variantes estándar . Si su versión dedd
se ve afectada, usebs=1048576
.Lo usé para generar datos de caracteres aleatorios de 5 MB. Si necesita un tamaño diferente, cambie el
-c
valor de head, cambie el nombre del archivo, ejecute y espere hasta que se complete la ejecución.fuente