On 17/02/16 22:42, Eric Blake wrote: > I found myself wanting to reproduce a line of input multiple times, so > my first thought was: > > echo line | yes --some-option | consumer > > to make yes read the first line of stdin and replay that, but we don't > have such an option - the text to be replayed has to be passed on the > command line. I ended up doing: > > yes "$(echo line)" | consumer
Right that's a bit awkward and also limits the length of the line to that supported by the system (128KiB on Linux). > but wonder if it is worth adding such an option (maybe spelled > --from-file, where '--from-file=-' reads from stdin). This seems like the most general solution. Whether it's warranted is the question. I'm 50:50 > Using xargs for > the task is not ideal, unless we have a way to make xargs shut up about > EPIPE: > > # echo line | xargs yes | head -n5 > line > line > line > line > line > xargs: yes: terminated by signal 13 IMHO xargs should handle SIGPIPE differently: http://www.pixelbeat.org/programming/sigpipe_handling.html http://lists.gnu.org/archive/html/bug-findutils/2013-04/msg00026.html Anyway one still has the size limit with an xargs solution. > I guess this request also interacts with the recent question on whether > 'yes' falls into the category of commands that should gain support to > output data with NUL separators rather than newlines. I was on the fence as to whether this was required, but it would be more general to support -z, --zero to delimit each _output_ item with NUL. cheers, Pádraig.
