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.

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

I coman<strong>di</strong> standard UNIX rendono gli script <strong>di</strong> shell più versatili. La potenza degli script deriva<br />

dall’abbinare, in semplici costrutti <strong>di</strong> programmazione, coman<strong>di</strong> <strong>di</strong> sistema e <strong>di</strong>rettive <strong>di</strong> shell.<br />

12.1. Coman<strong>di</strong> fondamentali<br />

ls<br />

I primi coman<strong>di</strong> che il principiante deve conoscere<br />

Il comando fondamentale per “elencare” i file. È molto facile sottostimare la potenza <strong>di</strong> questo<br />

umile comando. Per esempio, l’uso dell’opzione -R, ricorsivo, con ls provvede ad elencare la<br />

<strong>di</strong>rectory in forma <strong>di</strong> struttura ad albero. Altre utili opzioni sono: -S, per or<strong>di</strong>nare l’elenco in base<br />

alla <strong>di</strong>mensione, -t, per or<strong>di</strong>narlo in base alla data <strong>di</strong> mo<strong>di</strong>fica e -i per mostrare gli inode dei file<br />

(ve<strong>di</strong> Esempio 12-4).<br />

Esempio 12-1. Utilizzare ls per creare un sommario da salvare in un CDR<br />

#!/bin/bash<br />

# ex40.sh (burn-cd.sh)<br />

# Script per rendere automatica la registrazione <strong>di</strong> un CDR.<br />

VELOC=2 # Potete utilizzare una velocità più elevata<br />

#+ se l’hardware la supporta.<br />

FILEIMMAGINE=c<strong>di</strong>mage.iso<br />

CONTENUTIFILE=contenuti<br />

DISPOSITIVO=cdrom<br />

# DISPOSITIVO="0,0" Per le vecchie versioni <strong>di</strong> cdrecord<br />

DEFAULTDIR=/opt # Questa è la <strong>di</strong>rectory contenente i dati da registrare.<br />

# Accertatevi che esista.<br />

# Esercizio: aggiungente un controllo che lo verifichi.<br />

# Viene usato il programma "cdrecord" <strong>di</strong> Joerg Schilling:<br />

# http://www.fokus.fhg.de/usr/schilling/cdrecord.html<br />

# Se questo script viene eseguito da un utente or<strong>di</strong>nario va impostato<br />

#+ il bit suid <strong>di</strong> cdrecord (chmod u+s /usr/bin/cdrecord, da root).<br />

# Naturalmente questo crea una falla nella sicurezza, anche se non rilevante.<br />

if [ -z "$1" ]<br />

then<br />

DIRECTORY_IMMAGINE=$DEFAULTDIR<br />

# Viene usata la <strong>di</strong>rectory predefinita se non ne viene specificata<br />

#+ alcuna da riga <strong>di</strong> comando.<br />

else<br />

DIRECTORY_IMMAGINE=$1<br />

fi<br />

224

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

Saved successfully!

Ooh no, something went wrong!