È uscito il Corso Java Completo
Torna al blog

Comandi Linux essenziali: quelli che usi davvero

I comandi Linux che servono ogni giorno: navigare, gestire file, cercare, leggere log, gestire processi — e quelli da usare con prudenza.

Edoardo Midali

Edoardo Midali

Developer · Content Creator

7 min di lettura

Le liste di "100 comandi Linux" sono inutili per due motivi: nessuno li ricorda, e novanta di quelli non li userai mai. Nella pratica quotidiana ne servono circa venticinque, e con questi si gestisce un server, si legge un log e si risolve la maggior parte delle situazioni. In questo articolo trovi quelli, raggruppati per cosa devi fare.

Come si leggono i comandi

Prima dell'elenco, la struttura — perché capirla vale più di memorizzare.

comando -opzioni argomento
  • Le opzioni brevi hanno un trattino: ls -l
  • Le opzioni lunghe ne hanno due: ls --all
  • Si combinano: ls -la è ls -l -a

Il comando più importante di tutti è quello che ti spiega gli altri:

man ls        # il manuale completo
ls --help     # la versione breve

Nel dubbio, man. Non è un ripiego: è il modo in cui si lavora davvero.

Navigare

pwd                # dove sono
ls                 # cosa c'è qui
ls -la             # tutto, con dettagli e file nascosti
cd /var/log        # vai in quella cartella
cd ..              # sali di un livello
cd ~               # vai alla tua home
cd -               # torna dove eri prima

I percorsi: quelli che iniziano con / partono dalla radice del sistema (assoluti), gli altri dalla posizione attuale (relativi). ~ è una scorciatoia per la tua cartella personale.

cd - è poco conosciuto e comodissimo: alterna tra le ultime due posizioni.

File e cartelle

mkdir progetto          # crea una cartella
mkdir -p a/b/c          # crea l'intero percorso
touch file.txt          # crea un file vuoto
cp origine destinazione # copia
cp -r cartella/ altra/  # copia una cartella
mv vecchio nuovo        # sposta o rinomina
rm file.txt             # elimina
rm -r cartella/         # elimina una cartella

mv fa due cose: sposta e rinomina. Rinominare è spostare nello stesso posto con un nome diverso.

Attenzione a rm: non esiste il cestino. Quello che elimini è eliminato. È la differenza che coglie impreparato chi arriva da altri sistemi.

Leggere file

cat file.txt        # mostra tutto
less file.txt       # sfoglia (q per uscire)
head -20 file.txt   # prime 20 righe
tail -20 file.txt   # ultime 20 righe
tail -f log.txt     # SEGUE il file in tempo reale

tail -f è il comando più usato da chi gestisce server. Mostra le righe che vengono aggiunte mentre accadono: è così che si guardano i log mentre si riproduce un problema.

less invece di cat sui file grandi, altrimenti ti scorrono via migliaia di righe.

Cercare

Qui sta la parte che fa davvero risparmiare tempo.

grep "errore" log.txt           # righe che contengono "errore"
grep -i "errore" log.txt        # ignorando maiuscole
grep -r "funzione" ./src        # cerca ricorsivamente in una cartella
grep -n "errore" log.txt        # con il numero di riga
grep -v "debug" log.txt         # righe che NON contengono

find . -name "*.log"            # file per nome
find . -type f -size +100M      # file più grandi di 100 MB
find . -mtime -7                # modificati negli ultimi 7 giorni

grep cerca dentro i file, find cerca i file. È la distinzione che confonde all'inizio.

find . -type f -size +100M è il comando che risolve il "disco pieno" più in fretta di qualunque altra cosa.

Combinare i comandi

È qui che Linux diventa potente, ed è il concetto che vale più di cento comandi memorizzati.

comando1 | comando2      # l'output del primo diventa input del secondo
comando > file           # scrivi l'output su file (sovrascrive)
comando >> file          # aggiungi in fondo
comando 2>&1             # includi anche gli errori

Esempi che si usano davvero:

cat log.txt | grep "500" | tail -20      # ultimi 20 errori 500
ps aux | grep node                        # i processi node in esecuzione
du -h /var | sort -h | tail -10           # le 10 cartelle più pesanti
history | grep docker                     # comandi docker che ho usato

Ogni comando fa una cosa sola e si compone con gli altri. È la filosofia Unix, ed è il motivo per cui questi strumenti sopravvivono da cinquant'anni.

Processi e sistema

ps aux              # tutti i processi
top                 # attività in tempo reale
htop                # versione migliore (spesso da installare)
kill 1234           # termina il processo con quel numero
kill -9 1234        # forza la terminazione
df -h               # spazio sui dischi
du -sh cartella/    # quanto occupa una cartella
free -h             # memoria
uptime              # da quanto è acceso e quanto è carico

Il -h significa "leggibile da umani": mostra i valori in MB e GB invece che in blocchi. Vale per parecchi comandi.

kill -9 è l'ultima risorsa: termina brutalmente senza lasciare al processo il tempo di chiudere file e connessioni. Prima si prova senza.

Permessi e utenti

sudo comando        # esegui come amministratore
whoami              # chi sono
chmod 644 file      # cambia i permessi
chown utente file   # cambia il proprietario

I permessi hanno una logica propria che merita spazio a parte: la trovi in permessi dei file in Linux.

E se questi comandi ti servono su una macchina remota, il modo per arrivarci è SSH.

Su sudo vale una regola: usalo quando serve, non per abitudine. Eseguire tutto da amministratore è il modo più rapido per rompere qualcosa in modo irreversibile.

Pacchetti

Cambia a seconda della distribuzione:

# Debian/Ubuntu
sudo apt update              # aggiorna l'elenco dei pacchetti
sudo apt install nginx       # installa
sudo apt upgrade             # aggiorna i programmi installati

# Fedora/RHEL
sudo dnf install nginx

apt update non aggiorna il software: aggiorna l'elenco di cosa è disponibile. È upgrade che installa gli aggiornamenti. Confonderli è normale all'inizio.

I comandi da usare con prudenza

rm -rf cartella/        # elimina tutto, senza chiedere
chmod 777 file          # dà tutti i permessi a tutti
> file.txt              # svuota il file all'istante

rm -rf è il comando che ha cancellato più dati al mondo. Due accortezze: verifica sempre dove sei con pwd prima di eseguirlo, e diffida di qualunque comando copiato da internet che lo contenga.

chmod 777 non è "risolvere un problema di permessi": è togliere ogni protezione. Se qualcosa non funziona per i permessi, il rimedio è capire quali servono.

Scorciatoie che cambiano la giornata

Non sono comandi, ma fanno più differenza:

  • Tab — completa automaticamente nomi di file e comandi. Usalo sempre: evita errori di battitura e fa risparmiare moltissimo tempo
  • Freccia su — richiama i comandi precedenti
  • Ctrl+R — cerca nella cronologia dei comandi
  • Ctrl+C — interrompe il comando in esecuzione
  • Ctrl+L — pulisce lo schermo

Ctrl+R è probabilmente la scorciatoia più sottovalutata: digiti qualche lettera di un comando usato giorni fa e lo ritrovi.

In sintesi

I comandi che servono davvero sono circa venticinque, raggruppabili per compito: navigare (cd, ls, pwd), gestire file (cp, mv, rm, mkdir), leggere (cat, less, tail -f), cercare (grep, find), processi (ps, top, kill), sistema (df, du, free).

Ma la cosa che conta più dell'elenco è il concetto di composizione: ogni comando fa una cosa sola, e con | si concatenano. È lì che sta la potenza, non nella quantità di comandi conosciuti.

Due abitudini che valgono più di tutto il resto: usa Tab per completare e man quando non ricordi. E due cose da non fare: rm -rf senza aver verificato dove sei, e chmod 777 per "risolvere" i permessi.

Se stai iniziando ora, il contesto generale è in cos'è Linux.