software,

Come controllare lo spazio occupato sul Mac con il Terminale

Sabino Maggi Sabino Maggi Segui 3-May-2023 · 10 minuti di lettura
Condividi

Il Terminale di macOS è l’applicazione installata di default su tutte le versioni di macOS per accedere alla shell, l’interfaccia a linea di comando del sistema operativo. La maggior parte dei comandi della shell è identica in tutti i sistema operativi basati su UNIX, che oggi sono principalmente Linux e macOS. Una cosa che ci permette di usare gli stessi comandi su questi due sistemi operativi, così come sulle varie incarnazioni disponibili di BSD Unix e perfino su Windows, almeno dopo aver installato il Windows Subsystem for Linux.

Del Terminale di macOS ho scritto parecchie volte su questo blog. Riguardando i vecchi post ho ritrovato questa introduzione all’uso del Terminale e ai suoi comandi principali che mi pare ancora attuale, a parte il fatto che nel frattempo la shell di default di macOS è diventata zsh al posto di bash. Ma questo cambiamento dovrebbe essere quasi trasparente per l’utente finale, dato che zsh è una versione estesa e compatibile quasi al 100% di bash (le principali differenze fra le due shell sono elencate qui e, in termini più tecnici, anche qui).

Oggi però voglio andare oltre i soliti, un po’ noiosi, comandi di base e proporre un comando poco conosciuto ma che può fare comodo nella gestione giornaliera del Mac.

Una premessa: tanti utenti del Mac sono spaventati dal Terminale, magari vorrebbero usarlo ma temono di far danni. Non è il caso di questo comando, che al massimo può produrre delle lunghe liste di file, ma non può in nessun modo danneggiare il sistema (in ogni caso, per danneggiare un sistema operativo come macOS bisogna usare il Terminale in modo davvero scriteriato).

Altra premessa: per non rendere l’esposizione troppo pesante suppongo che chi legge sappia cos’è una shell o qual è la cartella Home (o Inizio) di un utente. Chi ha bisogno di un ripasso, può trovare qui una breve spiegazione dei concetti principali relativi a macOS e al Terminale.

Quanto spazio occupano i miei file?

Questa è una preoccupazione ricorrente in chi ha un disco di capacità ridotta (i 256 GB di spazio sui modelli base di MacBook Air/Pro e Mini sono davvero troppo pochi), oppure un disco grande ma ormai pieno di file.

Il comando base per sapere quanto spazio occupano i file presenti sul Mac è du (ovvero disk usage), che riporta la dimensione (in blocchi) della cartella corrente e di tutte le cartelle contenute al suo interno.

Ad esempio, se voglio vedere quanto spazio occupano i sorgenti in Markdown di tutti i post di questo blog, mi sposto con cd nella cartella ~/Documents/Articoli\ Mac/Blog/posts del mio Mac (zsh riporta il nome della cartella corrente immediatamente prima del simbolo del prompt %) ed eseguo du, ottenendo

dove il . indica per convenzione la cartella corrente, che a sua volta contiene la cartella TODO dove, come è facilmente immaginabile, conservo i post in lavorazione. La dimensione totale occupata dai miei post è di 7080 blocchi, di cui 160 blocchi sono utilizzati da TODO.

Comandi e interruttori

Usare du così com’è ha poco senso, perché la dimensione in blocchi può essere significativa per un esperto di hardware ma non è facilmente comprensibile per la maggior parte degli utenti, abituati a ragionare in termini di kilobyte, megabyte e gigabyte.1

Meglio quindi aggiungere a du lo switch --si, con il quale du riporta le dimensioni delle cartelle in kB, MB o GB, scegliendo l’unità migliore in base alle dimensioni di ciascuna cartella. Con --si, 1 kB equivale a 1000 byte, 1 MB a 1000 kB e così via, proprio come fa il Finder. Se vogliamo che le dimensioni siano espresse utilizzando i tradizionali multipli di 1024 dobbiamo utilizzare lo switch -h al posto di --si, ma sul Mac non ha molto senso.

Se eseguo il comando du --si nella cartella ~/Documents/Articoli\ Mac/Blog/posts ora ottengo,

da cui si nota che i quasi 450 file Markdown contenuti in questa cartella occupano appena 3.6 MB e potrebbero stare tranquillamente in 3 floppy disk (eh sì, usare un formato testo per scrivere documenti è sempre molto efficiente).

I comandi del Terminale includono spesso uno o più _switch_, cioè delle opzioni che modificano il comportamento del comando per adattarlo alle necessità dell'utente. Gli switch sono indicati da un trattino seguito da una lettera e, a volte, da un parametro che può essere un numero o una stringa. Ad esempio, il comando `ls -a` mostrerà anche i file nascosti, mentre il comando `shutdown -r now` riavvierà immediatamente il computer. Nel caso in cui si debbano utilizzare più di uno switch, è possibile definirli singolarmente, come ad esempio in `ls -a -l`, oppure inserirli tutti insieme dopo il trattino, come in `ls -al`. Gli switch più complessi possono essere indicati anche da due trattini seguiti da una stringa e dagli eventuali parametri, come lo switch `--si` appena visto.

Altri switch utili del comando du sono:

  • -a: calcola lo spazio occupato non solo dalle cartelle ma anche dai file contenuti al loro interno.

    Ad esempio, se provo ad eseguire du a partire dalla mia Home ottengo una lista di più di 60.000 cartelle, ma se uso du -a la lista cresce fino a comprendere quasi mezzo milione di file e cartelle (del comando collegato wc ho già scritto un bel po’ di tempo fa, qui serve a contare il numero di righe riportate da du).

  • -d seguito da un numero: definisce il livello di visualizzazione delle cartelle tramite il numero associato allo switch. Ad esempio, -d 1 mostrerà solo le cartelle di primo livello, cioè quelle contenute nella cartella di partenza, mentre -d 2 mostrerà anche le cartelle contenute all’interno delle cartelle di primo livello, e così via.

    Se provo ad eseguire du -d 1 nella mia Home ottengo,

    da cui si capisce immediatamente che le cartelle che occupano più spazio sono Music e Library (c’è da dire che la mia Home è molto più grande, perché la maggior parte dei file si trova su un disco esterno collegato alla Home tramite dei collegamenti simbolici, ma questa è un’altra storia). Se avessi bisogno di fare spazio sul disco saprei subito dove concentrarmi, invece di perdere tempo ad esaminare minuziosamente tutte le cartelle elencate di default da du.

  • -t seguito da un numero: definisce la dimensione minima che deve avere una cartella per essere visualizzata. Non è comodissimo, perché la dimensione va specificata in byte, però permette di filtrare rapidamente le cartelle più grandi, come in questo caso in cui ho scelto di visualizzare solo le cartelle più grandi di 1 MB (ovvero 1000000 byte).

  • -I seguito dal percorso di una cartella fra virgolette: permette di escludere la cartella specificata dal conteggio dello spazio occupato. È possibile usare una espressione regolare per escludere più cartelle in un solo colpo.

    Ad esempio, -I "Library", esclude la sola cartella Library, oppure -I "D*" esclude tutte le cartelle che iniziano con il punto o infine, come è mostrato qui sotto, -I ".[a-z]" che esclude dalla visualizzazione tutte le cartelle il cui nome inizia con il punto seguito da una lettera maiuscola o minuscola (sono le cosiddette cartelle nascoste che contengono i file di configurazione di certe applicazioni e che in genere non sono molto grandi).

  • -k, -m, -g: forzano du a riportare tutte le dimensioni rispettivamente in kB, MB o GB. Analogamente ad -h, le dimensioni sono espresse in multipli di 1024. Se sulla stessa riga di comando si inserisce più di uno switch dimensionale, -g, -h, -k, -m e --si, viene utilizzato solo l’ultimo specificato.

    Questi switch servono soprattutto quando si vogliono ordinare le directory in base alle dimensioni, inviando l’output di du al comando sort -n -r, come nell’esempio qui sotto (dato che con questi switch 1 GB corrisponde a 1024 MB, i valori riportati qui sotto sono leggermente diversi rispetto a quelli dell’immagine precedente che usa --si, e quindi i multipli di 1000).

Ma ne vale la pena?

Ma perché usare du quando abbiamo a disposizione il Finder? Prima di tutto perché il Terminale è molto più efficiente, con il Finder possiamo esaminare una sola cartella alla volta, il Terminale invece ci permette di analizzare lo stato un gran numero di cartelle tutte insieme, spostandosi molto più velocemente fra una cartella e l’altra rispetto a quanto sia possibile fare con il Finder.

Un altro vantaggio non da poco è la possibilità di salvare su un file l’output del comando du, in modo da poterlo esaminare con calma in un editor di testo, o magari perché vogliamo tenere traccia dello stato delle cartelle nel corso del tempo. Ad esempio potrei salvare nel file du.txt sul Desktop l’elenco completo delle cartelle contenute in Home,

per poi esaminarlo con calma con TextMate o BBEdit, oppure direttamente nel Terminale a colpi di awk, grep e sed e di espressioni regolari (ma questo richiederebbe almeno un articolo a sé stante).

Infine, abbiamo appena scoperto che il Finder non è molto affidabile quando si tratta di calcolare lo spazio occupato in un disco formattato in APFS, per cui meglio sentire un’altra campana. In questo caso specifico, il Finder mi dice che la mia Home occupa 130.7 GB

mentre secondo du sono solo 128 GB. Non è una grande differenza, però c’è da chiedersi chi ha ragione.

Se queste considerazioni non bastano a convincervi, nel prossimo post troverete delle soluzioni alternative utili a visualizzare rapidamente lo spazio occupato sul vostro disco. A presto!

  1. Inoltre, il numero di blocchi riportati da du varia a seconda del sistema operativo e della configurazione del file system, rendendo ancora più difficile la comprensione della dimensione effettiva dei file. 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento