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.
# 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.
# 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.
# 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
# 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
# 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).
# 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.
# 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
# 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.
# 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.