Molti usano un Mac per anni senza aprire mai il Terminale, e va benissimo. Ma sotto l'interfaccia grafica c'è un sistema di tradizione Unix, con una shell, una struttura di cartelle precisa e comandi che permettono di fare in pochi secondi ciò che con il mouse richiede molti passaggi. Chi conosce già Linux si troverà quasi a casa; con qualche differenza che vale la pena conoscere prima di copiare comandi da una guida pensata per un altro sistema.
Il Terminale e la shell
L'app Terminale si trova in Applicazioni > Utility, o si apre cercandola con Spotlight. Da macOS Catalina la shell predefinita è zsh, che per l'uso quotidiano si comporta in modo molto simile a Bash. Le impostazioni personali vanno in ~/.zshrc; le variabili come il PATH possono stare anche in ~/.zprofile.
I comandi di base sono quelli che si usano su Linux: ls, cd, cp, mv, grep, find. Attenzione però: molti di questi provengono dalla tradizione BSD e non da GNU, e alcune opzioni differiscono. L'esempio classico è sed -i, che su macOS richiede un argomento per l'estensione del file di backup, anche vuoto: sed -i '' 's/vecchio/nuovo/' file.txt. Anche date e stat hanno opzioni diverse da quelle di Linux.
Comandi propri di macOS
Alcuni strumenti esistono solo sul Mac e sono molto comodi:
| Comando | Cosa fa |
|---|---|
open file.pdf |
apre un file con l'applicazione predefinita |
open . |
apre la cartella corrente nel Finder |
open -a Safari pagina.html |
apre un file con un'app precisa |
pbcopy, pbpaste |
scrivono e leggono gli appunti |
mdfind |
cerca con l'indice di Spotlight |
caffeinate |
impedisce lo stop finché è attivo |
softwareupdate -l |
elenca gli aggiornamenti di sistema |
diskutil list |
elenca dischi e volumi |
Per esempio, cat chiave.pub | pbcopy mette il contenuto di un file negli appunti, pronto da incollare in una pagina web. caffeinate -i lanciato prima di un lungo trasferimento evita che il Mac vada in stop a metà.
Homebrew: il gestore di pacchetti
macOS non include un gestore di pacchetti per gli strumenti da riga di comando. Il riferimento, di fatto, è Homebrew, un progetto indipendente. Si installa con il comando riportato sul suo sito ufficiale e, una volta presente, funziona così:
brew install wget
brew install --cask firefox
brew update
brew upgrade
brew list
brew uninstall wget
La differenza tra formula e cask è utile da conoscere: le formule sono programmi da riga di comando e librerie, i cask sono applicazioni con interfaccia grafica, installate nella cartella Applicazioni. Sui Mac con processore Apple Silicon Homebrew si installa in /opt/homebrew, su quelli con processore Intel in /usr/local; è il motivo per cui alcune guide indicano percorsi diversi.
Un consiglio pratico: brew doctor segnala i problemi di configurazione più comuni, e brew cleanup elimina le vecchie versioni scaricate, che col tempo occupano spazio.
launchd: i servizi del Mac
Sul Mac il ruolo che su Linux ha systemd spetta a launchd, il primo processo avviato dal sistema. Gestisce sia i servizi di sistema sia quelli dell'utente, descritti in file .plist in formato XML. Le cartelle principali sono:
~/Library/LaunchAgents: servizi dell'utente, avviati al suo accesso;/Library/LaunchAgentse/Library/LaunchDaemons: servizi installati da programmi di terze parti, per tutti gli utenti;/System/Library/...: servizi di Apple, da non toccare.
Il comando di gestione è launchctl. Per vedere i servizi dell'utente si usa launchctl list. Molti programmi di terze parti installano agenti in queste cartelle per avviarsi in automatico o controllare aggiornamenti. Quando un Mac rallenta senza motivo apparente, nel mio lavoro guardo proprio qui: agenti dimenticati di applicazioni disinstallate continuano a volte a partire a ogni accesso. Nelle versioni recenti di macOS anche Impostazioni di Sistema > Generali > Elementi login mostra quali app hanno elementi in background e permette di disattivarli.
Monitoraggio Attività e i processi
Monitoraggio Attività è l'equivalente grafico di top. Le schede più utili sono CPU, Memoria ed Energia. Nella scheda Memoria conta soprattutto il grafico Pressione memoria: se è verde, il sistema ha memoria a sufficienza anche se la RAM risulta quasi piena, perché macOS comprime le pagine poco usate prima di ricorrere allo swap. Dal Terminale top -o cpu ordina i processi per uso del processore.
Log e diagnostica
L'app Console mostra i messaggi di sistema e i rapporti sugli arresti anomali delle applicazioni. Dal Terminale c'è il comando log:
log show --last 1h --predicate 'eventMessage contains "error"'
log stream --process Safari
Il primo mostra i messaggi dell'ultima ora che contengono «error», il secondo segue in diretta quelli di un processo.
Dischi e protezione del sistema
diskutil gestisce dischi e volumi: diskutil list per vederli, diskutil info disk2 per i dettagli, diskutil eraseDisk per inizializzarli, con le stesse cautele di qualsiasi operazione distruttiva. Il filesystem è APFS, con istantanee usate anche da Time Machine.
Va ricordato che il volume di sistema di macOS è in sola lettura e protetto dalla System Integrity Protection. È normale che sudo non permetta di modificare file sotto /System: le personalizzazioni vanno in /usr/local, /opt o nella propria cartella utente.
In sintesi
- Il Terminale usa zsh; i comandi sono simili a Linux, ma molte opzioni seguono BSD.
open,pbcopy,mdfindecaffeinatesono scorciatoie proprie del Mac.- Homebrew gestisce programmi da riga di comando (formule) e applicazioni (cask).
- launchd e i file
.plistinLaunchAgentscontrollano cosa parte in automatico. - Il volume di sistema è in sola lettura: le modifiche vanno nelle cartelle dell'utente o in
/opt.