Input Output

tastiera     cpu             monitor

Standard Input                                   Elaborazione dei dati             Standard Output

Le redirezioni

Normalmente quando eseguiamo un comando il suo risultato viene stampato a video.
Per esempio il comando echo "Ciao mondo" stampa a video la stringa "Ciao mondo", perche' lo 'standard output' del programma e' la consolle.

 Ci sono tre canali predefiniti per i comandi in Linux, lo 'standard input', lo 'standard output' e lo 'standard error', spesso il secondo e il terzo coincidono per permetterci di vedere gli errori generati, ma altrettanto spesso gli errori, e quindi lo standard error vengono rediretti su di un file di log.

La redirezione ci permette di modificare i comportamenti standard del programma, i suoi operatori sono:

> redirige lo standard output su di un file sovrascrivendo i dati
>> redirige lo standard output su di un file appendendo alla fine i dati
2> redirige lo standard error su di un file sovrascrivendo i dati
2>> redirige lo standard error su di un file appendendo alla fine i dati


Esempio:

echo "Ciao mondo"> mio.file
cat mio.file

stampera':

"Ciao mondo"

echo "mi appendero' al file" >> mio.file

cat mio.file

stampera':

"Ciao mondo"
"mi appendero' al file"

Tabella riassuntiva delle ridirezioni :

comando > file
Ridirige l'output del comando su file, se file non esiste verrà creato, se esiste verrà sovrascritto
comando 2> file
Ridirige i messsaggi di errore generati su file se file non esiste verrà creato, se esiste verrà sovrascritto
comando >> file
Accoda l'output del comando al file mantenedo i dati preesistenti
comando 2>>  file  
Accoda gli errori del comando al file mantenedo i dati preesistenti
comando < file
Utilizza il contenuto di file come input per il comando


Pipe   "|"

Le pipe permettono di passare a un comando come argomento il risultato di un altro comando, possiamo cosi' concatenare piu' comandi per ottenere quello che vogliamo. Per iniziare concateneremo il risultato del comando "cat", che tra le altre funzioni e' utile per leggere un file, al comando grep, che ci restituisce le righe di un file che corrispondono ad un criterio di ricerca.

Se volessimo trovare nel file /etc/passwd la riga che si riferisce all'utente
"test" presente nel sistema potremmo digitare:

cat /etc/passwd | grep test

il risultato sarebbe

test:x:502:502::/home/test:/bin/bash

Il comando cat "passa" il contenuto del file al comando "grep" che esegue la ricerca e ci restituisce il risultato sullo standard output.

Possiamo concatenare pipe e redirezioni:

cat /etc/passwd | grep test > mio.file

non apparira' nulla perche' lo indirizziamo sul file, leggiamo il file

cat mio.file

il risultato:

test:x:502:502::/home/test:/bin/bash


Le wildcards


Nell'utilizzo quotidiano dei comandi, oppure negli script, capita spesso di dover automatizzare delle procedure agendo su un numero variabile di file. A tale scopo vengono utilizzati dei caratteri "jolly",
che permettono di agire su una lista numerosa di file con delle caratteristiche stabilite.

I metacaratteri supportati sono :

*            Espande zero o più caratteri
           Espande un unico carattere
[a-z]       Espande un carattere nell'intervallo a-z
[abc]       Espande un carattere nell'insieme (a,b,c)
^                Vieta la corrispondenza successiva (ad esempio [^abc])
~               Rappresenta la home degli utenti


Esempio:

per rimuovere tutti i file con estensione .jpg dalla directory /tmp si può utilizzare la seguente sintassi:


[root@tontolo root]# rm -rf /tmp/*.jpg
[root@tontolo root]#

[root@tontolo root]# cat test[123]

Questo comando visualizza i file test1 test2 test3 test123 .

[root@tontolo root]# cat test[^123]


Questo comando visualizza i file test1 test2 test3 ma NON test123 .


<indice>    <avanti>