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