koala@uunet.uu.net@chinet.uucp (07/02/88)
Posting-number: Volume 3, Issue 74 Submitted-by: "A. Nonymous" <koala@uunet.uu.net@chinet.uucp> Archive-name: safe-rm As long as im submitting the other stuff, here is a simple prg that you can alias to rm. Instead of removing the file, it moves it to a directory in your home called .trash. It comes with a prg called 'rec' which simply does the opposite. It has all kinds of options. First is 'trash' then 'rec'. -- Karl Meiser ..nucleus!{chinet,ddsw1,m-net} -------- trash #sccs "@(#)trash 1.5" #sccs "@(#)" #sccs "@(#)Tempoairly remove a file." #sccs "@(#)" #sccs "@(#)Copyright Karl Meiser 1988" #sccs "@(#)" #sccs "@(#)The following may be copied as long as no charge is given" #sccs "@(#)and the above notice stays intact" #sccs "@(#)" #sccs "@(#)I provide no warranty for its use nor am I liable for any #sccs "@(#)damages is causes." #sccs "@(#)" #sccs "@(#)Works only with ksh" if [ "$#" -eq 0 ] then print - print - "Usage: $0 [options] [files]" print - print - "Options: -k Remove Trashcan" print - " -l List Contents of Trashcan" print - " -r Remove entire directories" print - " -f Dont report errors" print - print - "Note that option -k will not work unless it is explicitlty used." print - "(Ie: $0 -k file will not work.)" print - print - "Note also that $0 -l file will work and will display a listing" print - "on that file (or files is wildcards are used) if it (they)" print - "are in your trashcan" print - print - "Files can be easily recoved using 'rec file(s)'. Wildcards are" print - "Supported, but must be quoted. (Ie: rec '_ab*')" print - exit fi if [ "$#" -eq 1 ] then case "$1" in -k*) print -n "Really remove ~/.trash: " read yn case "$yn" in y* |Y*) /bin/rm -fr ~/.trash ;; esac exit ;; -l*) cd ~/.trash shift eval dir $* exit ;; esac fi for x in $* do if [ "$x" = "-f" ] then err="n" else err="y" fi done if [ -d ~/.trash ] then : else if mkdir ~/.trash then : else if [ "$err" = "y" ] then print - "$0: Cant create ~/.trash" exit fi fi fi if [ "$1" = "-r" ] then shift for x in $* do if mv $x/* ~/.trash 2>/dev/null then : else if [ "$err" = "y" ] then print - "$0: Cant copy contents of directory $x" fi fi if rmdir $x 2>/dev/null then : else if [ "$err" = "y" ] then print - "$0: Cant Remove Directory $x" fi fi fi else for x in $* do if mv $x ~/.trash then : else if [ "$err" = "y" ] then print - "$0: Cant read $x" fi fi done fi -------- rec #sccs "@(#)rec 1.1" #sccs "@(#)" #sccs "@(#)Recover a file from Trashcan" #sccs "@(#)" #sccs "@(#)Copyright Karl Meiser 1988" #sccs "@(#)" #sccs "@(#)The following may be copied as long as no charge is given" #sccs "@(#)and the above notice stays intact" #sccs "@(#)" #sccs "@(#)I provide no warranty for its use nor am I liable for any #sccs "@(#)damages is causes." #sccs "@(#)" #sccs "@(#)Works only with ksh" if [ "$#" -eq 0 ] then print - print - "Usage: $0 [-f] file(s)" print - print - "The -f switch will cause errors to be suppressed" print - print - "This program will move files from the trashcan to the current" print - "Directory. Note that wildcards do work if quoted. (Ie:" print - "rec '_ab*' will work, but rec _ab* probally wont.)" print - exit fi cdir="$PWD" cd ~/.trash if [ "$1" = "-f" ] then shift mv $* $cdir 2>/dev/null else mv $* $cdir fi cd $cdir --------