1 of 25

Command Line Fu

2 of 25

🐧 Usare Linux su Windows con WSL

  • Cos'è WSL?
  • - WSL (Windows Subsystem for Linux) permette di eseguire Linux su Windows, senza macchina virtuale.
  • - Utile per esercitarsi con la shell anche su PC Windows.

  • ⚠️ Attenzione: WSL ≠ Linux nativo!
  • - Simula Linux, ma non è identico a una distribuzione reale.

3 of 25

La shell Linux

  • Come si accede a BASH
    • Tasti utili: Ctrl-Alt-F1, Ctrl-Alt-F7

  • Il Primo comando : exit (CASE SENSITIVE!!)
    • Si può uscire con CTRL-D

  • Il secondo comando: ls
    • Opzioni: ls –l, ls –a, ls –R
    • ls --full-time
    • Parametri: ls /usr

  • Come avere aiuto: man, info, opzione –-help

Operating System Concepts

4 of 25

Path assoluti e relativi

Operating System Concepts

/

home

angilica

Scrivania

Scaricati

Documenti

ianni

var

log

lib

cryptsetup

scripts

dev

sda

sdb

Percorsi assoluti nei vostri programmi == Problemi

Directory corrente

Directory destinazione

Path assoluto

Path relativo

angilica

Scrivania

/home/angilica/Scrivania

./Scrivania

angilica

cryptsetup

/lib/cryptsetup

../../lib/cryptsetup

angilica

log

/var/log

../../var/log

5 of 25

Variabili di ambiente

  • env Mostra tutte queste variabili
  • export Cambia il valore di una di esse

  • Variabili speciali
    • $SHELL, $PATH, $HOME

Operating System Concepts

6 of 25

Le directories

  • Qui si usa “/” anzichè “\
  • I riferimenti alle directory possono essere
    • Assoluti: /usr/bin
    • Relativi alla directory corrente: ../usr
  • Simboli speciali: . e ..
  • Alcune directory predefinite

Operating System Concepts

Directory

Contenuto

/

Root directory

/bin, /sbin, /usr/bin, /usr/sbin

Eseguibili

/dev

Dispositivi (tutto è un file!)

/etc

File di configurazione

/home

Home degli utenti

/lib

Librerie

/mnt, /media

File system esterni (non ci sono lettere di drive)

/opt

Componenti opzionali

/tmp

File temporanei

/usr

Molti eseguibili e tanto altro

/var

File variabili, soggetti a continue modifiche (es. file di log)

/proc

Processi e varie

7 of 25

🐧 Usare Linux su Windows con WSL (cont.)

  • ✅ Buone pratiche:
  • - Lavora nel filesystem Linux: usa /home/utente, non /mnt/c/...
  • - Controlla dove sei con `pwd`: evita /mnt/c/... per lavorare
  • - Fai backup dei dati importanti (soprattutto con WSL 2)

8 of 25

Come navigare le directory

In ogni momento la shell ha una sua cartella corrente.

Ogni utente possiede una sua cartella $HOME

Operating System Concepts

Comando

Descrizione

mkdir <nomedir>

Crea una nuova cartella dal nome <nomedir>

cd <nomedir>

Ci si sposta nella cartella <nomedir>

cd

Ci si sposta in $HOME

rmdir <nomedir>

Rimuove la cartella dal nome <nomedir> ma SOLO se è vuota

rm –rf <nomedir>

Rimuove la cartella dal nome <nomedir> e ricorsivamente tutto il suo contenuto***

pwd

Mostra il path in cui ci si trova

ls <nomedir>

Lista il contenuto della cartella <nomedir>

*** È PERICOLOSO. Tutto ciò che è stato eliminato non potrà più essere recuperato

9 of 25

Come gestire i file

Operating System Concepts

Comando

Descrizione

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 in 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

10 of 25

Ricerca tra directory e file

Operating System Concepts

Comando

Descrizione

find <nomedir> -name file1

Cerca i file di nome file1 a partire dalla directory <nomedir>

find <nomedir> -name *.txt

Cerca i file che hanno estensione .txt a partire dalla directory <nomedir>

grep –R parola <nomedir>

Cerca in tutti i file collocati nella directory <nomedir> la parola parola e restituisce le righe che la contengono

grep parola file1

Mostra solo le righe del file1 che contengono la parola parola

11 of 25

Caratteri Jolly

  • Asterisco “*”
    • Sta per 0 o più caratteri
    • Esempi:
      • *.txt
      • *txt
      • *txt*
  • Punto interrogativo “?”
    • Sta per un qualsiasi singolo carattere
    • Esempi: x??, t?t
  • Parentesi quadre [] e “!” oppure “^”
    • [AB]* tutti i file che cominciano per A o B
    • !([AB]C)* tutti file che NON cominciano per A o B oppure NON hanno una C come seconda lettera
    • [^AB]C* tutti i file che non cominciano per A o B

Operating System Concepts

12 of 25

Come funzionano i caratteri jolly

  • C’è una fase di pre-espansione!
    • ls y* equivale a
    • ls yacc yes ypcat ... ypmatch ...

  • Questo crea una GROSSA differenza con Windows
    • Windows: copy *.txt *.bak
    • Linux: cp *.txt *.bak
      • (pensate al meccanismo di espansione)
  • I file nascosti vengono di solito ignorati (quelli che cominciano per “.”)

Operating System Concepts

13 of 25

Navigare tra i comandi e shortcut

Operating System Concepts

Comando

Descrizione

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

14 of 25

Programmi console e loro canali di input

Operating System Concepts

Programma

Standard Input

STDIN, cin

Es: cin >> nomeUtente;

Standard output

STDOUT, cout

Es: cout << “Ciao”;

Standard error

STDERR, cerr

Es: cerr << “No file”;

Linea di comando

@ARGV, argv[ ]

Es: nomedir = argv[1];

  • La linea di comando viene specificata PRIMA che il programma sia lanciato (argv)
  • I valori vengono letti da STDIN MENTRE il programma gira

15 of 25

Redirezione stdout ed stderr

Operating System Concepts

P1

  • P1 > F1 STDOUT di P1 finisce sul File F1

F1

P1

  • P1 2> F1 STDERR di P1 finisce sul File F1

F1

16 of 25

Redirezione stdout ed stderr

Operating System Concepts

P1

  • P1 >& F1 STDERR e STDOUT di P1 finiscono entrambi sul File F1

F1

17 of 25

Redirezione e piping

Operating System Concepts

P1

  • P1 < F1 STDIN di P1 riceve IL CONTENUTO del File F1

F1

P1

  • P1 F1 🡪 ARGV[0] = “F1”;

F1

NON E’ LA STESSA COSA DI

18 of 25

Redirezione e piping

Operating System Concepts

P1

P2

  • P1 | P2 Esegue P1 e P2: STDOUT di P1 diventa STDIN di P2

19 of 25

Redirezione e piping: xargs

Operating System Concepts

P1

P2

  • P1 | xargs P2 Esegue P1 e P2: STDOUT di P1 diventa ARGV di P2

20 of 25

Redirezione e piping

  • Non dimenticate che un programma è sempre agganciato a un canale di input (cin) e alcuni di output (cout e cerr)

  • Agganciare cout a qualcosa di diverso dallo schermo:

    • ls > out.txt (crea un file out.txt)
    • ls >> out.txt (appende a out.txt)

  • Agganciare cin a qualcosa di diverso
    • grep “cat” < out.txt

  • Usare le pipe (leggi ‘PAIP’)
    • cat /etc/services | sort

  • Si possono combinare più pipe
    • cat /etc/services | sort | tail –n 50 | less

Operating System Concepts

21 of 25

Gestione processi e job

Operating System Concepts

Comando

Descrizione

ps

Mostra la lista dei processi attivi e i loro id

top

Mostra la lista dei processi attivi in tempo reale dei processi e le attività gestite dal kernel

htop

Come top ma semplificato e con possibilità di interazione da parte dell’utente

kill <pid>

Termina il processo con il process id (pid) specificato

jobs

Mostra i task eseguiti in background dall’utente

fg

Sposta un task da background in foreground

bg

Riprende l’esecuzione di un task lasciato in sospeso in background

22 of 25

Diritti di accesso

Operating System Concepts

23 of 25

Diritti di accesso

  • chmod 🡪 tutorial semplificato
    • https://catcode.com/teachmod/

Operating System Concepts

24 of 25

Diritti di accesso

Operating System Concepts

N.B. Di default, chmod +w file non modifica i permessi in scrittura di g e o

25 of 25

‘r’ e ‘x’ per cartelle

Operating System Concepts