Se lavori come sviluppatore, saper usare il terminale è una competenza fondamentale. Ecco una lista di comandi essenziali divisi per categoria.
1. Navigazione e gestione file#
pwd - stampa la directory di lavoro corrente
ls - elenca i file nella directory corrente
ls -la - elenca tutti i file (inclusi quelli nascosti) con i dettagli
cd <dir> - cambia directory
cd .. - vai alla directory superiore
cd ~ - vai alla directory home dell’utente
cd - - torna alla directory precedente
mkdir <dir> - crea una nuova directory
mkdir -p <path/to/dir> - crea directory annidate
touch <file> - crea un file vuoto o ne aggiorna il timestamp
cp <source> <dest> - copia un file
cp -r <source> <dest> - copia una directory con tutto il suo contenuto
mv <source> <dest> - sposta o rinomina file e directory
rm <file> - rimuove un file
rm -rf <dir> - rimuove una directory e tutto il suo contenuto, senza chiedere conferma
Attenzione:
rmnon usa il cestino. Conrm -rfquello che cancelli è perso per sempre: controlla due volte il percorso prima di premere Invio.
2. Visualizzazione e ricerca#
cat <file> - mostra il contenuto di un file
less <file> - visualizza un file con lo scorrimento (q per uscire)
head -n 10 <file> - mostra le prime 10 righe
tail -n 10 <file> - mostra le ultime 10 righe
tail -f <file> - segue le aggiunte al file in tempo reale (utile per i log)
grep "pattern" <file> - cerca testo in un file
grep -rn "pattern" . - cerca testo ricorsivamente nella directory corrente, mostrando i numeri di riga
find . -name "*.js" - trova file per nome
wc -l <file> - conta le righe di un file
3. Pipe e redirezione#
Il vero potere del terminale sta nel combinare i comandi.
comando1 | comando2 - passa l’output del primo comando come input al secondo
comando > file.txt - scrive l’output in un file (sovrascrivendolo)
comando >> file.txt - aggiunge l’output in fondo a un file
comando 2> errori.log - salva solo gli errori in un file
comando > out.log 2>&1 - salva output ed errori nello stesso file
# I 5 file più grandi nella cartella corrente
du -sh * | sort -rh | head -n 5
# Quante righe di un log contengono "ERROR"
grep -c "ERROR" app.log4. Permessi e proprietà#
chmod +x <file> - rende un file eseguibile
chmod 755 <file> - permessi rwx al proprietario, r-x a gruppo e altri utenti
chmod 644 <file> - permessi rw- al proprietario, r-- a gruppo e altri (tipico per i file di testo)
chown user:group <file> - cambia proprietario e gruppo
sudo <comando> - esegue un comando con i privilegi di amministratore (root)
5. Processi e sistema#
ps aux - mostra tutti i processi in esecuzione
top - monitor dinamico di processi e risorse
htop - versione interattiva e più leggibile di top (spesso va installato a parte)
kill <pid> - chiede a un processo di terminare, dato il suo PID
kill -9 <pid> - termina forzatamente un processo che non risponde
killall <nome> - termina tutti i processi con un certo nome
df -h - mostra lo spazio disponibile sui dischi
du -sh <dir> - mostra la dimensione totale di una directory
free -h - mostra l’utilizzo della memoria RAM
uname -a - mostra informazioni sul kernel e sul sistema
6. Rete#
ping <host> - verifica se un host è raggiungibile
curl <url> - trasferisce dati da/verso un server
curl -I <url> - mostra solo gli header della risposta
wget <url> - scarica un file dal web
ss -tuln - mostra le porte in ascolto (sostituisce il vecchio netstat -tuln)
ip a - mostra le interfacce di rete e gli indirizzi IP
ssh user@host - connessione remota sicura
scp <file> user@host:<path> - copia sicura di file tra host
7. Pacchetti e servizi#
sudo apt update && sudo apt upgrade - aggiorna l’elenco dei pacchetti e il sistema (Debian/Ubuntu; su Fedora si usa dnf)
sudo apt install <pacchetto> - installa un pacchetto
systemctl status <servizio> - mostra lo stato di un servizio (es. nginx)
sudo systemctl restart <servizio> - riavvia un servizio
sudo systemctl enable <servizio> - avvia il servizio automaticamente all’accensione
journalctl -u <servizio> -f - segue in tempo reale i log di un servizio
8. Archivi e compressione#
tar -czvf archivio.tar.gz <dir> - crea un archivio compresso
tar -xzvf archivio.tar.gz - estrae un archivio compresso
zip -r archivio.zip <dir> - crea un archivio zip
unzip archivio.zip - estrae un archivio zip
9. Variabili, ambiente e aiuto#
env - mostra le variabili d’ambiente
export VAR=valore - imposta una variabile d’ambiente
echo $VAR - stampa il valore di una variabile
which <comando> - mostra il percorso del programma che verrà eseguito
history - mostra la cronologia dei comandi eseguiti
alias nome='comando' - crea un alias per un comando
man <comando> - apre il manuale di un comando (q per uscire)
Bonus: editor da terminale#
nano <file> - editor di testo semplice (Ctrl + O per salvare, Ctrl + X per uscire)
vim <file> - editor di testo avanzato (:wq per salvare e uscire, :q! per uscire senza salvare)
Conoscere questi comandi ti renderà molto più produttivo e indipendente nel tuo ambiente di sviluppo!




