On Wed, 12 Oct 2022, Thomas Klausner wrote:
I've been using the following shell function for ages: dir() { ls -al "$@" | less; } On -current (9.99.100 kernel from Oct 9, Userland from Sep 21, zsh from May), when I CTRL-Z the less(1) and then want to go back in, it doesn't work and I see the following:dirzsh: done ls -al "$@" | zsh: suspendedfg[1] + done ls -al "$@" | continued zsh: done ls -al "$@" | zsh: suspended (tty output) zsh: done ls -al "$@" | zsh: suspended (tty output)
Looks like a bug in zsh. /bin/sh is also the same. /bin/ksh and bash work OK. Since less sucks up its entire input, the ls command is "done" and has exited in that pipeline (if you page forward a few screens). The ls exiting in the pipeline seems to confuse zsh and /bin/sh. If you run the function on a large dir. and suspend it at the 1st screen, then /bin/sh also works because ls is still running and can be suspended. ksh also says "Done", but it still allows the pipeline to be fg'd correctly: [1] + Done ls -al "$@" | Stopped less File a PR. -RVP