La stragrande maggioranza dell'infrastruttura web moderna poggia su core Linux. Che tu stia sviluppando su macOS o utilizzi WSL su Windows, il deploy e la manutenzione di un'applicazione richiedono inevitabilmente l'uso del terminale. Padroneggiare la riga di comando non è solo un vanto tecnico, ma una necessità operativa che distingue un developer junior da un professionista capace di risolvere criticità in produzione in pochi istanti.

Navigazione del File System

Muoversi agilmente tra le cartelle del server è il primo passo per ogni operazione di manutenzione o debugging.

Comandi di Navigazione Essenziali
# Mostra la directory corrente (Path Working Directory)
pwd

# Elenca i file (formato lungo, dimensioni leggibili, file nascosti)
ls -lah

# Cambia directory
cd /var/www/html
cd ~        # Torna alla home dell'utente
cd -        # Torna alla directory precedente

# Crea directory (anche nidificate)
mkdir -p progetti/nuova-app/src

# Ricerca file avanzata
find /var/log -name "*.log" -mtime -7  # Log modificati negli ultimi 7 giorni

Gestione e Manipolazione dei File

Leggere i log o spostare configurazioni è un'attività quotidiana. Ecco come farlo in modo sicuro ed efficiente.

Operazioni sui File
# Visualizza il contenuto di un file
cat config.json              # Intero file a schermo
head -n 20 access.log        # Prime 20 righe
tail -n 50 error.log         # Ultime 50 righe
tail -f error.log            # Segue il file in tempo reale (ottimo per il debug)
less large-file.log          # Visualizzatore scorrevole per file pesanti

# Copia, sposta e rimuovi
cp file.txt backup/file.txt
cp -r src/ src-backup/       # Copia ricorsiva di una cartella
mv vecchio-nome.txt nuovo-nome.txt
rm file.txt
rm -rf node_modules/         # Rimuove directory ricorsivamente (ATTENZIONE!)

Analisi del Testo: Grep, Sed e Awk

Questi tre strumenti rappresentano il "coltellino svizzero" per chi deve analizzare gigabyte di log o automatizzare modifiche massive al codice.

grep — Ricerca di Pattern
# Cerca una stringa specifica nei file
grep "ERROR" /var/log/app.log

# Ricerca ricorsiva in una directory (es. cercare una funzione)
grep -r "function_name" src/

# Case-insensitive con numeri di riga
grep -in "database" config.php

# Conta le occorrenze di un errore 404
grep -c "404" access.log
sed — Editor di Flusso (Stream Editor)
# Sostituisce la prima occorrenza per riga
sed 's/http:/https:/' urls.txt

# Sostituzione globale in tutto il file
sed 's/http:/https:/g' urls.txt

# Modifica direttamente il file (In-place edit)
sed -i 's/localhost/db.prod.internal/g' .env
awk — Estrazione Colonne e Reportistica
# Stampa la 1ª e la 4ª colonna di un file (es. IP e Data nei log)
awk '{print $1, $4}' access.log

# Somma i valori di una specifica colonna
awk '{sum += $5} END {print sum}' dati_vendite.csv

Permessi e Ownership

Configurare correttamente i permessi è fondamentale per la sicurezza del server web (es. evitare che l'utente www-data possa scrivere ovunque).

chmod & chown
# Rende uno script eseguibile
chmod +x deploy.sh

# Permessi specifici (proprietario: rwx, gruppo: r-x, altri: r--)
chmod 754 app.js

# Cambia il proprietario della cartella web ricorsivamente
chown -R www-data:www-data /var/www/html

SSH e Amministrazione Remota

Accedere a macchine remote tramite tunnel sicuri è lo standard nell'industria.

Comandi SSH e SCP
# Connessione a un server remoto
ssh [email protected]

# Utilizzo di una chiave SSH specifica (PEM file)
ssh -i ~/.ssh/my-key.pem [email protected]

# Copia di file/cartelle sul server (SCP)
scp -r ./dist [email protected]:/var/www/html/

# Esegue un comando remoto senza avviare una sessione interattiva
ssh [email protected] "sudo systemctl restart nginx"

Gestione dei Processi

Monitorare il Sistema
# Elenca i processi attivi filtrando per Node.js
ps aux | grep node

# Identifica quale processo sta usando una porta (es. 8080)
lsof -i :8080
# oppure
ss -tulnp | grep 8080

# Termina un processo tramite PID
kill 12345
kill -9 12345  # Chiusura forzata

# Monitoraggio risorse interattivo
htop

Piping e Redirezione (L'arte del concatenamento)

La potenza di Linux risiede nel simbolo | (pipe), che permette di usare l'output di un comando come input per quello successivo.

Esempi Pratici di Pipeline
# Trova i 10 file più pesanti in una cartella
du -ah /var/log | sort -rh | head -10

# Conta gli indirizzi IP univoci negli access log di Nginx
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20

# Salva il log di un deploy con data e ora
echo "Deploy completato il $(date)" >> deploy_history.log

# Redireziona gli errori (stderr) su un file separato
npm run build 2> build_errors.log

Semplifica il tuo Workflow

Utilizza i nostri tool gratuiti per codificare e formattare i tuoi file istantaneamente.