View previous topic :: View next topic |
Author |
Message |
neon_old n00b
Joined: 25 Jul 2002 Posts: 17 Location: Italy
|
Posted: Mon Feb 07, 2005 7:36 pm Post subject: [tip] Creare un cestino per la shell |
|
|
- Prefazione:
Vi e' mai capitato di cancellare con rm (complice TAB) un file importante? Io proprio due giorni fa ho cancellato il mio make.conf.
E se invece di cancellare spostassimo i file in una directory che cron cancella una volta la settimana?
- Idea:
Creare due piccoli script che gestiscono la cartella ~/.trashcan. Il primo script deve spostare i file nella dir, il secondo messo in un job di cron svuotarla periodicamente.
- In pratica:
Il primo script si chiama butta ed e' una versione riadattata di uno script chiamato cestino che si trova negli Appunti di informatica libera.
Create da utente root il file in /usr/local/bin/butta
Code: | #!/bin/bash
TRASHCAN="$HOME/.trashcan"
if [ -e $TRASHCAN ]
then
if [ ! -d $TRASHCAN ]
then
echo "$TRASHCAN is not a directory"
exit 1
fi
else
if ! mkdir $TRASHCAN
then
echo "no dir"
echo "$TRASHCAN"
exit 1
fi
fi
if ! mv $* $TRASHCAN 2> /dev/null
then
if cp -dpR $* $TRASHCAN 2> /dev/null
then
rm -r $*
fi
fi
|
Dopo date un
Code: | # chmod +x /usr/local/bin/butta |
Aprite ~/.bashrc ed inserite un alias al comando rm
Ora tocca al secondo script. Io ho creato una dir ~/.cronscripts/ dove ho messo il file svuota
Code: | #!/bin/bash
TRASHCAN="$HOME/.trashcan"
STATUS=`ls $TRASHCAN | wc -l`
if [ ! $STATUS -eq 0 ]
then
/bin/rm $TRASHCAN/*
fi |
Ora bisogna editare la crontab dell'utente, io utilizzo fcron e faccio eseguire lo script una volta la settimana
Code: | %weekly * * $HOME/.cronscripts/svuota |
se utilizzate un altro demone cron molto probabilmente la sintassi sara' differente.
Fine:
Ora dovremmo avere (incrociando le dita) un cestino funzionante. Spero possa essere utile e soprattutto spero che qualcuno mi aiuti a migliorare questo sistema (di bash scripting non ci capisco un H)
Todo:
Modificare il primo script in modo da gestire in maniera differente i file grandi (ad es chiedere se eliminarli direttamente) ed il secondo in modo da controllare la data di modifica e cancellare solo i file vecchi.
|
|
Back to top |
|
|
mouser Veteran
Joined: 10 Aug 2004 Posts: 1419 Location: Milano
|
Posted: Mon Feb 07, 2005 7:42 pm Post subject: |
|
|
Ottimo tip, neon!!!!
Consiglio comunque a tutti di leggere bene prima di dare un rm, anche se digitato tutto a mano
Ciriciao
mouser |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 30884 Location: here
|
Posted: Mon Feb 07, 2005 7:46 pm Post subject: |
|
|
Aggiunto ai post utilissimi sezione tips _________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
Cazzantonio Bodhisattva
Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Mon Feb 07, 2005 8:00 pm Post subject: |
|
|
Code: | alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
|
io uso questi... non saranno eleganti come lo script ma fanno il loro dovere _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
|
X-Drum Advocate
Joined: 24 Aug 2003 Posts: 2517 Location: ('Modica','Trieste','Ferrara') Italy
|
Posted: Mon Feb 07, 2005 8:25 pm Post subject: |
|
|
aiuto ecco uno dei miei incubi che si tramuta in realta'!!!
scherzi a parte personalmente a me non piace l'idea del cestino brrr
pero' complimenti per lo sbattimento, credo che tornerà utile
a molti utenti
ciao _________________ "...There are two sort of lies, lies and benchmarks..." |
|
Back to top |
|
|
Cagnulein l33t
Joined: 18 Sep 2003 Posts: 861 Location: Modena, Italy
|
Posted: Mon Feb 07, 2005 8:30 pm Post subject: |
|
|
a questo punto è meglio creare un alias per l'rm invece che fare un comando nuovo |
|
Back to top |
|
|
neon_old n00b
Joined: 25 Jul 2002 Posts: 17 Location: Italy
|
Posted: Mon Feb 07, 2005 8:33 pm Post subject: |
|
|
X-Drum wrote: | aiuto ecco uno dei miei incubi che si tramuta in realta'!!!
scherzi a parte personalmente a me non piace l'idea del cestino brrr |
Effettivamente rm è un comando che non deve essere usato troppo alla leggera, ed il cestino sembra una soluzione da utonto ma trovo comodo poter ripristinare determinati file senza ricorrere ad un backup... |
|
Back to top |
|
|
X-Drum Advocate
Joined: 24 Aug 2003 Posts: 2517 Location: ('Modica','Trieste','Ferrara') Italy
|
Posted: Mon Feb 07, 2005 8:34 pm Post subject: |
|
|
cagnulein wrote: | a questo punto è meglio creare un alias per l'rm invece che fare un comando nuovo Wink |
beh no, sono due cose differenti.....
e credo che ci abbia pensat oprima di farlo
cmq sempre de gustibus la sua idea nn è malvagia imho
@neon: /me don't like cestino ma il tuo script è carino _________________ "...There are two sort of lies, lies and benchmarks..." |
|
Back to top |
|
|
neon_old n00b
Joined: 25 Jul 2002 Posts: 17 Location: Italy
|
Posted: Mon Feb 07, 2005 8:40 pm Post subject: |
|
|
Cagnulein wrote: | a questo punto è meglio creare un alias per l'rm invece che fare un comando nuovo |
Credo sia piu' comodo, cosi' il mio .bashrc non e' chilometrico e se voglio cambiare le funzioni del comando non devo toccare l'alias ma direttamente lo script a cui punta. Poi ovviamente si puo' anche infilare tutto in un unico alias |
|
Back to top |
|
|
silian87 Advocate
Joined: 06 Oct 2003 Posts: 2318 Location: Treviso, Italy
|
|
Back to top |
|
|
Dhaki Guru
Joined: 16 Jun 2004 Posts: 325 Location: Ticino - CH
|
Posted: Mon Feb 07, 2005 9:25 pm Post subject: |
|
|
Bel tip, mi pare una cosa sensata. Aggiungerei però un alias cosi:
Code: | alias del = "rm -i" |
molto utile nel caso bisogna eliminare file molto grandi, anche per esempio per problemi di spazio.
Aspettare una settimana che una iso di 700MB venga cancellata non é il massimo. |
|
Back to top |
|
|
.:deadhead:. Advocate
Joined: 25 Nov 2003 Posts: 2963 Location: Milano, Italy
|
Posted: Mon Feb 07, 2005 11:20 pm Post subject: |
|
|
Cazzantonio wrote: | Code: | alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
|
io uso questi... non saranno eleganti come lo script ma fanno il loro dovere | /me è la seconda cosa che fa dopo aver finito l'installazione di una gentoo [la prima è settare la password di root ] Cmq ottimo tip, ognuno ha il suo stile nel vivere con la console e credo che in molti apprezzeranno il tuo tip _________________ Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! |
|
Back to top |
|
|
neon_old n00b
Joined: 25 Jul 2002 Posts: 17 Location: Italy
|
Posted: Tue Feb 08, 2005 12:06 am Post subject: |
|
|
Dhaki wrote: | Bel tip, mi pare una cosa sensata. Aggiungerei però un alias cosi:
Code: | alias del = "rm -i" |
molto utile nel caso bisogna eliminare file molto grandi, anche per esempio per problemi di spazio.
Aspettare una settimana che una iso di 700MB venga cancellata non é il massimo. |
Pensavo di inserire un controllo nello script. Per i file piu' grandi di tot mb viene chiesto cosa fare, ma non sono molto bravo con lo scripting bash. Se qualcuno vuole inviare questa modifica sarebbe cosa gradita |
|
Back to top |
|
|
silian87 Advocate
Joined: 06 Oct 2003 Posts: 2318 Location: Treviso, Italy
|
Posted: Tue Feb 08, 2005 12:22 am Post subject: |
|
|
Puoi controllare la grandezza con un du -h...tipo:
Code: |
MAX_SIZE="" # Qua metti la dimensione in bytes.
du_output=`du -bs $file` # $file e' il nome del file da analizzare
set -- $du_output # Visto che l'output di questo comando da: dimensione | file
# E' bene pescare solo il primo vslore (che e' quello che serve)
size=$1
if [ "$size" -gt "$MAX_SIZE" ]
then
echo "Cosa vuoi fare?"
read answerer
... # Metti le azioni
else
... #Solita procedura
fi |
Dovrebbe andare _________________ Musica che ascolto: http://www.last.fm/user/silian87/
Silian87 FAQs: http://marentax.homelinux.org/~silian87/silian87-faq.txt
GTalk: silian87@gmail.com |
|
Back to top |
|
|
neon_old n00b
Joined: 25 Jul 2002 Posts: 17 Location: Italy
|
Posted: Tue Feb 08, 2005 12:40 am Post subject: |
|
|
Grazie... nel frattempo ci ho lavorato pure io
Quote: | if [ `du $* | cut -f 1` -gt "2000" ]
then
`/bin/rm -i $*`
exit 1
fi
|
domani vedo di fare qualche prova |
|
Back to top |
|
|
silian87 Advocate
Joined: 06 Oct 2003 Posts: 2318 Location: Treviso, Italy
|
|
Back to top |
|
|
xoen Guru
Joined: 06 Sep 2003 Posts: 472 Location: /dev/null
|
Posted: Thu Feb 10, 2005 1:16 am Post subject: |
|
|
silian87 wrote: | Che figata.... non sapevo la storia del cut.... usavo sempre set... in certi casi e' meglio uno, in altri l'altro. Qua era piu' pratico cut imho. |
Ca**o ma è davvero geniale 'sto comando!!
PS: Ancora una volta il pipeing si dimostra una genialità _________________ xoen.Blog()
god@paradise # tar xfvjp big-bang.tar.bz2 -C universe |
|
Back to top |
|
|
|