mai più senza
Published in

mai più senza

Le utility Linux, sono come gli oggetti nella tasca di Eta Beta

L’esempio di sponge

Passano gli anni e non finisco mai di scoprire le utility del mondo Linux. Anzi preciso meglio: utility del mondo Linux che mi tornano utili.

La più recente è sponge. Quando l’ho scoperta, per caso, ho letto la descrizione e ho pensato “e allora?”; mi sembrava totalmente inutile.
Però il sito che me l’ha fatta adocchiare è “figo”, quindi sospettavo fossi tonto io a non capirne l’utilità. Era così, e leggi e rileggi, ho capito anche io perché.

Quando nella shell di Linux scrivi su file — cat ./input.csv >./output.csv — il file di output viene subito creato e gradualmente “riempito” con i dati che riga per riga arriveranno dall’input.
Quindi se ad esempio voglio applicare il comando head a un file per estrarre le prime 10 righe e sovrascriverlo, lo distruggerò, perché viene creato subito e quindi sarà vuoto. Il comando <./input.csv head >./input.csv sarebbe distruttivo.

sponge risolve questo problema: prima di creare l’output si prende in memoria tutto ciò che gli arriva e poi crea il file. Quindi può anche sovrascrivere l’input, perché lo farà “a cose fatte”:

<./input.csv head | sponge ./input.csv

Tante volte — se l’utility usata non ce l’ha tra le opzioni — per sovrascrivere un file a valle di un processo è necessario creare un file temporaneo. sponge dà la possibilità di non farlo.

Occhio: mette tutto in memoria, quindi attenzione alle dimensioni dell’input.

--

--

di tutto quel superfluo che è indispensabile

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store