On Thu, Aug 13, 2015 at 7:15 AM, Stephane Chazelas wrote: > Hello, > > about this commit: > >> commit c033bdee411128dfebfea1974d1ee3c1d9eac572 >> Author: Jim Meyering >> 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|, > 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. Thank you for the report and good argument. I plan to revert that change with the attached patch: