Open Source

Linux command line: La guida definitiva dai fondamentali ai power tools

Il terminale Linux.

Per molti, quella finestra nera con il cursore lampeggiante è fonte di ansia; per altri, è una tela bianca di infinite possibilità.

La verità è che la Command Line Interface (CLI) non è solo uno strumento per hacker visti nei film, ma è il metodo più efficace per interagire con il tuo computer.

Che tu sia un aspirante DevOps, un amministratore di sistema o uno sviluppatore web, conoscere i comandi giusti trasforma compiti che richiederebbero ore di clic manuali in operazioni di pochi secondi.

Imparare la riga di comando significa smettere di essere un semplice utente del sistema e diventarne il padrone.

In questa guida, esploreremo i comandi essenziali per navigare, gestire, monitorare e automatizzare il tuo ambiente Linux.


1. I fondamentali della navigazione

Prima di poter amministrare un server, devi saperti muovere al suo interno.

Immagina il terminale come un esploratore di file testuale.

  • pwd (Print Working Directory): Ti sei perso nei meandri delle cartelle? Questo comando ti dice esattamente dove ti trovi nel filesystem (il percorso assoluto). È il tuo “Voi siete qui” sulla mappa.

    Esempio: /home/utente/progetti/sito-web

  • cd (Change Directory): È il comando per muoversi.

    • cd cartella: Entra in una cartella specifica.
    • cd ..: Torna indietro di un livello (alla cartella genitore).
    • cd ~ (o solo cd): Ti teletrasporta istantaneamente alla tua cartella Home, ovunque tu sia.
  • ls (List): Elenca i file nella cartella corrente. Da solo è utile, ma con le opzioni (flag) diventa indispensabile.

    • Pro Tip: Usa ls -lah.
      • -l: Mostra i dettagli (permessi, proprietario, data).
      • -a: Mostra i file nascosti (quelli che iniziano con un punto, come .bashrc).
      • -h: Rende le dimensioni leggibili agli umani (es. mostra “500MB” invece di “524288000”).

2. Gestione dei file: Creare, copiare e distruggere

Una volta che sai muoverti, devi poter manipolare gli oggetti.

  • mkdir (Make Directory): Crea nuove cartelle. mkdir -p progetti/2024/clienti (il flag -p crea anche le cartelle intermedie se non esistono).
  • cp (Copy) e mv (Move):
    • cp file.txt copia.txt: Duplica un file.
    • mv file.txt cartella/: Sposta un file. Nota: mv si usa anche per rinominare i file (mv vecchio_nome.txt nuovo_nome.txt).
  • rm (Remove): Fai attenzione. Su Linux non esiste il “Cestino” quando usi il terminale.
    • rm file.txt: Cancella un file.
    • rm -rf cartella/: Cancella una cartella e tutto il suo contenuto forzatamente. Usa con estrema cautela!

3. Ricerca e analisi: I power tools

Qui è dove Linux brilla davvero.

Smetti di cercare file aprendo cartelle a caso.

Lascia che sia il sistema a lavorare per te.

find: Il segugio del filesystem

Il comando find è incredibilmente potente per localizzare file basandosi su metadati come nome, dimensione, permessi o data di modifica.

Scenario Reale: Il disco è pieno e devi trovare i file di log vecchi e pesanti per cancellarli.

find /var/log -name "*.log" -size +50M

Questo comando cerca in /var/log tutti i file che finiscono per .log e sono più grandi di 50 Megabyte.

grep: Trovare l’ago nel pagliaio

Mentre find cerca i file, grep cerca dentro i file.

È essenziale per il debugging.

Scenario Reale: Il tuo server web ha dato errore, ma non sai perché.

grep -r "Fatal Error" /var/log/nginx/
  • -r: Cerca ricorsivamente in tutte le sottocartelle.
  • -i: Ignora la differenza tra maiuscole e minuscole (case-insensitive).

4. Monitoraggio del sistema

Il tuo computer è lento?

La ventola gira al massimo?

Ecco come diagnosticare il problema.

  • top / htop: Mostrano i processi in esecuzione in tempo reale, l’uso della CPU e della RAM.
    • Consiglio: Se puoi, installa htop. È una versione più colorata, interattiva e leggibile di top. Ti permette di terminare (kill) i processi bloccati con un tasto.
  • df -h (Disk Free): Visualizza lo spazio libero su disco. Il flag -h ti mostra i dati in GB e MB, evitando calcoli matematici complessi.

5. La potenza delle “Pipe” e redirezioni

La vera magia di Linux sta nel combinare i comandi.

Il simbolo | (pipe) prende l’output di un comando e lo passa come input al successivo.

Esempio di concatenazione: Vuoi vedere quali processi stanno usando più memoria, ma vuoi vedere solo i primi 5?

ps aux | sort -nk +4 | tail -5
  1. ps aux: Elenca tutti i processi.
  2. |: Passa la lista a…
  3. sort -nk +4: Ordina numericamente in base alla 4ª colonna (memoria).
  4. |: Passa la lista ordinata a…
  5. tail -5: Mostra solo le ultime 5 righe (i processi più pesanti).

6. Download e automazione

Non hai bisogno di un browser grafico per scaricare file.

Sui server remoti, spesso non hai nemmeno un’interfaccia grafica.

  • wget: Robusto e affidabile. Perfetto per scaricare ISO o archivi di grandi dimensioni.
    • Comando: wget -c [url] (l’opzione -c riprende un download interrotto se cade la connessione).
  • curl: Il coltellino svizzero per il trasferimento dati. Spesso usato per testare API o scaricare script ed eseguirli al volo.
    • Esempio: curl -I https://google.com (mostra solo le intestazioni HTTP per vedere se il sito risponde).

7. Sicurezza e permessi: chmod e chown

In Linux, ogni file e cartella ha un sistema di sicurezza integrato che decide chi può fare cosa.

Capire questo concetto è fondamentale per evitare errori di sicurezza (come lasciare file sensibili leggibili a tutti) o di funzionamento (come script che non si avviano).

Decifrare ls -l

Quando digiti ls -l, vedi una stringa simile a questa: -rwxr-xr--

Questa stringa va letta dividendo i caratteri in gruppi:

  1. Tipo (1 carattere): - indica un file, d indica una directory.
  2. Proprietario (User - 3 caratteri): Cosa può fare chi ha creato il file.
  3. Gruppo (Group - 3 caratteri): Cosa possono fare gli utenti nello stesso gruppo.
  4. Altri (Others - 3 caratteri): Cosa può fare chiunque altro (il mondo intero).

Le lettere significano:

  • r (Read): Leggere il file / Listare la cartella.
  • w (Write): Modificare il file / Creare o cancellare file nella cartella.
  • x (Execute): Eseguire il file come programma / Entrare nella cartella (cd).

La matematica dei permessi (modalità ottale)

Il comando chmod (Change Mode) modifica questi permessi.

Sebbene tu possa usare lettere (es. u+x), i professionisti usano i numeri (notazione ottale).

Ogni permesso ha un valore:

PermessoValore
r (Read)4
w (Write)2
x (Execute)1
Nessuno0

Per impostare i permessi, somma i valori per ogni gruppo (Utente, Gruppo, Altri).

Esempio Classico: chmod 755

  • Utente (7): 4+2+1 (Legge, Scrive, Esegue) -> Pieno controllo.
  • Gruppo (5): 4+0+1 (Legge, Esegue) -> Non può modificare.
  • Altri (5): 4+0+1 (Legge, Esegue) -> Non può modificare.

Questo è lo standard per script e cartelle pubbliche: il proprietario fa tutto, gli altri guardano ed eseguono ma non toccano.

Scenari Reali

Scenario A: Rendere uno script eseguibile

Hai scritto uno script backup.sh ma Linux ti dice “Permission denied” quando provi a lanciarlo.

chmod +x backup.sh
# Oppure in numerico (700 per renderlo privato, 755 per pubblico)
chmod 755 backup.sh

Scenario B: Proteggere le chiavi SSH (massima sicurezza)

Hai un file .pem o una chiave privata.

Nessuno tranne te deve leggerla, altrimenti SSH rifiuterà la connessione per sicurezza.

chmod 600 chiave_segreta.pem
  • 6 (Utente): 4+2 (Legge e Scrive).
  • 0 (Gruppo): Nessun accesso.
  • 0 (Altri): Nessun accesso.

Scenario C: Il pericolo del 777

Mai usare chmod 777 a meno che tu non sappia esattamente cosa stai facendo.

Significa che chiunque può scrivere, cancellare ed eseguire file.

È un enorme rischio di sicurezza, specialmente sui server web.

chown: Cambiare il proprietario

A volte i permessi sono giusti, ma il proprietario è sbagliato (es. hai caricato file come “root” ma il server web “www-data” deve leggerli).

Sintassi: chown [utente]:[gruppo] [file]

Esempio: Assegnare una cartella al server web Apache/Nginx

chown -R www-data:www-data /var/www/html
  • -R: Applica il cambio ricorsivamente a tutti i file e sottocartelle dentro html.

Tabella Riassuntiva Rapida

ComandoCategoriaA cosa serveSintassi Base
lsNavigazioneElenca i filels -lah
cdNavigazioneCambia cartellacd /percorso/
cp / mvGestioneCopia o Sposta filecp sorgente destinazione
rmGestioneRimuove filerm file
grepRicercaCerca testo nei filegrep "testo" file
chmodSicurezzaCambia permessichmod 755 file
htopMonitoraggioVisualizza processi e risorsehtop

Questa non è una lista esaustiva, ma rappresenta il 20% dei comandi che userai per l’80% del tempo.

Padroneggiare questi strumenti ti darà una confidenza immediata nel gestire server, VPS o il tuo computer personale.

La prossima volta che apri il terminale, non guardarlo con timore: digita ls, premi invio, e inizia a esplorare.