我尝试创建一个单行,用于less
在来自标准输入的多屏幕输出的最后一个屏幕上打开。这样做的原因是我正在开发一个产生 long 的程序,AST
我需要能够上下遍历它,但我更愿意从底部开始。我想出了这个:
$ python a.py 2>&1 | tee >(lines=+$(( $(wc -l) - $LINES))) | less +$lines
首先,我需要计算输出中的行数并$LINES
从中减去,这样我就知道最后一个屏幕的最上面一行是什么。稍后我将需要重用a.py
输出,因此tee
为此目的我使用了进程替换。作为最后一步,我指出less
在特定行上打开原始标准输出。当然,它不起作用,Bash
因为$lines
没有在最后一步设置,因为每个子命令都在子 shell 中运行。在ZSH
中,即使管道命令不在子 shell 中运行,进程替换仍然存在,因此它也不起作用。这不是家庭作业或工作任务,我只是想知道是否可以在不创建临时文件Bash
或ZSH
. 有任何想法吗?