Command line kung fu

Похожие документы
Uso del terminale in ambiente UNIX

Esercitazione GNU/Linux n. 2

Linguistica Computazionale: esercitazioni

L interfaccia command line di Ubuntu è il Terminale che usa un sistema command line detto bash.

Comandi principali di Linux (1)

- comando sort: con chiavi di ordinamento -

SHELL: File e Filesystem

Lezione 1: Introduzione alla Shell di Unix

La Shell di Unix. l utente impartisce i comandi al sistema digitandoli ad un apposito prompt;

Laboratorio. Sistemi Operativi: Linux/Windows. Giovanni Da San Martino

Editor di testo. Ing. Simone Brienza. Corso di laurea magistrale in Ingegneria Elettronica

Lezione 3: Programmazione della Shell di Unix

Guida Linux. Molto rapida

Shell di Linux e Comandi Utente

Linux e la shell Bash

Usare Python in Linux

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Introduzione all'uso del sistema operativo Ubuntu

INTRODUZIONE ALL AMMINISTRAZIONE DI SISTEMA Simone D Amico

Shell BASH. Variabili Redirezione

Linux - La Shell Bash

14 - INTRODUZIONE AL SISTEMA OPERATIVO LINUX

Prova Finale. Algoritmi e Strutture Dati 2016 / 2017

PROGRAMMAZIONE CONSUNTIVA Codice Mod. RQ 23.2 Pag 1/5. Sistemi e Reti (articolazione Telecomunicazione) Classe

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Linguistica dei Corpora (2) Lezione 3: Manipolare testi (non solo con cqp)

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

Il software del PC. Il BIOS

Il terminale per tutti

Esercitazione 2 GUIDA

GNU/Linux Concetti di base

GNU/Linux Concetti di base

Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica. Ing. Domenico De Guglielmo Vanessa Gardellin & Sara Lioba Volpi

Esempio 1. Creare uno script (file comandi) che abbia la sintassi:

Lavorare in ambiente UNIX. Prompt dei comandi (shell) Pipe e filtri (I/O) Tips and tricks

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

NOTE PER UTILIZZO COMPILATORE FORTRAN CON LINUX

NOZIONI BASE PER ESERCITAZIONI

01 Terminale e file system

COMANDI RAPIDI Tastiera italiana QWERTY

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

Utilizzo di putty. L uso base e molto semplice: richiede solo di specificare:

Il sistema operativo LINUX Script di Shell

Esplorare e modificare il file system Compilare con gcc Lanciare un programma da linea di comando

I comandi del DOS. Come si fornisce un comando al DOS

Bioinformatica II. Esercitazione 2 GUIDA

Sistema operativo Linux Ubuntu

INTRODUZIONE A WORD CHE COS E WORD AVVIARE E CHIUDERE WORD INTERFACCIA UTENTE DI WORD

Транскрипт:

Command line kung fu Bash, filtri & co. Riccardo Binetti punkerbino@gmail.com Corsi GNU/Linux Avanzati 2014 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 1 / 31

Il terminale? Nel 2014? Sì, il terminale viene usato anche nell era delle GUI stilose È agnostico rispetto a distribuzione, ambiente grafico e OS 1 Si può usare da remoto e/o su una macchina senza schermo Automatizzazione molto facilitata Se nulla altro sembra andare, un terminale non si nega a nessuno 1 Finché rimaniamo nei sistemi unix-like Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 2 / 31

Il terminale? Nel 2014? Sì, il terminale viene usato anche nell era delle GUI stilose È agnostico rispetto a distribuzione, ambiente grafico e OS 1 Si può usare da remoto e/o su una macchina senza schermo Automatizzazione molto facilitata Se nulla altro sembra andare, un terminale non si nega a nessuno 1 Finché rimaniamo nei sistemi unix-like Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 2 / 31

Il terminale? Nel 2014? Sì, il terminale viene usato anche nell era delle GUI stilose È agnostico rispetto a distribuzione, ambiente grafico e OS 1 Si può usare da remoto e/o su una macchina senza schermo Automatizzazione molto facilitata Se nulla altro sembra andare, un terminale non si nega a nessuno 1 Finché rimaniamo nei sistemi unix-like Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 2 / 31

Il terminale? Nel 2014? Sì, il terminale viene usato anche nell era delle GUI stilose È agnostico rispetto a distribuzione, ambiente grafico e OS 1 Si può usare da remoto e/o su una macchina senza schermo Automatizzazione molto facilitata Se nulla altro sembra andare, un terminale non si nega a nessuno 1 Finché rimaniamo nei sistemi unix-like Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 2 / 31

Il terminale? Nel 2014? Sì, il terminale viene usato anche nell era delle GUI stilose È agnostico rispetto a distribuzione, ambiente grafico e OS 1 Si può usare da remoto e/o su una macchina senza schermo Automatizzazione molto facilitata Se nulla altro sembra andare, un terminale non si nega a nessuno 1 Finché rimaniamo nei sistemi unix-like Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 2 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Un comando per domarli tutti man Se siete in dubbio su cosa faccia un comando, digitate man comando. Vi risolverà buona parte dei dubbi e vi risparmierà un po di "RTFM" La sintassi del comando sarà del tipo comando [opzioni] [argomenti] argomento. Tutto ciò che è tra parentesi quadre è opzionale, le opzioni si passano con uno o due trattini (- o --) Per cercare all interno della man page basta scrivere /terminecercato e premere Enter. Premendo n si passa al prossimo match. La ricerca non fa il wrap-around, arrivati alla fine della manpage premete p per tornare in cima Premendo q si esce dalla manpage man man Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 3 / 31

Muovere i primi passi ls elenca i file nella cartella corrente ls nomecartella -- elenca i file della cartella con quel nome -lah mostra i file incolonnati con maggiori informazioni (-l) includendo anche i file nascosti (-a) con le dimensioni in formato human-readable (-h) cd nomecartella ci sposta nella directory. è la directory corrente,.. è la directory un livello più in su pwd stampa la directory in cui ci si trova Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 4 / 31

Muovere i primi passi ls elenca i file nella cartella corrente ls nomecartella -- elenca i file della cartella con quel nome -lah mostra i file incolonnati con maggiori informazioni (-l) includendo anche i file nascosti (-a) con le dimensioni in formato human-readable (-h) cd nomecartella ci sposta nella directory. è la directory corrente,.. è la directory un livello più in su pwd stampa la directory in cui ci si trova Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 4 / 31

Muovere i primi passi ls elenca i file nella cartella corrente ls nomecartella -- elenca i file della cartella con quel nome -lah mostra i file incolonnati con maggiori informazioni (-l) includendo anche i file nascosti (-a) con le dimensioni in formato human-readable (-h) cd nomecartella ci sposta nella directory. è la directory corrente,.. è la directory un livello più in su pwd stampa la directory in cui ci si trova Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 4 / 31

Creiamo qualcosa touch nomefile crea un file vuoto se non esiste mkdir nomecartella crea una directory vuota Nota importante -p crea tutte le directory necessarie (e.g. mkdir a/b/c/ crea anche a e b se non esistono) Il filesystem Linux, a differenza di quello Windows, è case sensitive. Se create (o modificate) i file ricordate che foo Foo FOO Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 5 / 31

Creiamo qualcosa touch nomefile crea un file vuoto se non esiste mkdir nomecartella crea una directory vuota Nota importante -p crea tutte le directory necessarie (e.g. mkdir a/b/c/ crea anche a e b se non esistono) Il filesystem Linux, a differenza di quello Windows, è case sensitive. Se create (o modificate) i file ricordate che foo Foo FOO Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 5 / 31

Creiamo qualcosa touch nomefile crea un file vuoto se non esiste mkdir nomecartella crea una directory vuota Nota importante -p crea tutte le directory necessarie (e.g. mkdir a/b/c/ crea anche a e b se non esistono) Il filesystem Linux, a differenza di quello Windows, è case sensitive. Se create (o modificate) i file ricordate che foo Foo FOO Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 5 / 31

Io ti ho creato, io ti distruggo rm nomefile cancella un file -r se il file è una cartella, cancella ricorsivamente il suo contenuto rmdir nomecartella cancella una cartella solo se vuota Se siete paranoici: shred nomefile sovrascrive un file con bit random 3 volte -u dopo averlo sovrascritto, lo cancella Attenzione Nel terminale, non esiste un cestino. Una volta che avete rimosso un file, è perso per sempre. 2 2 A meno di strani magheggi con software forense Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 6 / 31

Io ti ho creato, io ti distruggo rm nomefile cancella un file -r se il file è una cartella, cancella ricorsivamente il suo contenuto rmdir nomecartella cancella una cartella solo se vuota Se siete paranoici: shred nomefile sovrascrive un file con bit random 3 volte -u dopo averlo sovrascritto, lo cancella Attenzione Nel terminale, non esiste un cestino. Una volta che avete rimosso un file, è perso per sempre. 2 2 A meno di strani magheggi con software forense Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 6 / 31

Io ti ho creato, io ti distruggo rm nomefile cancella un file -r se il file è una cartella, cancella ricorsivamente il suo contenuto rmdir nomecartella cancella una cartella solo se vuota Se siete paranoici: shred nomefile sovrascrive un file con bit random 3 volte -u dopo averlo sovrascritto, lo cancella Attenzione Nel terminale, non esiste un cestino. Una volta che avete rimosso un file, è perso per sempre. 2 2 A meno di strani magheggi con software forense Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 6 / 31

Io ti ho creato, io ti distruggo rm nomefile cancella un file -r se il file è una cartella, cancella ricorsivamente il suo contenuto rmdir nomecartella cancella una cartella solo se vuota Se siete paranoici: shred nomefile sovrascrive un file con bit random 3 volte -u dopo averlo sovrascritto, lo cancella Attenzione Nel terminale, non esiste un cestino. Una volta che avete rimosso un file, è perso per sempre. 2 2 A meno di strani magheggi con software forense Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 6 / 31

Modifiche di base ai file cp sorgente destinazione Copia il file sorgente nel file destinazione -r Da usare per copiare una directory mv sorgente destinazione Sposta il file sorgente in destinazione Si può usare per rinominare i file se destinazione è nella stessa cartella di sorgente ln -s sorgente /path/al/collegamento Crea un collegamento simbolico al file sorgente in /path/al/collegamento Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 7 / 31

Modifiche di base ai file cp sorgente destinazione Copia il file sorgente nel file destinazione -r Da usare per copiare una directory mv sorgente destinazione Sposta il file sorgente in destinazione Si può usare per rinominare i file se destinazione è nella stessa cartella di sorgente ln -s sorgente /path/al/collegamento Crea un collegamento simbolico al file sorgente in /path/al/collegamento Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 7 / 31

Modifiche di base ai file cp sorgente destinazione Copia il file sorgente nel file destinazione -r Da usare per copiare una directory mv sorgente destinazione Sposta il file sorgente in destinazione Si può usare per rinominare i file se destinazione è nella stessa cartella di sorgente ln -s sorgente /path/al/collegamento Crea un collegamento simbolico al file sorgente in /path/al/collegamento Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 7 / 31

Historia magistra vitae Ctrl+p o per andare indietro (comandi più vecchi) nella history dei comandi Ctrl+n o per avanti (comandi più recenti) nella history dei comandi Ctrl+r per effetturare la ricerca di una stringa nei comandi della history La history è salvata nel file.bash_history nella home dell utente Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 8 / 31

Historia magistra vitae Ctrl+p o per andare indietro (comandi più vecchi) nella history dei comandi Ctrl+n o per avanti (comandi più recenti) nella history dei comandi Ctrl+r per effetturare la ricerca di una stringa nei comandi della history La history è salvata nel file.bash_history nella home dell utente Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 8 / 31

Historia magistra vitae Ctrl+p o per andare indietro (comandi più vecchi) nella history dei comandi Ctrl+n o per avanti (comandi più recenti) nella history dei comandi Ctrl+r per effetturare la ricerca di una stringa nei comandi della history La history è salvata nel file.bash_history nella home dell utente Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 8 / 31

Historia magistra vitae Ctrl+p o per andare indietro (comandi più vecchi) nella history dei comandi Ctrl+n o per avanti (comandi più recenti) nella history dei comandi Ctrl+r per effetturare la ricerca di una stringa nei comandi della history La history è salvata nel file.bash_history nella home dell utente Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 8 / 31

Domande? Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 9 / 31

Domande? Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 9 / 31

Scriviamo qualcosa Dobbiamo poter modificare in qualche modo i nostri file. Text editors to the rescue! Ne vediamo 3 in particolare: nano vim emacs Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 10 / 31

nano nano è il miglior text editor del mondo cit. Nessuno Presente di default in tutte le maggiori distribuzioni Semplice da usare Piuttosto basilare Avviatelo sempre con l opzione -w (altrimenti spezza le righe troppo lunghe) I comandi sono segnati in basso ^X va interpretato come Ctrl+X Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 11 / 31

nano nano è il miglior text editor del mondo cit. Nessuno Presente di default in tutte le maggiori distribuzioni Semplice da usare Piuttosto basilare Avviatelo sempre con l opzione -w (altrimenti spezza le righe troppo lunghe) I comandi sono segnati in basso ^X va interpretato come Ctrl+X Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 11 / 31

vim I ve been using Vim for about 2 years now, mostly because I can t figure out how to exit it. Editor modale I modi di utilizzo base sono: Normal, Insert e Command mode Nella modalità Normal (a cui si accede premendo Esc) si può navigare all interno del file di testo Nella modalità Insert (a cui si accede premendo i in modalità Normal) si può modificare il file Nella modalità Command (a cui si accede premendo : in modalità Normal) si possono inserire comandi o impostazioni per l editor Aiuto, ho aperto vim per sbaglio, come esco? :wq per uscire salvando il file, :q! per uscire senza salvare Questo è l utilizzo base, si può usare in modo più avanzato 3 3 http://www.viemu.com/vi-vim-cheat-sheet.gif Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 12 / 31

vim I ve been using Vim for about 2 years now, mostly because I can t figure out how to exit it. Editor modale I modi di utilizzo base sono: Normal, Insert e Command mode Nella modalità Normal (a cui si accede premendo Esc) si può navigare all interno del file di testo Nella modalità Insert (a cui si accede premendo i in modalità Normal) si può modificare il file Nella modalità Command (a cui si accede premendo : in modalità Normal) si possono inserire comandi o impostazioni per l editor Aiuto, ho aperto vim per sbaglio, come esco? :wq per uscire salvando il file, :q! per uscire senza salvare Questo è l utilizzo base, si può usare in modo più avanzato 3 3 http://www.viemu.com/vi-vim-cheat-sheet.gif Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 12 / 31

emacs emacs is a great operating system, lacking only a decent editor GNU Emacs è un ambiente operativo che ha all interno un interprete Lisp C è una modalità per qualsiasi cosa (dal lettore mp3 allo psicologo) Il suo utilizzo si basa prevalentemente su combinazioni di tasti È estremamente personalizzabile e scriptabile Questa flessibilità si paga con un utilizzo di risorse maggiore Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 13 / 31

emacs emacs is a great operating system, lacking only a decent editor GNU Emacs è un ambiente operativo che ha all interno un interprete Lisp C è una modalità per qualsiasi cosa (dal lettore mp3 allo psicologo) Il suo utilizzo si basa prevalentemente su combinazioni di tasti È estremamente personalizzabile e scriptabile Questa flessibilità si paga con un utilizzo di risorse maggiore Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 13 / 31

Ma quindi, qual è l editor migliore? Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 14 / 31

Ma quindi, qual è l editor migliore? Se volete scatenare un flame tra utenti Linux, questa è un ottima domanda da fare. Non vi costa niente provarli tutti e scegliere qual è il migliore per voi. Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 15 / 31

Ma quindi, qual è l editor migliore? Se volete scatenare un flame tra utenti Linux, questa è un ottima domanda da fare. Non vi costa niente provarli tutti e scegliere qual è il migliore per voi. Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 15 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Bash++ cat concatena e stampa file su schermo less stampa file su schermo con una finestra scorrevole, come la manpage echo stampa il valore di un espressione locate cerca file in un database Il database va aggiornato periodicamente con il comando updatedb find cerca dei file all interno di una gerarchia di cartelle Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 16 / 31

Standard streams Ogni processo ha almeno 3 canali di comunicazione di default: stdin (0) il canale che di default riceve l input che l utente scrive sul terminale stdout (1) il canale che stampa l output vero e proprio del programma, di default stampa su terminale stderr (2) il canale che stampa gli errori del programma, anche questo di default stampa su terminale Con pipe e redirezioni si possono connettere in vari modi questi canali, creando delle vere e proprie catene di montaggio di comandi bash che permettono di risolvere molti problemi unendo tanti blocchi semplici. Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 17 / 31

Standard streams Ogni processo ha almeno 3 canali di comunicazione di default: stdin (0) il canale che di default riceve l input che l utente scrive sul terminale stdout (1) il canale che stampa l output vero e proprio del programma, di default stampa su terminale stderr (2) il canale che stampa gli errori del programma, anche questo di default stampa su terminale Con pipe e redirezioni si possono connettere in vari modi questi canali, creando delle vere e proprie catene di montaggio di comandi bash che permettono di risolvere molti problemi unendo tanti blocchi semplici. Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 17 / 31

Standard streams Ogni processo ha almeno 3 canali di comunicazione di default: stdin (0) il canale che di default riceve l input che l utente scrive sul terminale stdout (1) il canale che stampa l output vero e proprio del programma, di default stampa su terminale stderr (2) il canale che stampa gli errori del programma, anche questo di default stampa su terminale Con pipe e redirezioni si possono connettere in vari modi questi canali, creando delle vere e proprie catene di montaggio di comandi bash che permettono di risolvere molti problemi unendo tanti blocchi semplici. Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 17 / 31

Standard streams Ogni processo ha almeno 3 canali di comunicazione di default: stdin (0) il canale che di default riceve l input che l utente scrive sul terminale stdout (1) il canale che stampa l output vero e proprio del programma, di default stampa su terminale stderr (2) il canale che stampa gli errori del programma, anche questo di default stampa su terminale Con pipe e redirezioni si possono connettere in vari modi questi canali, creando delle vere e proprie catene di montaggio di comandi bash che permettono di risolvere molti problemi unendo tanti blocchi semplici. Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 17 / 31

Standard streams Ogni processo ha almeno 3 canali di comunicazione di default: stdin (0) il canale che di default riceve l input che l utente scrive sul terminale stdout (1) il canale che stampa l output vero e proprio del programma, di default stampa su terminale stderr (2) il canale che stampa gli errori del programma, anche questo di default stampa su terminale Con pipe e redirezioni si possono connettere in vari modi questi canali, creando delle vere e proprie catene di montaggio di comandi bash che permettono di risolvere molti problemi unendo tanti blocchi semplici. Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 17 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Redirezione comando < file connette stdin di un processo ad un file comando > file connette stdout di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando 2> file connette stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto comando &> file connette stdout e stderr di un processo ad un file. Se il file esiste viene cancellato e sovrascritto Utilizzando > > al posto di > in uno degli ultimi 3 comandi si ottiene lo stesso risultato ma il risultato viene aggiunto al file se esistente comando1 comando2 connette stdout di comando1 a stdin di comando2 Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 18 / 31

Esecuzione condizionale comando1 && comando2 esegue comando2 se e solo se comando1 ha successo (codice di ritorno = 0) comando1 comando2 esegue comando2 se e solo se comando1 fallisce (codice di ritorno 0) Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 19 / 31

Esecuzione condizionale comando1 && comando2 esegue comando2 se e solo se comando1 ha successo (codice di ritorno = 0) comando1 comando2 esegue comando2 se e solo se comando1 fallisce (codice di ritorno 0) Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 19 / 31

Alcuni filtri cut sort uniq wc tee head e tail grep Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 20 / 31

cut Estrae colonne delimitate da un carattere speciale da ogni riga di un file -d specifica il delimitatore (default Tab) -f specifica quale colonna estrarre (one-based) Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 21 / 31

sort Ordina le righe di un file -k specifica quali colonne del file usare come chiave per l ordinamento -t specifica il delimitatore tra le colonne (default whitespace) Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 22 / 31

uniq Stampa le righe uniche di un file già ordinato -c conta le occorrenze -d mostra solo i duplicati -u mostra solo i non duplicati Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 23 / 31

wc Conta righe, parole e caratteri -l mostra solo il numero di righe -w mostra solo il numero di parole -c mostra solo il numero di caratteri Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 24 / 31

tee Connette il suo stdin allo stdin di due o più file Utile per mostrare l output di un comando a schermo e darlo come input ad un altro comando Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 25 / 31

head e tail head mostra le prime 10 righe di un file, tail le ultime 10 -nx mostra le prime/ultime X righe tail -f permette di tenere d occhio un file a cui vengono continuamente aggiunte righe in coda (ad esempio un log) Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 26 / 31

grep Mostra le righe di un file che corrispondono ad un pattern (regular expression 4 ) -v attiva il match invertito (mostra le righe che non corrispondono) -i ricerca case insensitive -c conta i match -l mostra solo i nomi dei file con match -r ricerca ricorsivamente all interno dei file a partire da una cartella -E usa le extended regular expression 4 https://xkcd.com/208/ Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 27 / 31

Domande? Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 28 / 31

Domande? Demo! Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 28 / 31

Per approfondire Google is your friend Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 29 / 31

Last call Domande? Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 30 / 31

Goodbye and thanks for all the fish Grazie per l attenzione! Queste slides sono licenziate Creative Commons Attribution-ShareAlike 3.0 Unported http://www.poul.org Riccardo Binetti Bash e filtri Corsi Linux Avanzati 2014 31 / 31