GNU bug report logs -
#60989
[PATCH] rm: fail on duplicate input if force not enabled
Previous Next
Full log
Message #20 received at 60989 <at> debbugs.gnu.org (full text, mbox):
On 22/01/2023 18:18, Philip Rowlands wrote:
> On Sat, 21 Jan 2023, at 13:05, Łukasz Sroka wrote:
>> When the input files contain duplicates, then the rm fails. Because
>> duplicates occur most often when the * is used and the shell unwraps it.
>> There is a very common scenario when a user accidentally enters space
>> after a filename, or enters space instead of forward slash.
>
> To fail on duplicate FILE args, this bash function would do (lightly tested, doesn't attempt getopt processing):
>
> function safe_rm {
> local -A seen
> local file
> for file in "$@"; do
> if [[ -v ${seen[$file]} ]]; then
> echo "error: duplicate name '$file'" 1>&2
> return 1
> fi
> seen[$file]=1
> done
>
> # no dupes seen
> command rm "$@"
> }
>
> and could be used today, without waiting for the next coreutils release.
That's informative, thanks.
> As an aside, I could be reading it wrong but the coreutils manual suggests the file arguments are optional
> rm [option]… [file]…
Right with the -f option rm will not fail if no arguments are specified
(in the presence of nullglob etc.), which is POSIX compliant.
cheers,
Pádraig
This bug report was last modified 2 years and 150 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.