ESC
Comandi Bash / Terminal

Navigazione

Comando Opzioni Esempio Output Descrizione
ls -la, -lh, -R ls -la /etc lista file Elenca il contenuto della directory; -l formato lungo, -a file nascosti, -h dimensioni leggibili
cd -, ~, .. cd ~/projects cambia dir Cambia directory; cd - torna indietro, cd ~ va alla home
pwd pwd /home/user Stampa la directory di lavoro corrente (percorso completo)
tree -L n, -a tree -L 2 vista ad albero Visualizza la struttura ad albero della directory; -L limita la profondità (potrebbe richiedere installazione)
find -name -type -mtime find . -name '*.log' percorsi file Cerca file/directory che corrispondono ai criteri
locate -i locate nginx.conf percorsi file Ricerca rapida file tramite indice database; eseguire prima updatedb

Operazioni sui File

Comando Opzioni Esempio Output Descrizione
cp -r, -i, -u cp -r src/ dst/ copia file Copia file; -r per le directory, -i chiede conferma prima di sovrascrivere
mv -i, -n mv old.txt new.txt sposta/rinomina Sposta o rinomina file; -i chiede conferma prima di sovrascrivere
rm -r, -f, -i rm -rf dist/ eliminato Rimuove file/directory; -r ricorsivo, -f forza — usare con cautela
mkdir -p mkdir -p a/b/c nuova dir Crea directory; -p crea le directory padre se necessario
touch touch index.html file vuoto Crea un file vuoto o aggiorna il timestamp di un file esistente
ln -s ln -s /etc/nginx nginx symlink Crea un hard link; -s per symbolic link

Visualizzare File

Comando Opzioni Esempio Output Descrizione
cat -n, -A cat -n file.txt contenuto file Stampa il file; -n aggiunge numeri di riga, -A mostra caratteri non stampabili
head -n N head -n 20 log.txt prime N righe Mostra le prime righe del file (default 10)
tail -n N, -f tail -f app.log ultime N righe Mostra le ultime righe; -f segue i nuovi contenuti in tempo reale
less /search, q less large.log vista a pagine Scorre il file pagina per pagina; / per cercare, q per uscire, spazio per la pagina
wc -l, -w, -c wc -l file.txt conteggio Conteggio parole; -l righe, -w parole, -c byte/caratteri

Ricerca & Testo

Comando Opzioni Esempio Output Descrizione
grep -r -i -n -v -E grep -rn 'error' logs/ righe corrispondenti Cerca pattern nel testo; -r ricorsivo, -i senza distinzione maiuscole, -n numeri di riga
grep -v grep -v 'debug' app.log non corrispondenti Inverti la ricerca — mostra le righe che NON contengono il pattern
grep -E grep -E 'warn|error' log righe corrispondenti Regex estesa — usa | per OR, + per uno-o-più
awk '{print $N}' awk '{print $1}' f valore colonna Elaborazione testo pattern-azione; $1 primo campo, $NF ultimo campo
sed -i 's/a/b/g' sed -i 's/foo/bar/g' f testo modificato Editor di flusso; s/ricerca/sostituzione/g sostituisce globalmente
sort -n -r -k N sort -n numbers.txt output ordinato Ordina le righe; -n numerico, -r inverso, -k ordina per colonna N
uniq -c, -d sort f | uniq -c righe univoche Rimuove righe duplicate adiacenti; di solito usato dopo sort tramite pipe

Permessi

Comando Opzioni Esempio Output Descrizione
chmod 755, 644, +x chmod +x script.sh permessi modificati Cambia i permessi del file; 755=rwxr-xr-x, 644=rw-r--r--
chown -R user:group chown -R www-data:www-data /var/www proprietario cambiato Cambia il proprietario e il gruppo del file; -R ricorsivo
ls -la ls -la /var/www lista permessi Mostra permessi, proprietario, gruppo e dimensione per tutti i file
umask 022, 027 umask 022 permessi default Imposta la maschera di permesso predefinita per i nuovi file (022 → 644 per i file)
sudo -u user sudo systemctl restart nginx cmd elevato Esegue il comando come superutente; -u per eseguire come utente diverso

Gestione Processi

Comando Opzioni Esempio Output Descrizione
ps aux, -ef ps aux | grep nginx lista processi Elenca i processi; aux=tutti gli utenti, -ef=formato completo
top q, k, M top vista live Monitor interattivo dei processi; q per uscire, k per terminare, M ordina per memoria
htop F3, F9 htop vista live top migliorato con colori; F3 cerca, F9 termina (potrebbe richiedere installazione)
kill -9, -15 kill -9 1234 segnale inviato Invia un segnale al PID; -15 SIGTERM (graceful), -9 SIGKILL (forza)
killall -9, -u killall node segnale inviato Termina tutti i processi con il nome specificato
jobs -l jobs -l lista job Elenca i job in background/sospesi nella shell corrente
bg / fg %N fg %1 ripreso bg invia il job in background, fg lo riporta in foreground

Rete

Comando Opzioni Esempio Output Descrizione
curl -o -L -X -H -d curl -O https://example.com/f risposta Trasferisce dati via HTTP/FTP; -L segue i redirect, -o salva su file
wget -O -r -q wget -q https://example.com file salvato Scarica file; -O rinomina l'output, -r ricorsivo, -q silenzioso
ping -c N ping -c 4 google.com RTT ms Testa la connettività di rete; -c limita il numero di pacchetti
ssh -i -p -L ssh user@host -p 2222 shell Shell sicura; -i file chiave, -p porta, -L inoltro porta locale
scp -r -P -i scp file user@host:~/ copiato Copia sicura via SSH; -r ricorsivo, -P porta (maiuscolo)
netstat -tuln netstat -tuln lista porte Mostra le connessioni di rete; -t TCP, -u UDP, -l in ascolto, -n numerico
ss -tuln ss -tuln lista porte Sostituto moderno di netstat; più veloce e dettagliato

Archivi & Compressione

Comando Opzioni Esempio Output Descrizione
tar -czf -czf out.tar.gz tar -czf arc.tar.gz dir/ archivio Crea un tarball compresso con gzip; c=crea, z=gzip, f=nome file
tar -xzf -xzf file.tar.gz tar -xzf arc.tar.gz -C /tmp estratto Estrae un tarball gzip; x=estrai, -C directory di destinazione
tar -tf tar -tf archive.tar.gz lista file Elenca il contenuto del tarball senza estrarlo
zip -r, -9 zip -r out.zip dir/ file zip Crea un archivio zip; -r ricorsivo, -9 compressione massima
unzip -d, -l unzip archive.zip -d out/ estratto Estrae uno zip; -d destinazione, -l elenca il contenuto senza estrarlo
gzip / gunzip -k, -d gzip -k file.txt compresso gzip su un singolo file; -k mantiene l'originale, gunzip per decomprimere

Ambiente & Shell

Comando Opzioni Esempio Output Descrizione
env env | grep PATH var=valore Stampa tutte le variabili d'ambiente; usa pipe con grep per filtrare
export export NODE_ENV=production var impostata Imposta una variabile d'ambiente per la sessione corrente e i processi figli
echo $VAR echo $HOME valore Stampa il valore della variabile; usa ${VAR} per disambiguare nelle stringhe
which which node percorso Mostra il percorso completo dell'eseguibile del comando
alias alias ll='ls -la' scorciatoia Crea una scorciatoia per un comando; aggiungila a ~/.bashrc per renderla permanente
source source ~/.bashrc ricaricato Esegue il file nel contesto della shell corrente (anche: . ~/.bashrc)
history !N, !! history | tail -20 lista cmd Mostra la cronologia dei comandi; !! ripete l'ultimo, !N esegue il comando N-esimo

Riferimento Git Rapido

Comando Opzioni Esempio Output Descrizione
git init git init my-project repo creato Inizializza un nuovo repository Git nella directory
git clone --depth 1 git clone url repo clonato Clona un repository remoto; --depth 1 per clone superficiale
git status -s git status -s modifiche Mostra lo stato dell'albero di lavoro; -s formato breve
git add -A, -p git add -p staged Prepara le modifiche; -A tutto, -p modalità patch interattiva
git commit -m, --amend git commit -m 'msg' committato Registra le modifiche preparate; --amend modifica l'ultimo commit
git push -u origin git push -u origin main inviato Invia al remoto; -u imposta il branch di tracking upstream
git pull --rebase git pull --rebase sincronizzato Recupera e integra le modifiche remote; --rebase invece di merge
git log --oneline --graph git log --oneline -10 cronologia Mostra la cronologia dei commit; --oneline compatto, --graph branch visuale
git stash pop, list git stash pop ripristinato Salva temporaneamente il lavoro non committato; pop per ripristinare
git diff --staged git diff --staged diff Mostra le modifiche; --staged mostra quelle preparate ma non ancora committate

Domande Frequenti

sh (Bourne Shell) è la shell Unix originale, standardizzata da POSIX. bash (Bourne Again Shell) è il suo successore e superset, aggiungendo array, sintassi di test estesa [[]], espansione aritmetica $(( )), cronologia, completamento con tab e altro. Sulla maggior parte dei sistemi Linux /bin/sh è un link simbolico a bash o dash (una shell leggera solo POSIX).

Tre passi: (1) Aggiungi una riga shebang come primissima riga: #!/bin/bash. (2) Rendilo eseguibile con chmod +x script.sh. (3) Eseguilo con ./script.sh (il ./ è necessario perché la directory corrente non è in $PATH per impostazione predefinita). Per eseguirlo da qualsiasi parte, spostalo in una directory nel tuo PATH.

Bash ha tre flussi standard: stdin (0), stdout (1), stderr (2). Reindirizzare stdout su file: command > file.txt (sovrascrivere) o command >> file.txt (aggiungere). Reindirizzare stderr: command 2> errors.txt. Reindirizzare entrambi: command > output.txt 2>&1. Scartare output: command > /dev/null 2>&1. Pipe stdout: command1 | command2.