Indice

Esercitazione 6

Esercizio 1

Completare le parti mancanti (sia codice che commento) del seguente script bash:

....                      # shell da usare per l’interpretazione dello script

if [ $# -ne 1 ]; then                        # (commenta il codice) ........
    echo usa: $(basename $0) nomedirectory   # .........
    exit -1
fi
dir=$1
if [ ! -d $dir ]; then                       # (commenta il codice) .........
    echo "L'argomento $dir non e' una directory"   
    exit 1;   
fi

bdir=$(basename $dir)
if [ -w ....... ]; then                     # il file esiste ed e scrivibile
    echo "il file $bdir.tar.gz esiste gia sovrascriverlo (S/N)?"
    read yn                                 # (commenta il codice) .........
    if [ "$yn" != "S" ]; then               # ..............
          exit 0;
    fi
    rm -f $bdir.tar.gz
fi
echo "creo l'archivio con nome $bdir.tar.gz"

tar cf $bdir.tar $dir ...............       # appende l’output dello std-error nel file error.txt   
if [ ...... ]; then                         # controllo che il comando sia andato a buon fine
    echo "Errore nella creazione dell'archivio"
    exit 1
fi
gzip $bdir.tar  ..........                  # appende l’output dello std-error nel file error.txt
if [ ...... ]; then                         # controllo che il comando sia andato a buon fine
    echo
    echo "Errore nella compressione dell'archivio"
    exit 1
fi

echo "archivio creato con successo, il contenuto dell’archivio e':"
tar tzvf $bdir.tar.gz   .........           # redirige lo std-error sullo std-output
exit 0

Esercizio 2

Scrivere uno script bash che prende “k>=2” nomi di file di ingresso e appende i primi “k-1” files nel file passato come ultimo argomento (k-esimo), scrivendo i file in ingresso nell'ordine da destra a sinistra (es. myscript.sh fileA fileB fileC – fileC conterra' in sequenza prima fileB e poi fileA).

Esercizio 3

Scrivere uno script bash che dati 2 file di testo in input (f1 ed f2) produce il seguente menu di scelta per l'utente:
1. rimuovere i file “f1” ed “f2”
2. archiviare i file “f1” ed “f2”
3. appendere il file “f1” al file “f2”
4. esci

Implementare le 3 opzioni e testare tutti i casi. Per l'opzione 1 chiedere conferma prima della rimozione dei file; per l'opzione 2 utilizzare i comandi tar e gzip in pipeline e produrre l'archivio compresso “f1f2.tar.gz”. Non utilizzare il builtin select per implementare il menu.

Esercizio 4

Scrivere uno script bash che preso in input un nome di file testuale che contiene solo linee con il seguente formato:

1490127894 - 21 0 23 0 20 2 32 15 1 0 0 0 0 0 4 3084940 13570834 4 6
1490127936 - 7054 1 191 1 905 6 7167 125 12 0 0 0 0 0 5 7239070 16676254 12 1035
1490127944 - 8261 2 218 3 1086 8 8394 148 15 0 0 0 0 0 3 8287914 18773540 15 1036
...

restituisce il valore massimo degli elementi nella colonna 17 e calcola la media degli elementi della stessa colonna.