Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[tip] Creare un cestino per la shell
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
neon_old
n00b
n00b


Joined: 25 Jul 2002
Posts: 17
Location: Italy

PostPosted: Mon Feb 07, 2005 7:36 pm    Post subject: [tip] Creare un cestino per la shell Reply with quote

  • 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
    Code:
    alias rm="butta"

    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:
    crontab -e

    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
View user's profile Send private message
mouser
Veteran
Veteran


Joined: 10 Aug 2004
Posts: 1418
Location: Milano

PostPosted: Mon Feb 07, 2005 7:42 pm    Post subject: Reply with quote

Ottimo tip, neon!!!!

Consiglio comunque a tutti di leggere bene prima di dare un rm, anche se digitato tutto a mano :D

Ciriciao
mouser :wink:
_________________
Della serie: "Informatica for dummies":

Io: "Premi il tasto Invio" - Risp: "Ma il tasto Invio è quello con scritto Enter sopra?"
Io: "Scrivi T maiuscolo" - Risp: "Questa tastiera non ha le lettere maiuscole..."
Back to top
View user's profile Send private message
fedeliallalinea
Bodhisattva
Bodhisattva


Joined: 08 Mar 2003
Posts: 13200
Location: here

PostPosted: Mon Feb 07, 2005 7:46 pm    Post subject: Reply with quote

Aggiunto ai post utilissimi sezione tips
_________________
"aspetto un'emozione sempre più indefinibile"
- CCCP -
"la libertà un doveroso pericolo in verità"
- PGR -
Questions are guaranteed in life; Answers aren't.
Back to top
View user's profile Send private message
Cazzantonio
Bodhisattva
Bodhisattva


Joined: 20 Mar 2004
Posts: 4477
Location: In giro

PostPosted: Mon Feb 07, 2005 8:00 pm    Post subject: Reply with quote

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 :wink:
_________________
Any man's death diminishes me, because I am involved in mankind, and therefore never send to know for whom the bell tolls; it tolls for thee
-John Donne
Back to top
View user's profile Send private message
X-Drum
Advocate
Advocate


Joined: 24 Aug 2003
Posts: 2517
Location: ('Modica','Trieste','Ferrara') Italy

PostPosted: Mon Feb 07, 2005 8:25 pm    Post subject: Reply with quote

aiuto ecco uno dei miei incubi che si tramuta in realta'!!! :lol:

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
View user's profile Send private message
Cagnulein
l33t
l33t


Joined: 18 Sep 2003
Posts: 861
Location: Modena, Italy

PostPosted: Mon Feb 07, 2005 8:30 pm    Post subject: Reply with quote

a questo punto è meglio creare un alias per l'rm invece che fare un comando nuovo ;)
Back to top
View user's profile Send private message
neon_old
n00b
n00b


Joined: 25 Jul 2002
Posts: 17
Location: Italy

PostPosted: Mon Feb 07, 2005 8:33 pm    Post subject: Reply with quote

X-Drum wrote:
aiuto ecco uno dei miei incubi che si tramuta in realta'!!! :lol:

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
View user's profile Send private message
X-Drum
Advocate
Advocate


Joined: 24 Aug 2003
Posts: 2517
Location: ('Modica','Trieste','Ferrara') Italy

PostPosted: Mon Feb 07, 2005 8:34 pm    Post subject: Reply with quote

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 :P

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
View user's profile Send private message
neon_old
n00b
n00b


Joined: 25 Jul 2002
Posts: 17
Location: Italy

PostPosted: Mon Feb 07, 2005 8:40 pm    Post subject: Reply with quote

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
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Mon Feb 07, 2005 8:50 pm    Post subject: Reply with quote

io spesso uso semplicemente un alias a rm:
Code:
alias rm='mv -R'

_________________
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
View user's profile Send private message
Dhaki
Guru
Guru


Joined: 16 Jun 2004
Posts: 325
Location: Ticino - CH

PostPosted: Mon Feb 07, 2005 9:25 pm    Post subject: Reply with quote

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
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2956
Location: Milano, Italy

PostPosted: Mon Feb 07, 2005 11:20 pm    Post subject: Reply with quote

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 :wink:
/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
View user's profile Send private message
neon_old
n00b
n00b


Joined: 25 Jul 2002
Posts: 17
Location: Italy

PostPosted: Tue Feb 08, 2005 12:06 am    Post subject: Reply with quote

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
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Tue Feb 08, 2005 12:22 am    Post subject: Reply with quote

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
View user's profile Send private message
neon_old
n00b
n00b


Joined: 25 Jul 2002
Posts: 17
Location: Italy

PostPosted: Tue Feb 08, 2005 12:40 am    Post subject: Reply with quote

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
View user's profile Send private message
silian87
Advocate
Advocate


Joined: 06 Oct 2003
Posts: 2318
Location: Treviso, Italy

PostPosted: Tue Feb 08, 2005 1:15 am    Post subject: Reply with quote

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.
_________________
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
View user's profile Send private message
xoen
Guru
Guru


Joined: 06 Sep 2003
Posts: 472
Location: /dev/null

PostPosted: Thu Feb 10, 2005 1:16 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Page 1 of 1

 
Jump to:  
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