Aiuto con un esercizio per bash

Salve ragazzi, purtroppo non sono ancora molto pratico di script e devo aiutare un amico a cui è stato assegnato un esercizio:

Realizzare uno script che effettui la cancellazione con cestino con possibilità di recupero dei dati. Lo script deve sostituire il comando “rm” in modo da spostare il file o le directory (rm -r) in una directory speciale nascosta chiamata “cestino”. Lo script deve eseguire il comando di copia prima di cancellare il file oppure eseguire direttamente un mv per spostare il file nel cestino.

Poi ci sono altre specifiche, però mi servirebbe una mano almeno ad iniziare…

Aiuti? :slight_smile:
Grazie anticipatamente.

per iniziare:

$ mkdir $HOME/.cestino

crea la directory nascosta
poi:

$ alias canc="mv $1 -t $HOME/.cestino/"

crea un alias: canc
uso:$ canc nome_file
$1 contiene nome_file
mv -t --> trasferisce in directory $HOME/.cestino

Non so come farei se non ci fossi tu. Comunque l’esercizio è un po’ più complicato, temo che anche all’inizio vada sviluppato un po’ di più:

Realizzare uno script che effettui la cancellazione con cestino con possibilità di recupero dei dati. Lo script deve sostituire il comando “rm” in modo da spostare il file o le directory (rm -r) in una directory speciale nascosta chiamata “cestino”. Lo script deve eseguire il comando di copia prima di cancellare il file oppure eseguire direttamente un mv per spostare il file nel cestino. Nel cestino non devono essere presenti file con lo stesso nome in tal caso devono essere rinominati. Bisogna anche prevedere la possibilità del recupero dei file nella stessa posizione dalla quale erano stati rimossi.
Lo script deve prevedere la possibilità di elencare il contenuto del cestino e/o cercare un file nel cestino per poi poterlo recuperare.
Lo script deve prevedere la cancellazione di file più vecchi di un certo numero di giorni che può essere dato in input allo script.

fino a qui:

[quote]
Realizzare uno script che effettui la cancellazione con cestino con possibilità di recupero dei dati. Lo script deve sostituire il comando “rm” in modo da spostare il file o le directory (rm -r) in una directory speciale nascosta chiamata “cestino”. Lo script deve eseguire il comando di copia prima di cancellare il file oppure eseguire direttamente un mv per spostare il file nel cestino.[/quote]
è fatto, ora tocca a te, prova a creare un algoritmo senza usare il codice per la seconda parte.

Perfetto, ci provo, avrete mie notizie :slight_smile:

Allora ho proceduto (ha proceduto) così:

[code]#!/bin/bash
if ! -d ~/Cestino ]]; then
mkdir Cestino
fi
for elenco in “$@”;do
touch -m “$elenco”
elenco="${elenco%/}"
nome="${elenco##*/}"
if -e ~/Cestino/"$nome" ]];then
cont=1
nome="$nome-$cont"
$((cont++))
fi
mv $1 ~ $HOME/.Cestino/$nome

echo "Dopo quanti giorni vuoi eliminare il file?"
read $giorni
done
--purge-older-than $giorni #find ~/Cestino/* -atime +$giorni -exec rm '{}' ';'
echo "vuoi ripristinare qualche file?"
read scelta
if  $scelta == "si" ]];then
   echo "inserisci il nome del file da ripristinare"
   read nomeripr
   if  -e ~/Cestino/"$nomeripr" ]];then
   --recover/$nomeripr
   else echo "File non presente nel cestino"
   fi
fi[/code]

Allora ci sono delle cose che chiaramente non vanno, in particolare l’esercizio prevede due comandi del genere:

[code]safe-rm --recover=/home/roby/test.sh (per recuperare il file e ripristinarlo nella giusta directory)

safe-rm --purge-older-than=7 (per cancellare file più vecchi di 7 giorni dal cestino).[/code]

Io credo che fino alla linea tratteggiata sia ok, poi invece non vada più bene, il problema è che non so come creare dei sottocomandi ovvero --purge-older-than e --recover.

Spero di essere stato sufficientemente chiaro, aiuti?

*/

per ottenere questa prestazione occorre costruire in .cestino un file di appoggio contenente due informazione per file contenuto nel cestino stesso:

  1. data di trasferimento nel cestino
  2. percorso originale del file
    queste informazioni dovrebbero essere conservata all’atto dello spostamento del file nel cestino.

fatto questo, il comando :
–recover dovrebbe prevedere la ricerca del percorso originale, lo spostamento del file e la cancellazione dei dati dal file di appoggio

–purge dovrebbe prevedere la ricerca sulle date, la cancellazioni dei file individuati dal cestino e la cancellazione dei dati dei file purgati dal file di appoggio