Subject: bug#10819: [BUG][RM]

From: Jim Meyering <[email-masked]>
Date: Thu, 16 Feb 2012 11:59:05 +0100

Voelker, Bernhard wrote:

> Jim Meyering wrote:
>> Davide Brini wrote:
>> ...
>> > At least in bash, but I suppose in other shells too,
>> >
>> > rm -rf #*
>> >
>> > treats the "#*" part as a comment, and (if you remove the "-f") complains
>> > about missing operand to rm.
>>
>> That is the default, but for an interactive shell,
>> that behavior can be changed:
>>
>>     $ echo a b # c
>>     a b
>>     $ shopt -u interactive_comments
>>     $ echo a b # c
>>     a b # c
>
> I think Davide's point is not about the # comment ... rm won't see
> that on argv anyway. The point is that 'rm -f' does not complain about
> missing operands while 'rm' does:
>
>   $ rm
>   rm: missing operand
>   Try `rm --help' for more information.
>   $ rm -f
>   $
>
> According to the info, '-f' just silences error messages for files
> which do not exist (and never to prompt for confirmation), but why
> should it also affect the "missing operand" message?

Two reasons:

 - that's what rm -f has always done
 - because that's more useful.  Otherwise, "rm -rf $file_list" would
   have to be wrapped in code to handle specially the case in which
   $file_list is empty.