Hacker News new | ask | show | jobs
by wging 4488 days ago
How is sponge different from > filename?
2 comments

For one thing, it allows your pipeline to both read from and write to the same file, as it defers the output until there is no more data to read from "upstream". For instance, this won't work (it truncates the file for writing before it is ever read):

    grep foo <some_file >some_file
But this will have the intended effect:

    grep foo <some_file | sponge some_file
It can be used where ">" does not work, e.g. when using sudo. So you can do

  echo data | sudo sponge /etc/a.file
`tee` can be abused in a similar way, but it also prints the data to stdout, which is ugly.