View previous topic :: View next topic |
Author |
Message |
RollsAppleTree Guru
Joined: 18 Feb 2005 Posts: 340 Location: Sicilia - Catania
|
Posted: Thu Mar 22, 2007 2:41 pm Post subject: [TIP] il cestino per la shell!!! aka shellTrash |
|
|
Quante volte avrete detto:
Quote: | porca misera, ho cancellato dei file importantissimi!!! Adesso come li recupero??? |
Se li avete cancellati via interfaccia grafica, nessun problema
li avete nel cestino
Ma se li avete cancellati via linea di comando???
Stavo lavorando alla mia tesi, ed ero anche arrivato ad un buon punto, quando -PORCA MISERIACCIA- un rm malandrino mi ha cancellato dei file importantissimi!!!
SCONFORTO E TERRORE !!!
Per questo mi sono deciso a scrivere questo piccolo scriptino che crea un cestino anche per i files cancellati da riga di comando, per intenderci, con il solito rm
eccolo:
no-rm.sh
Code: |
#!/bin/bash
touch .tmpListaFinale # file temporaneo di appoggio, metterò li la lista di switch legali del mio fake-rm
for comandi in $*
do
if [ $comandi != '-rf' ]
then
echo -n $comandi >> .tmpListaFinale # se è diverso da "-r" lo metto nella lista
echo -n " ">>.tmpListaFinale # poi metto uno spazio
else
echo -n " -f ">>.tmpListaFinale
fi
done
echo "eseguo: mv" `cat .tmpListaFinale` nel cestino# echo di debug
mv `cat .tmpListaFinale` ~/.Trash # rimuovo il file temporaneo
|
Veramente semplice, no?
Non fa altro che leggere il vostro comando, controllare che non ci siano dei -r tra gli switch (per la cancellazione ricorsiva, il comando mv non ha questo switch, e darebbe errore) e trasforma il tutto in un bel mv
Ovvero sposta i files nel cestino (si, proprio così, nel cestino del vostro desktop) !!!
Diamo i permessi di esecuzione allo script:
Adesso non ci resta che fare un bellalias
in maniera tale che ogni volta che scriviamo rm invece mandi inesecuzione il nostro script:
Code: | alias rm='/home/$USER/no-rm.sh' |
Ed il gioco dovrebbe essere fatto
N.B. E ovvio che questo script sarebbe potuto essere scritto meglio, ma il mio intento era solo quello di sbrigarmi nel farlo e soprattutto di rendere trasparente allutente lutilizzo dellalias.
In ogni caso funziona perfettamente
Altri script simili:
http://poetry.freaknet.org/poetryminihowto/buttiamo_linux_ram
http://www.debianitalia.org/modules/wfsection/article.php?articleid=78
http://www.lugnu.it/index.php?option=com_content&task=view&id=73&Itemid=2
credits: my blog!!!
http://rollsappletree.altervista.org/2007/03/20/ecco-il-cestino-per-la-tua-bash/ _________________ RollsAppleTree BLOG !!!
Documentazione in Italiano su Gentoo
F.A.Q. in Italiano su Gentoo |
|
Back to top |
|
|
Guglie Apprentice
Joined: 01 Mar 2004 Posts: 240 Location: switzerland - zürich
|
Posted: Sat Mar 24, 2007 12:50 pm Post subject: Re: [TIP] il cestino per la shell!!! aka shellTrash |
|
|
un po' di consigli:
Code: | if [ $comandi != '-rf' ] |
mv non ha l'opzione di ricorsività (visto che sposta direttamente tutte le sottodirectory), che però si può passare
con in 3 modi (-r, -R, --recursiv).
inoltre l'opzione -r la si può passare attaccata ad altre (rm -rf name_dir) oppure singolarmente (rm -r -f name_dir)
perciò ti consiglio di usare un parser degli argomenti (come getopt) per togliere in modo più pulito -r
Code: | mv `cat .tmpListaFinale` ~/.Trash # rimuovo il file temporaneo |
nemmeno questo è molto pulito: se hai una partizione per /home e un'altra per / e cancelli un file che non è nella home del tuo utente il file viene prima copiato sull'altra partizione e poi cancellato. freedeskotp prevede una directory /.Trash per questi casi
se hai voglia di perfezionarlo ti consiglio di leggere le specifiche di freedesktop per l'implementazione di Trash _________________ A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath! |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Tue Mar 27, 2007 3:35 am Post subject: Re: [TIP] il cestino per la shell!!! aka shellTrash |
|
|
RollsAppleTree wrote: |
Code: | alias rm='/home/$USER/no-rm.sh' |
|
ma adesso, se l'utente vuole vuotare il cestino, che comando usa?
inoltre. c'è una ragione per generare un file temporaneo listafinale?
mi sembra che tu non cancelli quel file ( touch è diverso da > ) e accedi ad esso in append, in modo che al secondo accesso rimane memoria del primo.
io avrei preferito una variabile interna, che funziona in questo modo:
Code: |
cloc3@s939 ~/prova $ cat listaFinale.sh
#!/bin/bash
listaFinale=""
for comandi in $*; do
listaFinale=${listaFinale}" "$comandi
done
echo $listaFinale
|
_________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
RollsAppleTree Guru
Joined: 18 Feb 2005 Posts: 340 Location: Sicilia - Catania
|
Posted: Tue Mar 27, 2007 4:15 pm Post subject: Re: [TIP] il cestino per la shell!!! aka shellTrash |
|
|
cloc3 wrote: | RollsAppleTree wrote: |
Code: | alias rm='/home/$USER/no-rm.sh' |
|
ma adesso, se l'utente vuole vuotare il cestino, che comando usa?
|
tasto destro-> svuota cestino
cloc3 wrote: |
inoltre. c'è una ragione per generare un file temporaneo listafinale?
mi sembra che tu non cancelli quel file ( touch è diverso da > ) e accedi ad esso in append, in modo che al secondo accesso rimane memoria del primo.
io avrei preferito una variabile interna, che funziona in questo modo:
Code: |
cloc3@s939 ~/prova $ cat listaFinale.sh
#!/bin/bash
listaFinale=""
for comandi in $*; do
listaFinale=${listaFinale}" "$comandi
done
echo $listaFinale
|
|
ehmmm ... non sapevo come concatenare variabili interne ....
cmq continuiamo a suggerire, così ne facciamo na versione bellina (ovvero ben lontana dalla mia )... è veramente na seccatura quando nella cancellazione spasmodica via shell facciamo fuori cose importanti ...[/quote] _________________ RollsAppleTree BLOG !!!
Documentazione in Italiano su Gentoo
F.A.Q. in Italiano su Gentoo |
|
Back to top |
|
|
cloc3 Advocate
Joined: 13 Jan 2004 Posts: 4809 Location: http://www.gentoo-users.org/user/cloc3/
|
Posted: Tue Mar 27, 2007 8:51 pm Post subject: Re: [TIP] il cestino per la shell!!! aka shellTrash |
|
|
RollsAppleTree wrote: |
tasto destro-> svuota cestino
|
perfetto. da console. incrocio le dita che Kde non abbia definito anche lui l'alias nel proprio environment.
in tal caso puoi sempre loggarti da root ... .
RollsAppleTree wrote: |
cmq continuiamo a suggerire
|
bè, il consiglio migliore viene da Guglie.
per il resto, man bash. _________________ vu vu vu
gentù
mi piaci tu |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|