From: Bart Schaefer <schaefer@brasslantern.com>
To: zsh-users@zsh.org
Subject: Re: Is there a RM_TILDE_WAIT?
Date: Tue, 28 Jan 2014 08:51:31 -0800 [thread overview]
Message-ID: <140128085131.ZM21235@torch.brasslantern.com> (raw)
In-Reply-To: <CAM-0MpV1=NmFu8kq06VD2vWwjDWUkAedvJO7yE=25d2fUiFykQ@mail.gmail.com>
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 "$@"
}
prev parent reply other threads:[~2014-01-28 16:51 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-27 12:18 Florian Hofmann
2014-01-28 16:51 ` Bart Schaefer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=140128085131.ZM21235@torch.brasslantern.com \
--to=schaefer@brasslantern.com \
--cc=zsh-users@zsh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).