La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

I/O redirection AND PIPES

Presentazioni simili


Presentazione sul tema: "I/O redirection AND PIPES"— Transcript della presentazione:

1 I/O redirection AND PIPES

2 STDIN, STDOUT, STDERR In Linux tutto è un file, di conseguenza
Stdin (un canale per l'input dei programmi, potrebbe essere anche un file) Stdout (un canale per il risultato dei programmi) Stderr (un canale per l'elenco degli errori dei programmi) A livello predefinito stdout e stderr non vanno in un file, affinché finiscano in questo si usa la tecnica chiamata redirection

3 Ridirezione dell'output
comando > nome_file Esempio ls /home/luca > ls_result.txt proviamo invece a generare un errore (poniamo che /home/pippo non esista ls /home/pippo > ls_result.txt ls: cannot access /home/pippo: No such file or directory (l'errore però non è finito nel file, che rimane vuoto, ma è andato nella standard error) Il file però si è sovrascritto e se vogliamo che i risultati dei vari comandi si aggiungano uno sotto l'altro? (v. slide successiva)

4 Ridirezione dell'output
ls /home/pippo >> ls_result.txt In questo caso l'operatore >> non sovrascrive il file precedente se esiste già, ma si posiziona alla fine del file e comincia ad accodare il nuovo contenuto.

5 Ridirezione degli errori
ls /home/pippo 2> file.txt In questo caso si usa il file descriptor 2 (codifica utilizzata internamente dalla shell per accedere ai 3 diversi canali) che si riferisce allo stderr Lo stdin presenta il file descriptor 0 Lo stdout presenta il file descriptor 1

6 Stdout e stderr in un solo file
/home/luca/pippo > ls-output.txt 2>&1 /home/luca/pippo &> ls-output.txt /home/luca/pippo &>> ls-output.txt

7 Gestire i messaggi indesiderati
ls -l /bin/usr 2> /dev/null

8 Redirezione stdin cat nome_file_1, ….., nome_file_n
cat senza argomenti Prende in input del testo e lo restituisce nello stdout Fino a che non si preme CTRL+D cat > file.txt

9 Pipelines comando1 | comando2
Lo standard output del comando1 diventa lo stdin del comando2 Esempio ls /home/luca | less

10 uniq Accetta una lista già ordinata (usa il comando sort) e se nella lista ci sono elementi ripetuti li esclude Esempio ls /home/luca | sort | uniq

11 wc Numero di righe, parole e bytes contenuti in un file

12 grep ls /home/luca | sort | uniq | grep 'prov'
Nella lista di file quelli che contengono la parola prov

13 Tail e head Tail restituisce le ultime 10 righe di un file
Head restituisce le prime 10 righe di un file Se vogliamo specificare il numero di righe da visualizzare, possiamo utilizzare l'opzione -n Esempio ls /home/luca | sort | uniq | tail -n 5 Visualizzare le ultime 5 righe Se vogliamo vedere il progresso di un file in tempo reale, possiamo utilizzare l'opzione -f, utilissimo se per esempio stiamo programmando un'applicazione che restituisce un errore e vogliamo vedere il log dell'errore che si è verificato

14 Esercizi 1. Abbiamo un cartella di nome /home/luca
2.Creiamo una cartella prova 3. Ci spostiamo in tale cartella 4. Creare un file di testo tramite il comando cat opportunamente 5. aggregare due file insieme, ordinare le righe dei due file, rimuovere i duplicati, filtrare solo le righe che contengono la parola “prova” e creare un file con il risultato di tutte queste operazioni 6. aggiungere una riga alla fine risultato dell'operazione 5


Scaricare ppt "I/O redirection AND PIPES"

Presentazioni simili


Annunci Google