class: center, middle # Comandi di base GNU/Linux --- # Concetto: File system - Tutto è un file - Struttura ad albero - `/bin`, `/etc`, `/home`, `/var` - I nomi dei file sono Case sensitive - Percorsi assoluti ( /var/www/html/index.html ) e relativi: ( ../log.txt ) --- # Comando: `ls` - Elenca file e directory - `ls -l` dettagli - `ls -a` file nascosti - `ls -lh` dimensioni leggibili --- # Comando: `cd` - Cambia directory - `cd /percorso` - `cd ..` directory padre - `cd ~` va nella home (anche solo cd porta nella home) --- # Comando: `pwd` - Mostra la directory corrente - Utile per orientarsi e per copiare il percorso corrente --- # Comando: `mkdir` - Crea directory - `mkdir nuova` - `mkdir -p a/b/c` crea ricorsivamente la struttura di cartelle --- # Comando: `rm` - Rimuove file - `rm file` - `rm -r dir` ricorsivo - Attenzione: **non perdona** --- # Comando: `cp` - Copia file e directory - `cp a b` - `cp -r dirA dirB` --- # Comando: `mv` - Sposta o rinomina - `mv vecchio nuovo` - Spostamento tra directory --- # Concetto: Utenti - Ogni processo ha un utente - Ogni file ha un proprietario - Admin = root - Utente normale = privilegi ridotti --- # Concetto: Gruppi - Raccolte di utenti - Permettono accesso condiviso - Un utente può stare in più gruppi --- # Concetto: Permessi - Lettura (r), scrittura (w), esecuzione (x) - Applicati a owner / group / others - `chmod`, `chown`, `chgrp` --- # Comando: `chmod` - Cambia i permessi - `chmod 755 file` - `chmod u+x script.sh` --- # Comando: `chown` - Cambia proprietario - `chown utente file` - `chown utente:gruppo file` --- # Comando: `chgrp` - Cambia gruppo - `chgrp staff file` --- # Concetto: Processi - Programmi in esecuzione - Hanno PID: process identifier - Possono essere in foreground o background --- # Comando: `ps` - Mostra processi - `ps aux` dettagli completi --- # Comando: `top` / `htop` - Monitor in tempo reale - CPU, RAM, processi - Comodo per capire chi usa troppe risorse di sistema --- # Comando: `kill` - Termina processi - `kill PID` chiede al processo di interrompersi - `kill -9 PID` forza un processo ad interrompersi - il pid di un processo si trova dal comando ps o top --- # Concetto: Pipe `|` - Collega output a input - l'output di un comando viene preso come input del comando precedente - `comando1 | comando2` ``` ps aux | grep ssh | awk '{print $1}' | sort | uniq -c | sort -nr ``` --- # Comando: `grep` - Cerca testo - `grep parola file` - `grep -r termine dir/` ``` grep " 404 " /var/log/apache2/access.log ``` --- # Concetto: Pipe avanzate & Redirezioni - `>` scrive output in un file - `>>` aggiunge in fondo - `2>` redireziona l’errore - `&>` manda tutto (stdout + stderr) - `< file` come input - Pipe multiple: `cmd1 | cmd2 | cmd3` - Filtri creativi: `grep`, `sort`, `uniq` --- # Comando: `cat` - Mostra file - `cat file` - Ottimo insieme alle pipe - serve anche per concatenare i file: cat file1.txt file2.txt > unione.txt --- # Comando: `head` / `tail` - Prime linee o ultime linee - `head -n 20 log` - `tail -f log` ``` sudo tail -f /var/log/auth.log ``` ``` sudo tail -f /srv/www/sguaff.com/logs/access.log ``` --- # Comando: `less` - estensione del comando "more" - viene visualizzato un file di testo, con funzioni di scroll, ricerca - si esce con il tasto q --- # Comando: `man` - Manuale comandi - `man ls` - Quando c’è, è utilissimo - si esce con il tasto q --- # Comando: `sudo` - Esegue il comando che segue come root - `sudo comando` - Va usato con cervello ``` # DANGER NON FARLO sudo rm -f / # DANGER NON FARLO ``` --- # Comando: `apt` / `dnf` / `pacman` - Gestori pacchetti - `apt install`, `dnf update`, ecc. - Dipende dalla distro --- # Concetto: Hard link & Soft link - **Hard link**: altro nome dello stesso file - condivide l’inode - se cancelli l’originale, il link vive - `ln file link` - **Soft link (symlink)**: scorciatoia - punta a un percorso - se l’originale sparisce, si rompe - `ln -s file link` --- # Comando: `wget` - Scarica file via HTTP/HTTPS/FTP - `wget URL` - `wget -c` resume - `wget -r` ricorsivo (occhio, eh) ``` wget -O nuovo_nome.zip https://example.com/file.zip ``` ``` # scarica example.com in locale wget -r -np -k https://example.com/blog/ # -r: ricorsivo # -np: non salire di directory (per scaricare solo parte del sito) # -k: riscrivi i link in locale ``` --- # Comando: `curl` - Versatile: HTTP, API, test, debug - al contrario di wget non salva nulla - per salvare quello che scarica usare l'opzione -o `nomefile` - `curl -o file.zip https://example.com/file.zip` - `curl -I URL` header - `curl -X POST -d "username=davide&password=segretissimo" https://example.com/login` - `curl -H "User-Agent: Starfleet-Scanner/1.0" https://example.com` - Flessibile come pochi --- # Comando: `uname` - Info sul sistema e kernel - `uname -a` tutto - Veloce per capire “chi sei” --- # Comando: `touch` - Crea file vuoto - Aggiorna timestamp - `touch nuovo.txt` - Utile per script e quick fix --- # Comando: `which` - Mostra percorso eseguibile - `which ls` - Perfetto per scovare versioni multiple --- # Comando: `df` - Spazio disco - `df -h` leggibile (consigliato) - Capisci subito se sei “pieno” --- # Comando: `du` - Dimensione directory/file - `du -sh dir/` riassunto - `du -h --max-depth=1` panoramica rapida