![]()
![]()
![]()
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>