svn commit: r326554 - in head: . usr.bin/sponge usr.bin/sponge/tests usr.bin/tee
Matt Joras
matt.joras at gmail.com
Tue Dec 5 15:53:51 UTC 2017
On Dec 5, 2017 7:35 AM, "Devin Teske" <devin at shxd.cx> wrote:
> On Dec 5, 2017, at 5:00 AM, Hans Petter Selasky <hps at selasky.org> wrote:
>
>> On 12/05/17 13:58, Rodney W. Grimes wrote:
>> Further more, why does freebsd need this in base?
>
> Hi,
>
> I think this is useful. It could replace the "-i " (intermediate) option
for "sed" for example. It avoids creating temporary files when filtering
files, right?
>
> --HPS
>
Wth is wrong with:
data=$( sed -e '...' somefile ) &&
echo "$data" > somefile
or
set -e
data=...
echo "$data" > ...
or
exec 3<<EOF
$( ... )
EOF
cat > ... <&3
or
(I digress)
Infinite variations, but the gist is that sponge looks to be trying to help
sh(1)/similar when help is unneeded.
Why buffer data into memory via fork-exec-pipe to sponge when you can
buffer to native namespace without pipe to sponge?
Am I missing something? Why do we need sponge(1)?
--
Devin
I do believe you are sort of missing the point. It is a utility that is
explicitly useful in shell pipelines, so when you want to do things as
one-liners. I like the utility and use the one from ports and my own
version in various things here and there. It is a common utility installed
in Linux distros and the top answer on Google for questions such as
"redirect shell output to same file". I think the outrage about adding a
tiny utility that's common elsewhere is a bit silly.
As for the implementation, I have my own version of sponge (hobby program
written in rust so not base-worthy), and it uses explicit temporary files
for larger outputs.
Matt
More information about the svn-src-all
mailing list