zsh-users
 help / color / mirror / code / Atom feed
* Is there a RM_TILDE_WAIT?
@ 2014-01-27 12:18 Florian Hofmann
  2014-01-28 16:51 ` Bart Schaefer
  0 siblings, 1 reply; 2+ messages in thread
From: Florian Hofmann @ 2014-01-27 12:18 UTC (permalink / raw)
  To: zsh-users

[-- Attachment #1: Type: text/plain, Size: 539 bytes --]

Hi all!

In a sudden lapse of reason I deleted part of my home by typing "rm -rf ~"
instead of "rm -rf *" (to delete the folder content). While "rm -rf *"
warns me, "rm -rf ~" just went on and wracked havoc.

I know this probably happen doesn't happen often (at least this is the
first time I did this in 10+ years of Linux usage), but to prevent this
from happening "rm -rf ~" just trigger the the same prompt as "rm -rf *",
shouldn't it?

Kind regards,
Florian

PS: Fortunately I did a full backup just this morning, so nothing is lost.

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Is there a RM_TILDE_WAIT?
  2014-01-27 12:18 Is there a RM_TILDE_WAIT? Florian Hofmann
@ 2014-01-28 16:51 ` Bart Schaefer
  0 siblings, 0 replies; 2+ messages in thread
From: Bart Schaefer @ 2014-01-28 16:51 UTC (permalink / raw)
  To: zsh-users

On Jan 27,  1:18pm, Florian Hofmann wrote:
}
} I know this probably happen doesn't happen often (at least this is the
} first time I did this in 10+ years of Linux usage), but to prevent this
} from happening "rm -rf ~" just trigger the the same prompt as "rm -rf *",
} shouldn't it?

The warning on "*" happens when it appears anywhere in the argument list
where "rm" is the command word.  I mention this just in case what you
really want is a delay when the -r and -f options are used together.

The latter can easily be done with a function; the only magic part of
RM_STAR_WAIT is that it tests the command line before globbing has a
chance to expand the "*".  Similarly a function can test whether any
of the arguments is $HOME without needing to know that it was expanded
from a tilde.

Here is such a function.  I'm sure you can see how to tweak it to your
liking, e.g., it could detect -i/--interactive and skip the prompt, etc.

For those pedantic types who would point out that this might prompt as
a result of files named with a leading hyphen, I'll just note that the
scan done by the internal RM_STAR handling is no more sophisticated.

rm() {
  integer i f r h
  for ((i = 1; i <= ARGC; ++i)) do
    if [[ $argv[i] = $HOME ]]
    then ((h++))
    elif [[ $argv[i] != --* ]]
    then
      [[ $argv[i] = -*r* ]] && ((r++))
      [[ $argv[i] = -*f* ]] && ((f++))
    else
      [[ $argv[i] = --recursive ]] && ((r++))
      [[ $argv[i] = --force ]] && ((f++))
    fi
  done

  if (( r && f && h )) && [[ -o RM_STAR_WAIT ]]
  then
    print -u2 "zsh: sure you want to recursively delete $HOME ?"
    print -u2 "(waiting ten seconds)"
    sleep 10
    read -q '? [y/n]?' || return 1
  fi

  command rm "$@"
}


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-01-28 16:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-27 12:18 Is there a RM_TILDE_WAIT? Florian Hofmann
2014-01-28 16:51 ` Bart Schaefer

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).