[GRASS-dev] [bug #5483] (grass) g.mremove through gis manager GUI seems not to work well

this bug's URL: http://intevation.de/rt/webrt?serial_num=5483
-------------------------------------------------------------------------

Subject: g.mremove through gis manager GUI seems not to work well

Platform: GNU/Linux/ppc
grass obtained from: Mirror of Trento site
grass binary for platform: Compiled from Sources
GRASS Version: GRASS6.2/6.3

Aldo Clerici.
The command File > Manage maps and volumes > Remove maps using expressions and wildcards require an acknowledgment in the form:

Collecting map names for current mapset <esercizi>....
g.remove rast=geology.new,slope.new
Did you mean this (y/n)?

But it seems not to accept any kind of input (y,yes,n,no). It seems to wait for something else.

Same behaviour in grass6.2 and 6.3.
The same command g.mremove in command line mode works well.

-------------------------------------------- Managed by Request Tracker

Request Tracker wrote on 02/07/2007 10:59 AM:

this bug's URL: http://intevation.de/rt/webrt?serial_num=5483
-------------------------------------------------------------------------

Subject: g.mremove through gis manager GUI seems not to work well

Platform: GNU/Linux/ppc
grass obtained from: Mirror of Trento site
grass binary for platform: Compiled from Sources
GRASS Version: GRASS6.2/6.3

Aldo Clerici. The command File > Manage maps and volumes > Remove maps using expressions and wildcards require an acknowledgment in the form:

Collecting map names for current mapset <esercizi>....
g.remove rast=geology.new,slope.new
Did you mean this (y/n)?

But it seems not to accept any kind of input (y,yes,n,no). It seems to wait for something else.
  
Aldo,
up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

Markus

Same behaviour in grass6.2 and 6.3.
The same command g.mremove in command line mode works well.

-------------------------------------------- Managed by Request Tracker

_______________________________________________
grass-dev mailing list
grass-dev@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass-dev
  

Markus Neteler wrote:

> Subject: g.mremove through gis manager GUI seems not to work well
>
> Platform: GNU/Linux/ppc
> grass obtained from: Mirror of Trento site
> grass binary for platform: Compiled from Sources
> GRASS Version: GRASS6.2/6.3
>
> Aldo Clerici.
> The command File > Manage maps and volumes > Remove maps using expressions and wildcards require an acknowledgment in the form:
>
> Collecting map names for current mapset <esercizi>....
> g.remove rast=geology.new,slope.new
> Did you mean this (y/n)?
>
> But it seems not to accept any kind of input (y,yes,n,no). It seems to wait for something else.
>

Aldo,
up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

I've committed a fix which removes the prompting code. The -f flag
remains for compatibility but is ignored.

--
Glynn Clements <glynn@gclements.plus.com>

These kinds of interactive questions and often extraneous warnings seem to
be popping a lot recently. It's almost like they were built into the code
but not being triggered and some recent change has triggered them.

An especially annoying one warns me that map I am using is indeed the same
map that I am using in the mapset where I'm working.

The problem reported here hangs the code in the auto-generated gui dialogs
for modules, not the general GIS Manager gui. I haven't ventured into that
code much; Cedric Shock and Glynn Clements know it best. I suspect that
you're right and the -f flag needs to be added as a default when the module
is started without arguments (i.e., launches the module GUI).

The odd thing is that this was not happening until recently. So the larger
question is why are we now getting a lot of verbose warnings and interaction
request that didn't happen before?

Michael

On 2/7/07 3:07 AM, "Markus Neteler" <neteler@itc.it> wrote:

Request Tracker wrote on 02/07/2007 10:59 AM:

this bug's URL: http://intevation.de/rt/webrt?serial_num=5483
-------------------------------------------------------------------------

Subject: g.mremove through gis manager GUI seems not to work well

Platform: GNU/Linux/ppc
grass obtained from: Mirror of Trento site
grass binary for platform: Compiled from Sources
GRASS Version: GRASS6.2/6.3

Aldo Clerici.
The command File > Manage maps and volumes > Remove maps using expressions
and wildcards require an acknowledgment in the form:

Collecting map names for current mapset <esercizi>....
g.remove rast=geology.new,slope.new
Did you mean this (y/n)?

But it seems not to accept any kind of input (y,yes,n,no). It seems to wait
for something else.
  
Aldo,
up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

Markus

Same behaviour in grass6.2 and 6.3.
The same command g.mremove in command line mode works well.

-------------------------------------------- Managed by Request Tracker

_______________________________________________
grass-dev mailing list
grass-dev@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass-dev
  
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

I didn't read far enough in my mail list today. Thanks very much Glynn for
fixing this.

Michael

On 2/7/07 7:59 AM, "Glynn Clements" <glynn@gclements.plus.com> wrote:

Markus Neteler wrote:

Subject: g.mremove through gis manager GUI seems not to work well

Platform: GNU/Linux/ppc
grass obtained from: Mirror of Trento site
grass binary for platform: Compiled from Sources
GRASS Version: GRASS6.2/6.3

Aldo Clerici.
The command File > Manage maps and volumes > Remove maps using expressions
and wildcards require an acknowledgment in the form:

Collecting map names for current mapset <esercizi>....
g.remove rast=geology.new,slope.new
Did you mean this (y/n)?

But it seems not to accept any kind of input (y,yes,n,no). It seems to wait
for something else.
  
Aldo,
up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

I've committed a fix which removes the prompting code. The -f flag
remains for compatibility but is ignored.

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution & Social Change
Center for Social Dynamics & Complexity
Arizona State University

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

Aldo:

> > Subject: g.mremove through gis manager GUI seems not to work well
> >
> > The command File > Manage maps and volumes > Remove maps using
> > expressions and wildcards require an acknowledgment in the form:
> >
> > Collecting map names for current mapset <esercizi>....
> > g.remove rast=geology.new,slope.new
> > Did you mean this (y/n)?
> >
> > But it seems not to accept any kind of input (y,yes,n,no). It
> > seems to wait for something else.

Markus:

> up to now interactive input in tcl based dialogs is not possible.
> Using the -f flag (force removal) you can delete also in gis.m.
>
> Probably we need to enforce -f somehow in gis.m - how to do that?

Glynn:

I've committed a fix which removes the prompting code. The -f flag
remains for compatibility but is ignored.

I understand the push to remove interactive, but this one is a fairly
important failsafe and I wouldn't mind it staying. With the -f flag a
non-interactive mode is available. An -i or --interactive flag as rm
uses could be added, but who would bother setting up an alias to use it?
Problably not the new users who would benefit from it the most.

To answer Markus's question, you can preset/hint an option's answer in
the GUI by giving it on the command line and adding the --ui switch to
force a GUI:

g.mremove -f --ui

I've backported a fix using this method to the 6.2 GUI menu.tcl:
-command {execute "g.mremove -f --ui" }}

.. as for 6.3, ?

Hamish

Michael Barton wrote:

These kinds of interactive questions and often extraneous warnings
seem to be popping a lot recently. It's almost like they were built
into the code but not being triggered and some recent change has
triggered them.

..

The odd thing is that this was not happening until recently. So the
larger question is why are we now getting a lot of verbose warnings
and interaction request that didn't happen before?

No, I think this is a long standing problem, nothing new.
Maybe we are just getting wider testing of the 6.2 code now?

An especially annoying one warns me that map I am using is indeed the
same map that I am using in the mapset where I'm working.

Can you cite a specfic command that triggers that & file it in a bug
report?

Hamish

On Thu, 8 Feb 2007, Hamish wrote:

Markus:

up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

Glynn:

I've committed a fix which removes the prompting code. The -f flag
remains for compatibility but is ignored.

I understand the push to remove interactive, but this one is a fairly
important failsafe and I wouldn't mind it staying. With the -f flag a

I agree this seems a bit of a dangerous change, especially since an easy workaround was available... hope it doesn't catch anybody out who is just experimenting with a wildcard pattern but not sure if it's the one they want! I know I have used it like that in the past anyway.

non-interactive mode is available. An -i or --interactive flag as rm
uses could be added, but who would bother setting up an alias to use it?
Problably not the new users who would benefit from it the most.

To answer Markus's question, you can preset/hint an option's answer in
the GUI by giving it on the command line and adding the --ui switch to
force a GUI:

g.mremove -f --ui

I've backported a fix using this method to the 6.2 GUI menu.tcl:
-command {execute "g.mremove -f --ui" }}

.. as for 6.3, ?

Hamish

_______________________________________________
grass-dev mailing list
grass-dev@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass-dev

Hamish wrote:

> > up to now interactive input in tcl based dialogs is not possible.
> > Using the -f flag (force removal) you can delete also in gis.m.
> >
> > Probably we need to enforce -f somehow in gis.m - how to do that?

> I've committed a fix which removes the prompting code. The -f flag
> remains for compatibility but is ignored.

I understand the push to remove interactive, but this one is a fairly
important failsafe and I wouldn't mind it staying. With the -f flag a
non-interactive mode is available. An -i or --interactive flag as rm
uses could be added, but who would bother setting up an alias to use it?
Problably not the new users who would benefit from it the most.

A -i flag would be all well and good, *if* you could guarantee that
there was a terminal from which to obtain the user's response.

Fixing bugs (e.g. assuming the presence of a terminal) takes
precedence over implementing wishes (e.g. a -i flag).

There's also the issue that currently there's no way to tell the GUI
that it needs to either hide the -i flag from the user, or use an
xterm if the -i flag is enabled.

Ultimately, a module is either interactive or it isn't. If it's even
slightly interactive, then it's interactive, and that reduces its
usability.

To answer Markus's question, you can preset/hint an option's answer in
the GUI by giving it on the command line and adding the --ui switch to
force a GUI:

g.mremove -f --ui

I've backported a fix using this method to the 6.2 GUI menu.tcl:
-command {execute "g.mremove -f --ui" }}

What happens if the user deselects the -f switch from the GUI? Is
there any way to kill the hung process?

--
Glynn Clements <glynn@gclements.plus.com>

Glynn Clements wrote:

> > I've committed a fix which removes the prompting code. The -f flag
> > remains for compatibility but is ignored.

Hamish wrote:
> you can preset/hint an option's answer in the GUI by giving it on
> the command line and adding the --ui switch to force a GUI:
>
> g.mremove -f --ui
>
> I've backported a fix using this method to the 6.2 GUI menu.tcl:
> -command {execute "g.mremove -f --ui" }}

Glynn:

Ultimately, a module is either interactive or it isn't. If it's even
slightly interactive, then it's interactive, and that reduces its
usability.

..

What happens if the user deselects the -f switch from the GUI? Is
there any way to kill the hung process?

Then they get stuck. We'd have to change the option's description which
read: "-f (use only if you know what you are doing)". Users are likely
to deselect it based on that, esp if they are new.

Other alternatives:

* remove g.mremove from the GUI menu all together -- leave it as a power
tool from the command line if you know what you are doing.

* write a wrapper --script for g.mremove which doesn't include the -f
flag, and have the GUI call that.

Hamish

Paul Kelly wrote:

On Thu, 8 Feb 2007, Hamish wrote:

Markus:

up to now interactive input in tcl based dialogs is not possible.
Using the -f flag (force removal) you can delete also in gis.m.

Probably we need to enforce -f somehow in gis.m - how to do that?

Glynn:

I've committed a fix which removes the prompting code. The -f flag
remains for compatibility but is ignored.

I understand the push to remove interactive, but this one is a fairly
important failsafe and I wouldn't mind it staying. With the -f flag a

I agree this seems a bit of a dangerous change, especially since an easy
workaround was available... hope it doesn't catch anybody out who is
just experimenting with a wildcard pattern but not sure if it's the one
they want! I know I have used it like that in the past anyway.

I'm uneasy about this change too. Users who knew how g.mremove worked
in past will be surprised the safety question has been removed. Some of
them will be surprised badly, learning it when a precious map is
removed with the rest of the crowd on a sudden, while the user expected
y/n prompt.

I was never really carefull when giving the wildcard to g.mremove.
Propably nobody was, since we knew g.mremove will let us me verify the
wildcard's result before deleting data. Now the wildcard has to be
perfect at a first attempt, which is a unrealistic requirement when you
have dozens of maps in the mapset.

I agree that the interactivity has to be removed when possible, but in
this case it is too radical change I guess. It would be all OK if
g.mremove never asked for confirmation. But since it used to, it's
behaviour as users knew it for years is changed, and this change will
lead to data loss and user frustration. I don't think such radical
changes, even as fixes, should be allowed during GRASS 6.

What do you think about this: if g.mremove cannot remain
half-interactive, I'd suggest getting rid of it alltogether, and
replacing it's manual page with an instruction how to use "g.mlist
sep=," and feed it's output to g.remove by hand (I can write it).
Although removing a module during GRASS 6 should be avoided too, I
think that this would do less harm than letting g.mremove delete user's
data without control.

Or maybe revert the changes in g.mremove as it was, for GRASS 6, and
postpone working on it to GRASS 7? As for GRASS 7, I'd still vote on
removing it completely, as described above, instead of removing it's
interactiveness, for the sake of user's data.

Maciek

Maciej Sieczka wrote:

>>>> up to now interactive input in tcl based dialogs is not possible.
>>>> Using the -f flag (force removal) you can delete also in gis.m.
>>>>
>>>> Probably we need to enforce -f somehow in gis.m - how to do that?
>>
>> Glynn:
>>> I've committed a fix which removes the prompting code. The -f flag
>>> remains for compatibility but is ignored.
>>
>> I understand the push to remove interactive, but this one is a fairly
>> important failsafe and I wouldn't mind it staying. With the -f flag a
>
> I agree this seems a bit of a dangerous change, especially since an easy
> workaround was available... hope it doesn't catch anybody out who is
> just experimenting with a wildcard pattern but not sure if it's the one
> they want! I know I have used it like that in the past anyway.

I'm uneasy about this change too. Users who knew how g.mremove worked
in past will be surprised the safety question has been removed. Some of
them will be surprised badly, learning it when a precious map is
removed with the rest of the crowd on a sudden, while the user expected
y/n prompt.

I was never really carefull when giving the wildcard to g.mremove.
Propably nobody was, since we knew g.mremove will let us me verify the
wildcard's result before deleting data. Now the wildcard has to be
perfect at a first attempt, which is a unrealistic requirement when you
have dozens of maps in the mapset.

I agree that the interactivity has to be removed when possible, but in
this case it is too radical change I guess. It would be all OK if
g.mremove never asked for confirmation. But since it used to, it's
behaviour as users knew it for years is changed, and this change will
lead to data loss and user frustration. I don't think such radical
changes, even as fixes, should be allowed during GRASS 6.

Okay, I can see your point here.

What do you think about this: if g.mremove cannot remain
half-interactive, I'd suggest getting rid of it alltogether, and
replacing it's manual page with an instruction how to use "g.mlist
sep=," and feed it's output to g.remove by hand (I can write it).
Although removing a module during GRASS 6 should be avoided too, I
think that this would do less harm than letting g.mremove delete user's
data without control.

Or maybe revert the changes in g.mremove as it was, for GRASS 6, and
postpone working on it to GRASS 7? As for GRASS 7, I'd still vote on
removing it completely, as described above, instead of removing it's
interactiveness, for the sake of user's data.

Alternative possibilities:

1. Rename g.mremove (e.g. to g.remove.multi); if anyone asks where it
went, remind them that the new version doesn't request confirmation.

2. Revert g.mremove, add a version which doesn't prompt, change gis.m
to only refer to the non-prompting version.

Personally, I'd favour #1; option #2 undermines attempts to get
developers to realise that terminal interaction is unacceptable.

In my experience, any rule with an "except in special cases" qualifier
may as well not exist. Everyone thinks that their pet case qualifies,
and you end up with a useless mess.

Either you can rely upon GRASS commands being scriptable, or you
can't. Right now, you can't; if you try to build something on top of
GRASS, sooner or later something is going to try to prompt the
non-existent user for input which will never arrive.

--
Glynn Clements <glynn@gclements.plus.com>

Maciej:

> What do you think about this: if g.mremove cannot remain
> half-interactive, I'd suggest getting rid of it alltogether, and
> replacing it's manual page with an instruction how to use "g.mlist
> sep=," and feed it's output to g.remove by hand (I can write it).

No, just remove it from the GUI if the possibility of interactivity is
an issue, or create a wrapper script for the GUI which does not include
the offending flag. I don't think it is so bad to have command-line-only
power-tools, and to leave g.mremove out of the GUI if that's what is
required.

> Although removing a module during GRASS 6 should be avoided too, I
> think that this would do less harm than letting g.mremove delete
> user's data without control.

Removing a module during GRASS 6 should not be allowed at all.
That will break scripts and render documentation+books out of date.

> Or maybe revert the changes in g.mremove as it was, for GRASS 6, and
> postpone working on it to GRASS 7? As for GRASS 7, I'd still vote on
> removing it completely, as described above, instead of removing it's
> interactiveness, for the sake of user's data.

Glynn:

Alternative possibilities:

1. Rename g.mremove (e.g. to g.remove.multi); if anyone asks where it
went, remind them that the new version doesn't request confirmation.

2. Revert g.mremove, add a version which doesn't prompt, change gis.m
to only refer to the non-prompting version.

Personally, I'd favour #1; option #2 undermines attempts to get
developers to realise that terminal interaction is unacceptable.

Personally I'd prefer #2 or removing g.mremove from the GUI menu vs.
adding yet another duplicate module.

but wait --

** A compromise idea: make g.mremove without "-f" exit (0 or 1?) after
listing the files the regex would match; have it only delete something
if "-f" is used. The extra tick of brain activity to type the extra 3
chars should be enough to invoke the do-I-really-want-to-do-this 2nd
thought, if not, well that's not our problem, we tried. That way we only
"break" interactive mode, and the new solution is in a way interactive
(they have to retype the command).

-- patch attached.

In my experience, any rule with an "except in special cases" qualifier
may as well not exist. Everyone thinks that their pet case qualifies,
and you end up with a useless mess.

Either you can rely upon GRASS commands being scriptable, or you
can't. Right now, you can't;

Point taken.

if you try to build something on top of GRASS, sooner or later
something is going to try to prompt the non-existent user for input
which will never arrive.

It's a worthy goal, and something we should do for GRASS 7, but we can't
go around breaking people's scripts in order to make their scripts
easier to write! [Glynn's patch in CVS does not do that; some of the
proposed solutions might] As far as g.mremove goes, I imagine scripters
figured out they needed to use "-f" when they wrote it.

So how do folks feel about the compromise solution? Without -f it skips
the y/n prompt, forcing "no", and a functional g.remove command line is
sent to stdout for perusal[, piping, logging, whatever], along with a
message to stderr that you need to use -f if you actually want to remove
files.

Hamish

(attachments)

mremove_force.diff (964 Bytes)

Hamish wrote:

but wait --

** A compromise idea: make g.mremove without "-f" exit (0 or 1?) after
listing the files the regex would match; have it only delete something
if "-f" is used. The extra tick of brain activity to type the extra 3
chars should be enough to invoke the do-I-really-want-to-do-this 2nd
thought, if not, well that's not our problem, we tried. That way we only
"break" interactive mode, and the new solution is in a way interactive
(they have to retype the command).

That's a good idea.

> if you try to build something on top of GRASS, sooner or later
> something is going to try to prompt the non-existent user for input
> which will never arrive.

It's a worthy goal, and something we should do for GRASS 7, but we can't
go around breaking people's scripts in order to make their scripts
easier to write! [Glynn's patch in CVS does not do that; some of the
proposed solutions might] As far as g.mremove goes, I imagine scripters
figured out they needed to use "-f" when they wrote it.

Note that my patch retained the -f flag, although the script doesn't
pay any attention to it. Any scripts using "g.mremove -f ..." would
work as before.

So how do folks feel about the compromise solution? Without -f it skips
the y/n prompt, forcing "no", and a functional g.remove command line is
sent to stdout for perusal[, piping, logging, whatever], along with a
message to stderr that you need to use -f if you actually want to remove
files.

Seems okay to me.

1. -f works as before.

2. Omitting -f won't unconditionally delete files which wouldn't have
been unconditionally deleted before.

3. The changed behaviour when -f is omitted isn't really a problem as
that case always required user interaction.

4. It still "works" (i.e. doesn't hang) if a terminal isn't available.

--
Glynn Clements <glynn@gclements.plus.com>

I like this solution, Hamish. I always rely on g.mremove to produce a
listing prior to deletion, and your patch seems to preserve this
behavior.

--
Eric Patton
email: epatton@nrcan.gc.ca

-----Original Message-----
From: grass-dev-bounces@grass.itc.it
[mailto:grass-dev-bounces@grass.itc.it] On Behalf Of Hamish
Sent: Monday, February 12, 2007 5:24 AM
To: Glynn Clements
Cc: grass-bugs@intevation.de; paul-grass@stjohnspoint.co.uk;
grass-dev@grass.itc.it
Subject: Re: [GRASS-dev] [bug #5483] (grass) g.mremove
through gis managerGUI seems not to work well

Maciej:
> > What do you think about this: if g.mremove cannot remain
> > half-interactive, I'd suggest getting rid of it alltogether, and
> > replacing it's manual page with an instruction how to use
"g.mlist
> > sep=," and feed it's output to g.remove by hand (I can write it).

No, just remove it from the GUI if the possibility of
interactivity is an issue, or create a wrapper script for the
GUI which does not include the offending flag. I don't think
it is so bad to have command-line-only power-tools, and to
leave g.mremove out of the GUI if that's what is required.

> > Although removing a module during GRASS 6 should be
avoided too, I
> > think that this would do less harm than letting g.mremove delete
> > user's data without control.

Removing a module during GRASS 6 should not be allowed at all.
That will break scripts and render documentation+books out of date.

> > Or maybe revert the changes in g.mremove as it was, for
GRASS 6, and
> > postpone working on it to GRASS 7? As for GRASS 7, I'd
still vote on
> > removing it completely, as described above, instead of
removing it's
> > interactiveness, for the sake of user's data.

Glynn:
> Alternative possibilities:
>
> 1. Rename g.mremove (e.g. to g.remove.multi); if anyone
asks where it
> went, remind them that the new version doesn't request confirmation.
>
> 2. Revert g.mremove, add a version which doesn't prompt,
change gis.m
> to only refer to the non-prompting version.
>
> Personally, I'd favour #1; option #2 undermines attempts to get
> developers to realise that terminal interaction is unacceptable.

Personally I'd prefer #2 or removing g.mremove from the GUI menu vs.
adding yet another duplicate module.

but wait --

** A compromise idea: make g.mremove without "-f" exit (0 or
1?) after listing the files the regex would match; have it
only delete something if "-f" is used. The extra tick of
brain activity to type the extra 3 chars should be enough to
invoke the do-I-really-want-to-do-this 2nd thought, if not,
well that's not our problem, we tried. That way we only
"break" interactive mode, and the new solution is in a way
interactive (they have to retype the command).

-- patch attached.

> In my experience, any rule with an "except in special
cases" qualifier
> may as well not exist. Everyone thinks that their pet case
qualifies,
> and you end up with a useless mess.
>
> Either you can rely upon GRASS commands being scriptable, or you
> can't. Right now, you can't;

Point taken.

> if you try to build something on top of GRASS, sooner or later
> something is going to try to prompt the non-existent user for input
> which will never arrive.

It's a worthy goal, and something we should do for GRASS 7,
but we can't go around breaking people's scripts in order to
make their scripts easier to write! [Glynn's patch in CVS
does not do that; some of the proposed solutions might] As
far as g.mremove goes, I imagine scripters figured out they
needed to use "-f" when they wrote it.

So how do folks feel about the compromise solution? Without
-f it skips the y/n prompt, forcing "no", and a functional
g.remove command line is sent to stdout for perusal[, piping,
logging, whatever], along with a message to stderr that you
need to use -f if you actually want to remove files.

Hamish