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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

# ---------<br />

# Mo<strong>di</strong>ficate lo script in modo che registri i cambiamenti avvenuti<br />

#+ in /var/log/messages ad intervalli <strong>di</strong> venti minuti.<br />

# Suggerimento: usate il comando "watch".<br />

Come nel caso <strong>di</strong> find, le due parentesi graffe sostituiscono un testo.<br />

Esempio 12-6. Copiare i file della <strong>di</strong>rectory corrente in un’altra<br />

#!/bin/bash<br />

# copy<strong>di</strong>r.sh<br />

# Copia (con dettagli) tutti i file della <strong>di</strong>rectory corrente ($PWD)<br />

#+ nella <strong>di</strong>rectory specificata da riga <strong>di</strong> comando.<br />

E_NOARG=65<br />

if [ -z "$1" ] # Esce se non viene fornito nessun argomento.<br />

then<br />

echo "Utilizzo: ‘basename $0‘ <strong>di</strong>rectory-in-cui-copiare"<br />

exit $E_NOARG<br />

fi<br />

ls . | xargs -i -t cp ./{} $1<br />

# ^^ ^^ ^^<br />

# -t è l’opzione "verbose" (invia la riga <strong>di</strong> comando allo stderr).<br />

# -i è l’opzione "sostituisci stringhe".<br />

# {} è il segnaposto del testo <strong>di</strong> output.<br />

# E’ simile all’uso <strong>di</strong> una coppia <strong>di</strong> parentesi graffe in "find."<br />

#<br />

# Elenca i file presenti nella <strong>di</strong>rectory corrente (ls .),<br />

#+ passa l’output <strong>di</strong> "ls" come argomenti a "xargs" (opzioni -i -t),<br />

#+ quin<strong>di</strong> copia (cp) questi argomenti ({}) nella nuova <strong>di</strong>rectory ($1).<br />

# Il risultato finale è l’equivalente esatto <strong>di</strong><br />

# cp * $1<br />

# a meno che qualche nome <strong>di</strong> file contenga caratteri <strong>di</strong> "spaziatura".<br />

exit 0<br />

Esempio 12-7. Terminare un processo usando il suo nome<br />

#!/bin/bash<br />

# kill-byname.sh: Terminare i processi tramite i loro nomi.<br />

# Confrontate questo script con kill-process.sh.<br />

# Ad esempio,<br />

#+ provate "./kill-byname.sh xterm" --<br />

#+ e vedrete scomparire dal vostro desktop tutti gli xterm.<br />

# Attenzione:<br />

# ----------<br />

236

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

Saved successfully!

Ooh no, something went wrong!