GNU bug report logs - #21249
"sed -i '...' -" in git head

Previous Next

Package: sed;

Reported by: Stephane Chazelas <stephane.chazelas <at> gmail.com>

Date: Thu, 13 Aug 2015 14:16:02 UTC

Severity: normal

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stephane Chazelas <stephane.chazelas <at> gmail.com>
To: bug-sed <at> gnu.org, Jim Meyering <meyering <at> fb.com>
Subject: "sed -i '...' -" in git head
Date: Thu, 13 Aug 2015 15:15:26 +0100
Hello,

about this commit:

> commit c033bdee411128dfebfea1974d1ee3c1d9eac572
> Author: Jim Meyering <meyering <at> fb.com>
> Date:   Sat Jun 20 07:38:49 2015 -0700
> 
>     sed -i: do not treat "-" as a file name

the behaviour was aligned with perl's (where that syntax derives
from).

In perl, perl -pi -e 's/../../' -- *

or perl -pi -e 's/../../' -- "$file"

is known to be /reliable/ (work regardless of the value of $file
(while without -i it's not, see
https://unix.stackexchange.com/questions/170013/security-implications-of-running-perl-ne
(-, cmd|, <file... are a problem there))

That was also /safe/ in sed before that change. Treating "-" as
stdin with -i doesn't make sense as it doesn't make sense to
edit stdin "in-place".

Now that means it breaks scripts that do:
sed -i '...' -- "$file"
expecting it modify $file regardless of the name of $file. Now,
one has to do:

case $file in
 -) file=./-
esac
sed -i '...' -- "$file"

for no good reason.

IMO, that change only has negative consequences.

just my 2 cents.

-- 
Stephane




This bug report was last modified 9 years and 193 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.