Protection from "rm *" (summary)

Jack Morrison jackm at agcsun.UUCP
Tue Oct 9 02:27:53 AEST 1990


I seem to have stirred up a little action here with the idea of having
a non-writable file "#" in each directory to catch an accidental "rm *".

This gets down to personal preference, but:

* I don't think falling into the habit of "rm -f" would be a problem, since
  I rarely *want* to say "rm *". In fact, if I'm deleting everything, I'm
  probably deleting the directory too, in which case I'll be up one level
  typing "rm -rf dirname".

* I don't object to aliasing rm, just to creating a mess on the disk for the
  99.9% of the time I typed what I *meant* to type. On the other hand, I don't
  want to alias rm to "rm -i", because it's only "rm *" that's likely to be
  a mistake.

* I *do* have a "del" script that lists all the files I've asked to delete,
  and asks for one confirmation. (It's included below). I tend to use this 
  when I want to delete a bunch of files, but want to be sure what the wild 
  carding is going to get me. In otherwords, instead of ls <expr> and then 
  rm <expr>. I also explicitly use "rm -i" when I *know* the wildcard is 
  going to hit some things I don't want deleted.

* My favorite reply was the idea of creating a file "-i". Pretty sneaky.
  One disadvantage is that if I really did mean "rm *", it's going to
  ask me about *everything*, instead of a single query to make sure.
  I suppose other commands might get confused seeing a "-i" too. 
  (And some users seemed to be confused about how to remove the "-i" file).

* Eirik Fuller suggests a subdirectory with links back to the files I don't 
  want to delete by accident. I find that a bit too much work, and worry
  about keeping the subdirectory up to date as new files are created.

* Jay Plett points out that some systems automatically delete files with
  names beginning in "#" periodically. If this is the case, another
  pre-alphabetic name could be used instead. I'd guess that the automatic
  purger would leave read-only files alone anyway, but it might not.

* Frank Peters (and others) point out that tcsh, among other benefits, has 
  a variable you can set that will ask for confirmation if you say 'rm *'. 

My conclusion (so far) is that the non-writable "#" is an innocent way to
do what I want when using csh.

Oh, here's my "del" shell script (with no guarantees):
=====================================================================
: delete files with confirmation
if test $# -eq 0
then
 echo usage: del file ...
else
 if test $# -eq 1
 then
  echo -n delete $* '(y)?' 1>&2
 else
  ls $*
  echo -n 'delete these files (y)?' 1>&2
 fi
 read answer
 if test x$answer = xn -o x$answer = xno
 then
  echo no 1>&2
 else
  echo yes 1>&2
  rm $*
 fi
fi
=====================================================================
-- 
"How am I typing?  Call 1-303-279-1300"     Jack C. Morrison
Ampex Video Systems    581 Conference Place, Golden CO 80401



More information about the Comp.unix.misc mailing list