home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume3 / safe-rm < prev    next >
Internet Message Format  |  1989-02-03  |  4KB

  1. Path: xanth!mcnc!gatech!mandrill!hal!ncoast!allbery
  2. From: koala@uunet.uu.net@chinet.uucp
  3. Newsgroups: comp.sources.misc
  4. Subject: v03i074: Hello Again
  5. Message-ID: <8807011634.AA19536@chinet.UUCP>
  6. Date: 1 Jul 88 21:34:25 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Reply-To: koala@uunet.uu.net@chinet.uucp
  9. Lines: 212
  10. Approved: allbery@ncoast.UUCP
  11.  
  12. Posting-number: Volume 3, Issue 74
  13. Submitted-by: "A. Nonymous" <koala@uunet.uu.net@chinet.uucp>
  14. Archive-name: safe-rm
  15.  
  16. As long as im submitting the other stuff,  here is a simple prg that
  17. you can alias to rm.
  18.  
  19. Instead of removing the file,  it moves it to a directory in your home
  20. called .trash.
  21.  
  22. It comes with a prg called 'rec' which simply does the opposite.
  23.  
  24. It has all kinds of options.  First is 'trash' then 'rec'.
  25.  
  26. --
  27.  
  28. Karl Meiser
  29. ..nucleus!{chinet,ddsw1,m-net}
  30.  
  31. --------  trash
  32.  
  33.  
  34. #sccs      "@(#)trash     1.5"
  35. #sccs      "@(#)"
  36. #sccs      "@(#)Tempoairly remove a file."
  37. #sccs      "@(#)"
  38. #sccs      "@(#)Copyright  Karl Meiser  1988"
  39. #sccs      "@(#)"
  40. #sccs      "@(#)The following may be copied as long as no charge is given"
  41. #sccs     "@(#)and the above notice stays intact"
  42. #sccs      "@(#)"
  43. #sccs      "@(#)I provide no warranty for its use nor am I liable for any
  44. #sccs     "@(#)damages is causes."
  45. #sccs      "@(#)"
  46. #sccs      "@(#)Works only with ksh"
  47.  
  48. if [ "$#" -eq 0 ]
  49. then
  50.  
  51.   print -
  52.   print - "Usage: $0 [options] [files]"
  53.   print -
  54.   print - "Options:  -k  Remove Trashcan"
  55.   print - "          -l  List Contents of Trashcan"
  56.   print - "          -r  Remove entire directories"
  57.   print - "          -f  Dont report errors"
  58.   print - 
  59.   print - "Note that option -k will not work unless it is explicitlty used."
  60.   print - "(Ie:  $0 -k file  will not work.)"
  61.   print - 
  62.   print - "Note also that $0 -l file will work and will display a listing"
  63.   print - "on that file  (or files is wildcards are used)  if it  (they)"
  64.   print - "are in your trashcan"
  65.   print - 
  66.   print - "Files can be easily recoved using 'rec file(s)'.  Wildcards are"
  67.   print - "Supported,  but must be quoted.  (Ie:  rec '_ab*')"
  68.   print - 
  69.  
  70.   exit
  71.  
  72. fi
  73.  
  74.  
  75.  
  76.  
  77.  
  78. if [ "$#" -eq 1 ]
  79. then
  80.   case "$1" in
  81.     -k*)  print -n "Really remove ~/.trash: "
  82.           read yn
  83.  
  84.           case "$yn" in
  85.                 y* |Y*) /bin/rm -fr ~/.trash ;;
  86.           esac
  87.  
  88.           exit ;;
  89.  
  90.     -l*)  cd ~/.trash
  91.           shift
  92.           eval dir $*
  93.           exit ;;
  94.   esac
  95. fi
  96. for x in $*
  97. do
  98.  
  99.   if [ "$x" = "-f" ]
  100.   then
  101.     err="n"
  102.   else
  103.     err="y"
  104.   fi
  105.  
  106. done
  107.  
  108. if [ -d ~/.trash ]
  109. then :
  110. else
  111.   if mkdir ~/.trash
  112.   then :
  113.   else
  114.     if [ "$err" = "y" ]
  115.     then
  116.       print - "$0: Cant create ~/.trash"
  117.       exit
  118.     fi
  119.   fi
  120. fi
  121.  
  122. if [ "$1" = "-r" ]
  123. then
  124.  
  125.   shift
  126.  
  127.   for x in $*
  128.   do
  129.  
  130.     if mv $x/* ~/.trash 2>/dev/null
  131.     then :
  132.     else
  133.       if [ "$err" = "y" ]
  134.       then
  135.  
  136.         print - "$0: Cant copy contents of directory $x"
  137.  
  138.       fi
  139.     fi
  140.  
  141.     if rmdir $x 2>/dev/null
  142.     then :
  143.     else
  144.       if [ "$err" = "y" ]
  145.       then
  146.  
  147.         print - "$0: Cant Remove Directory $x"
  148.  
  149.       fi
  150.     fi
  151.   fi
  152.  
  153. else
  154.  
  155.   for x in $*
  156.   do 
  157.  
  158.     if mv $x ~/.trash
  159.     then :
  160.     else
  161.       if [ "$err" = "y" ]
  162.       then
  163.         print - "$0: Cant read $x"
  164.       fi
  165.     fi
  166.  
  167.   done
  168.  
  169. fi
  170.  
  171. --------  rec
  172.  
  173.  
  174. #sccs      "@(#)rec   1.1"
  175. #sccs      "@(#)"
  176. #sccs      "@(#)Recover a file from Trashcan"
  177. #sccs      "@(#)"
  178. #sccs      "@(#)Copyright  Karl Meiser  1988"
  179. #sccs      "@(#)"
  180. #sccs      "@(#)The following may be copied as long as no charge is given"
  181. #sccs     "@(#)and the above notice stays intact"
  182. #sccs      "@(#)"
  183. #sccs      "@(#)I provide no warranty for its use nor am I liable for any
  184. #sccs     "@(#)damages is causes."
  185. #sccs      "@(#)"
  186. #sccs      "@(#)Works only with ksh"
  187.  
  188. if [ "$#" -eq 0 ]
  189. then
  190.  
  191.   print -
  192.   print - "Usage: $0 [-f] file(s)"
  193.   print -
  194.   print - "The -f switch will cause errors to be suppressed"
  195.   print -
  196.   print - "This program will move files from the trashcan to the current"
  197.   print - "Directory.  Note that wildcards do work if quoted.  (Ie:"
  198.   print - "rec '_ab*' will work,  but rec _ab*  probally wont.)"
  199.   print -
  200.  
  201.   exit
  202.  
  203. fi
  204.  
  205. cdir="$PWD"
  206.  
  207. cd ~/.trash
  208.  
  209. if [ "$1" = "-f" ]
  210. then
  211.  
  212.   shift
  213.   mv $* $cdir 2>/dev/null
  214.  
  215. else
  216.  
  217.   mv $* $cdir
  218.  
  219. fi
  220.  
  221. cd $cdir
  222.  
  223. --------
  224.