Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index International Gentoo Users Forum italiano (Italian) Risorse italiane (documentazione e tools)
  • Search

[TIP] il cestino per la shell!!! aka shellTrash

Forum riservato alla documentazione in italiano.

Moderator: ago

Post Reply
  • Print view
Advanced search
5 posts • Page 1 of 1
Author
Message
RollsAppleTree
Guru
Guru
User avatar
Posts: 340
Joined: Fri Feb 18, 2005 3:32 pm
Location: Sicilia - Catania
Contact:
Contact RollsAppleTree
Website

[TIP] il cestino per la shell!!! aka shellTrash

  • Quote

Post by RollsAppleTree » Thu Mar 22, 2007 2:41 pm

Quante volte avrete detto:
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: Select all

#!/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:

Code: Select all

chmod +x no-rm.sh
Adesso non ci resta che fare un bell’alias …

Code: Select all

nano ~/.bashrc
in maniera tale che ogni volta che scriviamo “rm” invece mandi inesecuzione il nostro script:

Code: Select all

alias rm='/home/$USER/no-rm.sh'
Ed il gioco dovrebbe essere fatto :D

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 all’utente l’utilizzo dell’alias.
In ogni caso funziona perfettamente :D

Altri script simili:

http://poetry.freaknet.org/poetryminiho ... _linux_ram
http://www.debianitalia.org/modules/wfs ... ticleid=78
http://www.lugnu.it/index.php?option=co ... 3&Itemid=2

credits: my blog!!! :D
http://rollsappletree.altervista.org/20 ... -tua-bash/
RollsAppleTree BLOG !!!
Documentazione in Italiano su Gentoo
F.A.Q. in Italiano su Gentoo
Top
Guglie
Apprentice
Apprentice
User avatar
Posts: 240
Joined: Mon Mar 01, 2004 1:04 pm
Location: switzerland - zürich
Contact:
Contact Guglie
Website

Re: [TIP] il cestino per la shell!!! aka shellTrash

  • Quote

Post by Guglie » Sat Mar 24, 2007 12:50 pm

un po' di consigli:

Code: Select all

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: Select all

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!
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

Re: [TIP] il cestino per la shell!!! aka shellTrash

  • Quote

Post by cloc3 » Tue Mar 27, 2007 3:35 am

RollsAppleTree wrote:

Code: Select all

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: Select all

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
Top
RollsAppleTree
Guru
Guru
User avatar
Posts: 340
Joined: Fri Feb 18, 2005 3:32 pm
Location: Sicilia - Catania
Contact:
Contact RollsAppleTree
Website

Re: [TIP] il cestino per la shell!!! aka shellTrash

  • Quote

Post by RollsAppleTree » Tue Mar 27, 2007 4:15 pm

cloc3 wrote:
RollsAppleTree wrote:

Code: Select all

alias rm='/home/$USER/no-rm.sh'
ma adesso, se l'utente vuole vuotare il cestino, che comando usa?
tasto destro-> svuota cestino :D
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: Select all

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 .... :D

cmq continuiamo a suggerire, così ne facciamo na versione bellina (ovvero ben lontana dalla mia :D )... è 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
Top
cloc3
Advocate
Advocate
User avatar
Posts: 4840
Joined: Tue Jan 13, 2004 10:09 am
Location: http://www.gentoo-users.org/user/cloc3/
Contact:
Contact cloc3
Website

Re: [TIP] il cestino per la shell!!! aka shellTrash

  • Quote

Post by cloc3 » Tue Mar 27, 2007 8:51 pm

RollsAppleTree wrote: tasto destro-> svuota cestino :D
:D
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 ... :D .
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
Top
Post Reply
  • Print view

5 posts • Page 1 of 1

Return to “Risorse italiane (documentazione e tools)”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy