On Mon, Mar 15, 2021 at 11:42 AM Alex Henrie <alexhenrie24@xxxxxxxxx> wrote: > > On Sun, Mar 14, 2021 at 3:44 AM Alejandro Colomar (man-pages) > <alx.manpages@xxxxxxxxx> wrote: > > > > On 1/25/21 5:03 AM, Bernhard Voelker wrote: > > > OTOH I understand that there's a little gap in the tool landscape. > > > Astonishingly, there doesn't seem to exist a trivial tool to redirect > > > from standard input (or any other input file descriptor) to a file. > > > I wrote such a little tool in the attached: > > > > > > $ src/sink --help > > > Usage: src/sink [OPTION]... FILE > > > Copy input stream to FILE. > > > > > > Mandatory arguments to long options are mandatory for short options too. > > > > > > -a, --append append to the given FILE, do not overwrite > > > -c, --create ensure to create FILE, error if exists > > > -i, --input-stream=FD read from stream FD instead of standard input > > > > > > The default input stream number FD is 0, representing the standard input. > > > > > > This allows not only to copy data from standard input, but from any > > > file descriptor open for reading. It also allows control over > > > how the output file will be opened (e.g. with O_CREAT|E_EXCL). > > > > > > The OPs case would look like: > > > > > > echo 'foo' | sudo sink /etc/foo > > > or > > > echo 'foo' | sudo sink -a /etc/foo # append. > > > or > > > echo 'foo' | sudo sink -c /etc/foo # ensure creation of the file. > > > > > > I'm not sure if this will ever be considered for inclusion - > > > I just did it "for fun". ;-) > > > > > > Have a nice day, > > > Berny > > > > > > > By chance, I just found out that there is a tool very similar to 'sink' > > in moreutils [1]. It's called 'sponge'. > > > > [1]: <https://joeyh.name/code/moreutils/> > > > > So this feature already exists, and therefore I drop my patches. > > > > Cheers, > > > > Alex > > Interesting, thanks for sharing. There's still no `sponge -q` option > though--it always writes either to a file or to standard output. > > -Alex Actually, it looks like `pee` (also from moreutils) can be used for throwing input into the void. So between `sponge` and `pee`, I think all the use cases are covered! -Alex