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.
viconvi -w randomfiley pida a alguien que nunca ha vistovipara salir del programa. ;)Respuestas:
En la mayoría de las unidades:
Si
headno comprende elGsufijo, puede especificar el tamaño en bytes:Si
headno entiende la-copción (es común pero no POSIX; probablemente tenga OpenBSD):No lo use
/dev/randomen Linux, use/dev/urandom.fuente
headno entiende-cen mi máquina Solaris 10.headpuede leer/dev/urandom, perotailno puede.tailprimero 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=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 siddno tiene la extensión GNU.)countEs el número de bloques para leerify escribirof./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.
fuente
1Mno están disponibles en todas lasddvariantes estándar . Si su versión deddse ve afectada, usebs=1048576.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.fuente