GNU/Linux: creare file random di dimensioni date

Questa puntata nasce da una domanda di Sara: come si crea un file di una dimensione precisa, pieno di dati casuali? Serve per fare prove, per testare dei comandi, o per trasferire un file in rete e misurare la velocità della connessione. La risposta è corta e ci dà modo di conoscere un file molto particolare di Linux.

Il problema

Vogliamo creare un file che si chiama test.txt, di 5 MB, che contenga dati completamente casuali.

La soluzione

Si combinano due strumenti che conosciamo già: il comando head e la redirezione dell’output. Head di solito preleva le prime righe di un file, ma con l’opzione -c preleva i primi N byte. La sintassi accetta anche i suffissi: 5M significa 5 megabyte.

Il file da cui prelevare è /dev/random, un file speciale di Linux che ha il compito di fungere da generatore di casualità del sistema: ogni volta che lo si legge restituisce dati imprevedibili. Il tutto va reindirizzato su test.txt:

head -c 5M /dev/random > test.txt

Il sistema legge 5 megabyte da /dev/random e li scrive nel file. Sui kernel più vecchi, se la macchina fatica a trovare abbastanza casualità, può metterci un po’: pazientate.

Per controllare la dimensione, e il contenuto:

ls -l test.txt
cat test.txt

Il contenuto è esattamente quello che ci aspettiamo: un sacco di roba senza senso. Se il vostro terminale impazzisce a causa dei caratteri di controllo, digitate reset e tutto torna a posto.

Una nota sui suffissi

Con head -c il suffisso M indica multipli di 1024 x 1024 byte, mentre MB indica multipli di 1000 x 1000. Per un file di 5 MB esatti nel senso dei produttori di dischi:

head -c 5MB /dev/random > test.txt

Esiste anche /dev/urandom, che non si ferma mai in attesa di casualità e funziona con la stessa sintassi:

head -c 5M /dev/urandom > test.txt

Quando torna utile

  • provare un comando (ad esempio un trasferimento o una compressione) su un file di dimensione nota;
  • creare un file da spedire in rete per misurare la velocità;
  • riempire una cartella di materiale per fare esperimenti.

Conclusione

Una tecnica semplicissima, ma utile in tantissime occasioni. Ci ha fatto usare head insieme alla redirezione, e ci ha introdotto /dev/random e l’esistenza in Linux di file speciali con compiti speciali: ne incontreremo altri man mano che esploriamo il sistema. Grazie Sara per la domanda!

Link e risorse

Sostieni il canale

PER SOSTENERE IL CANALE BASTANO UN LIKE E UN’ISCRIZIONE!

questi link sono affiliati Amazon, acquistando i libri che ti consiglio sostieni il canale!