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
- il video su YouTube
- esempi e comandi della puntata su GitHub
- random(4) — /dev/random e /dev/urandom
- head — manuale GNU coreutils
- dd — manuale GNU coreutils
- /dev/random — su Wikipedia
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!
