May 27, 2022, 11:43 AM, "Greg Reagle" <l...@speedpost.net mailto:l...@speedpost.net?to=%22Greg%20Reagle%22%20%3Clist%40speedpost.net%3E > wrote:
> > I have a file named "out" (from ii) that I want to view. Of course, it can > grow while I am viewing it. I can view it with "tail -f out" or "less +F > out", both of which work. I also want to apply some processing in a pipeline, > something like "tail -f out | tr a A | less" but that does not work. The less > command ignores my keystrokes (unless I hit Ctrl-C, but that kills tail and > tr). The "tr a A" command is arbitrary; you can substitute whatever > processing you want, even just cat. > > This command "tail -f out | tr a A" is functional and has no bugs, but it > doesn't let me use the power of less, which I crave. > > This command "tail out | tr a A | less" is functional and has no bugs, but it > doesn't let me see newly appended lines. > > Can I use the power of the Unix pipeline to do text processing and the power > of less for excellent paging and still be able to see new lines as they are > appended? Why doesn't or can't less continue to monitor stdin from the > pipeline and respond to my keystrokes from the tty? > > I am using Debian 11 in case it matters, with fish. But I am happy to try > other shells. In fact I already have and that doesn't seem to help. I have > also tried more, most, nano -, and vi -, instead of less, to no avail. > Hi Greg, Why don't you just save the output to the temporary file after your processing? Like ``` tail -f out | tr a A > out.post & less +F out.post ``` If you ran something like this in a script, you may want to ensure everything gets cleaned up when it exists. Another option is to use vi/vim and have it periodically reload the file. >Why doesn't or can't less continue to monitor stdin from the pipeline and >respond to my keystrokes from the tty? Probably because less doesn't know it should check a tty. Programs like less often check to see if stdin refers to a tty and in the pipeline above, less's stdin isn't a tty. See `echo | tty` vs `tty`. You may be able to modify less to check to see if stdout/stderr refers to a tty instead. Arthur