11.04.2013 Views

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

Guida avanzata di scripting Bash - Portale Posta DMI

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

tail<br />

# niente (verifica la riga) s/.* //<br />

# niente (verifica la riga) q (quit)<br />

Capitolo 12. Filtri, programmi e coman<strong>di</strong> esterni<br />

# In questo esempio, sed legge solo la sua prima riga <strong>di</strong> input.<br />

# Esegue entrambi i coman<strong>di</strong> e visualizza la riga (con la sostituzione) prima<br />

#+ <strong>di</strong> uscire (a causa del comando "q"), perché non gli è stata passata<br />

#+ l’opzione "-n".<br />

# ======================================================================= #<br />

# Un’alternativa ancor più semplice al precedente script <strong>di</strong> una sola riga,<br />

#+ potrebbe essere:<br />

# head -c4 /dev/urandom| od -An -tu4<br />

exit 0<br />

Ve<strong>di</strong> anche Esempio 12-35.<br />

visualizza la parte finale <strong>di</strong> un file allo stdout (il valore preimpostato è <strong>di</strong> 10 righe). Viene<br />

comunemente usato per tenere traccia delle mo<strong>di</strong>fiche al file <strong>di</strong> log <strong>di</strong> sistema con l’uso dell’opzione<br />

-f, che permette <strong>di</strong> visualizzare le righe accodate al file.<br />

Esempio 12-14. Utilizzare tail per controllare il log <strong>di</strong> sistema<br />

#!/bin/bash<br />

nomefile=sys.log<br />

cat /dev/null > $nomefile; echo "Creazione / cancellazione del file."<br />

# Crea il file nel caso non esista, mentre lo svuota se è già stato creato.<br />

# vanno bene anche : > nomefile e > nomefile.<br />

tail /var/log/messages > $nomefile<br />

# /var/log/messages deve avere i permessi <strong>di</strong> lettura perché lo script funzioni.<br />

echo "$nomefile contiene la parte finale del log <strong>di</strong> sistema."<br />

exit 0<br />

Suggerimento: Per in<strong>di</strong>viduare una riga specifica in un file <strong>di</strong> testo, si colleghi con una pipe<br />

l’output <strong>di</strong> head a tail -1. Per esempio head -8 database.txt | tail -1 rintraccia l’8Â ◦<br />

riga del file database.txt.<br />

Per impostare una variabile ad un determinato blocco <strong>di</strong> un file <strong>di</strong> testo:<br />

var=$(head -$m $nomefile | tail -$n)<br />

# nomefile = nome del file<br />

# m = dall’inizio del file, numero <strong>di</strong> righe mancanti alla fine del blocco<br />

# n = numero <strong>di</strong> righe a cui va impostata la variabile (dalla fine del blocco)<br />

254

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!