ciao a tutti spero possiate aiutarmi con questo script..devo risolvere l'esercizio per domani urgentemente e ammettendo la mia incapacità in materie informatiche vi dico che ho trovato la soluzione su internet ma quando provo a lanciarlo non funziona...mi sapete dire quali sono gli errori che non mi permettono di soddisfare la richiesta dell'esercizio?? grazie grazie fra
Eccolo:
Scrivere uno script che accetta come parametri una sequenza di nomi di file (ordinari o
directory) e li rimuove spostandoli nella cartella .cestino della propria home (invece di cancellarli fisicamente). Nel caso in cui la directory .cestino non esista, lo script dovrà crearla. Nel caso in cui i file da rimuovere abbiano dei nomi che corrispondono ad altri file già presenti in .cestino , lo script dovrà chiedere all’utente se desidera sovrascriverli. Si implementino inoltre le seguenti opzioni:
-l che permette di visualizzare il contenuto della directory .cestino
;
-e che svuota la directory .cestino
;
-r nomefile percorsoche ripristina il file nomefile spostandolo dalla directory .cestino a quella specificata da percorso. Nel caso in cui nella directory di destinazione esista già un
file con lo stesso nome, lo script dovrà chiedere all’utente se desidera sovrascriverlo.
Si gestiscano opportunamente gli errori e si provi lo script su alcuni esempi significativi.
codice:#!/bin/bash # controllo argomenti if [ $# -lt 1 ] ; then echo "Uso: cestina.sh file1 file2 ...." echo " cestina.sh -l" echo " cestina.sh -e" echo " cestina.sh -r nomefile percorso" exit 1 fi # controlla l’esistenza del cestino. Se non c’è lo crea cestino=$HOME/.cestino if [ ! -e $cestino ] ; then mkdir $cestino if [ $? != 0 ] ; then echo "ERRORE: impossible creare il cestino." exit 1 fi fi # controlla il primo argomento e vedi se è un’opzione case $1 in "-l") # Elenca i file in .cestino if [ $# -ne 1 ] ; then echo "Uso: cestina.sh -l" exit 1 fi echo "CONTENUTO DEL CESTINO:" ls $cestino ;; "-e") # Svuota il cestino if [ $# -ne 1 ] ; then echo "Uso: cestina.sh -p" exit 1 fi rm -rf $cestino/ * echo "CESTINO SVUOTATO." ;; "-r") # recupera il file if [ $# -ne 3 ] ; then echo "Uso: cestina.sh -r nomefile percorso" exit 1 fi nomefile=$2 percorso=$3 if [ ! -e $cestino/$nomefile ] ; then echo "ERRORE: il file da recuperare non è presente nel cestino." exit 1 fi if [ ! -d $percorso ] ; then echo "ERRORE: il secondo argomento deve essere una directory." exit 1 fi if [ -e $percorso/$nomefile ] ; then echo -n "Il file esiste già! Sovrascrivere? (s/n): " read risp if [ $risp != "s" -a $risp != "S" ] ; then echo "recupero annullato." exit 1 fi fi echo "recupero il file " $nomefile mv -f $cestino/$nomefile $percorso ;; * ) # nessun argomento, sposta i file nel cestino for f in $ * ; do echo "Cancellazione di " $f if [ ! -e $f ] ; then echo "ERRORE: il file " $f " non esiste." elif [ -e $cestino/$(basename $f) ] then echo -n "Il file " $f "esiste già nel cestino! Sovrascrivere? (s/n): " read risp if [ $risp != "s" -a $risp != "S" ] ; then echo "Rimozione di " $f " annullata." exit 1 else mv -f $f $cestino fi else mv -f $f $cestino fi done ;; esac