Secondo episodio della serie sui comandi del terminale: rmdir, less, cp, shred, zip, unzip, chmod, chown, clear, whoami e man.

Guida ai comandi del terminale Linux e Mac OS (con esempi) - Parte 2

12-11-2026

Bentornato! Questo è il secondo episodio della serie dedicata ai comandi del terminale.

Se ti sei perso il primo, lo trovi qui: Guida ai comandi del terminale Linux e Mac OS (con esempi). Lì trovi pwd, ls, mkdir, cd, touch, rm, cat, echo, head e tail, che in questo articolo do per scontati.

Come nel primo episodio le gif sono registrate sul terminale di Mac OS: quasi tutti i comandi funzionano allo stesso modo anche su Linux, dove ci sono differenze te lo segnalo 😉

RMDIR

Remove Directory elimina una cartella, ma soltanto se è vuota.

È il fratello prudente di rm -r: se dentro la cartella c’è anche un solo file, rmdir si rifiuta di cancellarla e ti avvisa con un errore. Proprio per questo è comodo quando vuoi fare pulizia senza rischiare di perdere qualcosa per sbaglio.

Con il parametro -p puoi eliminare in un colpo solo una cartella e tutte le cartelle “padre” indicate nel path, sempre a patto che siano vuote.

LESS

less ti permette di leggere un file una schermata alla volta, senza stamparlo tutto in console come fa cat. È perfetto per i file lunghi, ad esempio i log.

Una volta aperto il file puoi muoverti con la tastiera:

  • spazio: va alla schermata successiva
  • b: torna alla schermata precedente
  • freccia giù / freccia su: scorre una riga alla volta
  • /testo: cerca “testo” nel file, con n passi al risultato successivo e con N al precedente
  • G: salta alla fine del file
  • g: torna all’inizio del file
  • q: esce

Nella gif in basso creo un file con i numeri da 1 a 200 e poi lo sfoglio con less.

Puoi usare less anche per sfogliare l’output di un altro comando, ti basta concatenarlo con una pipe:

progressify@mbpro16 ~ % ls -l /etc | less

CP

Copy copia file e cartelle. Il primo parametro è il file di origine, il secondo è la destinazione.

Se la destinazione è una cartella esistente il file viene copiato al suo interno, e in questo caso puoi indicare anche più file di origine.

Attenzione: se il file di destinazione esiste già, cp lo sovrascrive senza chiedere nulla.

Parametri utili:

  • -r: copia una cartella in maniera ricorsiva, con tutto il suo contenuto. Senza questo parametro le cartelle vengono saltate
  • -i: chiede conferma prima di sovrascrivere un file
  • -v: stampa il nome di ogni file copiato
  • -p: conserva permessi, proprietario e date del file originale

SHRED

Quando elimini un file con rm il suo contenuto resta sul disco finché non viene sovrascritto da altri dati, e con gli strumenti giusti si può recuperare.

shred risolve il problema: sovrascrive più volte il contenuto del file con dati casuali, così da renderlo irrecuperabile.

Parametri utili:

  • -v: mostra l’avanzamento
  • -n: numero di passate, di default sono 3
  • -z: aggiunge una passata finale di zeri, per nascondere il fatto che il file è stato “triturato”
  • -u: dopo averlo sovrascritto, elimina anche il file

Su Linux shred è già installato. Su Mac OS invece non è presente: puoi averlo installando le coreutils con Homebrew, e in quel caso il comando si chiama gshred. È quello che uso nella gif in basso.

progressify@mbpro16 ~ % brew install coreutils

Nota come dopo il primo gshred il file esiste ancora, ma è diventato di 4096 bytes: viene riempito tutto il blocco che occupava sul disco.

Attenzione: shred dà per scontato che i dati vengano sovrascritti “sul posto”. Su dischi SSD e su alcuni file system (ad esempio quelli con snapshot o copy-on-write) non è garantito, quindi non considerarlo una soluzione infallibile.

ZIP

zip crea un archivio compresso a partire da uno o più file. Il primo parametro è il nome dell’archivio, a seguire i file da inserire.

Su Mac OS lo trovi già installato, su Ubuntu e Debian potresti doverlo installare:

progressify@ubuntu:~$ sudo apt install zip unzip

Parametri utili:

  • -r: aggiunge una cartella in maniera ricorsiva, senza questo parametro verrebbe inserita vuota
  • -e: protegge l’archivio con una password
  • -9: usa il livello di compressione massimo (più lento), -1 quello minimo (più veloce)

UNZIP

unzip fa il lavoro opposto: estrae il contenuto di un archivio zip.

Parametri utili:

  • -l: elenca il contenuto dell’archivio senza estrarlo
  • -d: estrae i file nella cartella indicata, se non esiste la crea
  • -o: sovrascrive i file esistenti senza chiedere conferma
  • -n: non sovrascrive mai i file esistenti

Se nella cartella di destinazione esistono già file con lo stesso nome, unzip ti chiede cosa fare per ognuno di loro: nella gif rispondo A per sovrascriverli tutti.

CHMOD

Change Mode modifica i permessi di file e cartelle.

I permessi li hai già visti nell’output di ls -l, sono quella sequenza di lettere all’inizio di ogni riga:

-rwxr-xr--  1 progressify  staff  44 Nov 12 11:02 saluta.sh

Tolto il primo carattere, che indica il tipo di file, i restanti nove vanno letti a gruppi di tre: i primi tre sono i permessi del proprietario, poi quelli del gruppo e infine quelli di tutti gli altri utenti. Ogni lettera è un permesso: r lettura, w scrittura, x esecuzione.

Con chmod puoi indicare i permessi in due modi.

Il primo è la notazione simbolica: a chi (u proprietario, g gruppo, o altri, a tutti), cosa fare (+ aggiunge, - rimuove, = imposta) e quale permesso.

progressify@mbpro16 ~ % chmod u+x saluta.sh
progressify@mbpro16 ~ % chmod go-w saluta.sh

Il secondo è la notazione numerica: ogni permesso ha un valore (r vale 4, w vale 2, x vale 1) e per ognuno dei tre gruppi si indica la somma. Ad esempio:

  • 644: il proprietario legge e scrive, tutti gli altri leggono soltanto
  • 755: il proprietario fa tutto, gli altri leggono ed eseguono
  • 700: il proprietario fa tutto, gli altri non possono fare nulla

Con il parametro -R la modifica viene applicata in maniera ricorsiva a tutto il contenuto di una cartella.

Nella gif provo ad eseguire uno script che non ha il permesso di esecuzione, e poi rimedio.

CHOWN

Change Owner cambia il proprietario e il gruppo di file e cartelle.

Il primo parametro è il nuovo proprietario, il secondo è il file. Se vuoi cambiare anche il gruppo lo indichi dopo i due punti: utente:gruppo.

Per cedere un file ad un altro utente servono i permessi di amministratore, quindi nella maggior parte dei casi dovrai usarlo insieme a sudo.

Nella gif cedo un file a root e poi me lo riprendo, assegnandolo al gruppo admin.

Anche qui il parametro -R applica la modifica in maniera ricorsiva. Un classico su un server web Linux:

progressify@ubuntu:~$ sudo chown -R www-data:www-data /var/www/html

CLEAR

clear pulisce il terminale e ti riporta con il prompt in cima alla finestra. Tutto qui 😃

Non cancella nulla dalla cronologia dei comandi, serve soltanto a fare ordine sullo schermo.

Un’alternativa ancora più veloce è la scorciatoia da tastiera CTRL + L.

WHOAMI

whoami, letteralmente “chi sono io”, stampa il nome dell’utente con cui stai eseguendo i comandi.

Sembra banale, ma diventa utile quando lavori su più server o cambi spesso utente e vuoi essere sicuro di chi sei prima di lanciare un comando delicato.

Come vedi eseguendolo con sudo la risposta diventa root: è la prova che sudo esegue il comando come amministratore.

MAN

Ho lasciato per ultimo il comando più importante 😉

Manual apre il manuale di un comando: descrizione, parametri accettati ed esempi. Tutti i parametri che ti ho elencato in questo articolo li trovi lì, insieme a molti altri.

Il manuale viene aperto con less, quindi lo sfogli con gli stessi tasti visti prima: spazio per avanzare, /testo per cercare, q per uscire.

Se non ricordi il nome di un comando puoi cercarlo per parola chiave con man -k, mentre whatis ti restituisce soltanto la descrizione breve.

progressify@mbpro16 ~ % man -k zip

Conoscevi già i comandi presenti in questo articolo? Quale vorresti vedere nel prossimo episodio?

Scrivimelo nei commenti o nel canale Telegram

AP

 

Antonio Porcelli @progressify

Antonio Porcelli

@progressify

Commenta l'articolo