Riassunti

Appunti universitari in formato Markdown da Obsidian.

Le basi della shell Linux

  • Come si accede a bash? i tasti utili sono Ctrl-Alt-F1 oppure Ctrl-Alt-F7;
  • exit → si esce dalla shell;
  • ls → mostra contenuto della directory corrente;
  • ls -l → mostra contenuto con file;
  • ls -a → mostra anche contenuto nascosto;
  • pwd → mostra percorso della directory attuale;
  • Come avere aiuto? man, info, opzione --help.

Path assoluti e relativi

I path assoluti specificano esattamente l'intero path del file/directory. I path relativi specificano solo una parte del path del file/directory. Da fare attenzione con i path assoluti da utilizzare nei nostri programmi perchè creano problemi e quindi si utilizza il path relativo: con . ci riferiamo alla directory corrente mentre con .. ci riferiamo alla directory superiore.

Directories

  • / → root directory;
  • /bin, /sbin, /usr/bin, /usr/sbin → eseguibili
  • /dev → dispositivi;
  • /etc → file di configurazione;
  • /home → home degli utenti;
  • /lib → librerie;
  • /mnt, /media → file system esterni;
  • /opt → componenti opzionali;
  • /tmp → file temporanei;
  • /usr → molti eseguibili e tanto altro;
  • /var → file variaibili, soggetti a continue modifiche;
  • /proc → processi e varie.

Come navigare le directory

In ogni momento la shell ha una sua directory corrente. Ogni utente possiede una sua cartella $HOME.

  • mkdir → crea una nuova cartella dal nome ;
  • cd → ci si sposta nella cartella ;
  • cd → ci si sposta in $HOME;
  • rmdir → rimuove la cartella dal nome ma SOLO se è vuota;
  • rm –rf → rimuove la cartella dal nome e ricorsivamente tutto il suo contenuto (È PERICOLOSO, tutto ciò che è stato eliminato non potrà più essere recuperato);
  • pwd → mostra il path in cui ci si trova;
  • ls → lista il contenuto della cartella .

Come gestire i file

  • cp file1 file2 → crea una copia del file1 in file2;
  • cp file1 .. filex directory → crea una copia di tutti i file specificati in directory;
  • mv file1 file2 → rinomina il file1 in file2;
  • mv file1 .. filex directory → sposta tutti i file specificati nella directory;
  • rm file1 → rimuove il file1;
  • less file1 → legge il contenuto del file1 in modalità interattiva;
  • cat file1 → stampa su terminale il contenuto di file1;
  • nano file1 → modifica il file1 da terminale (alias: pico) ;
  • file filename → analizza il tipo di file di filename;
  • touch file1 → crea un nuovo file vuoto dal nome file1.

Ricerca tra directory e file

  • find -name file1 → cerca il file di nome file1 a partire dalla directory ;
  • find -name *.txt → cerca i file che hanno estensione .txt a partire dalla directory ;
  • grep parola → cerca in tutti i file collocati nella directory la parola parola;
  • grep parola file1 → mostra solo le righe del file1 che contengono la parola parola.

Caratteri jolly

  • Asterisco "*": sta per 0 o più caratteri (ad esempio, *.txt, *txt, *txt*);
  • Punto interrogativo "?": sta per un qualsiasi singolo carattere (ad esempio, x??, t?t);
  • Parentesi quadre [] e "!": ad esempio, [AB]* tutti i file che cominciano per A o B;
  • I file nascosti vengono di solito ignorati (quelli che cominciano per ".").

Navigare tra i comandi e shortcut

  • CTRL + R → avvia la ricerca di comandi tra la history dei comandi eseguiti in passato;
  • Tasti freccia → scorre i precedenti comandi;
  • Tab → completa i nomi di file e dei comandi;
  • CTRL + L → ripulisce il terminale (scorciatoia comando clear);
  • CTRL + C → interrompe l'esecuzione di un comando;

Programmi console e loro canali di input

Possiamo fornire ad un programma dei parametri in input direttamente dalla command line (il cosiddetto ARGV).

Lo standard error/output (STDERR/STDOUT) possono essere inseriti all'interno di un file di testo e quindi il loro contenuto non sarà messo direttamente nella command line ma bensì in un file. Questa procedura può essere fatta andando a specificare la seguente pipe (P1 rappresenta il nome del programma e F1 il nome del file):

Equivalentemente allo standard output possiamo decidere di dare in input (STDIN) un file al nostro programma nel seguente modo:

Possiamo decidere di immettere l'output di un programma P1 come input di un programma P2 nel seguente modo:

Altri comandi per il terminale (utili)