有时我们在终端运行一个命令,输出太大,我们忘了把“| less”放到最后.所以我想知道当zsh中的输出太大时可以分页输出吗?
我尝试使用python和less实现此功能:
#!/usr/bin/env python3
termHeight = 25
import sys
from subprocess import Popen,PIPE
p = Popen(['unbuffer'] + sys.argv[1:],stdin=PIPE,stdout=PIPE)
lines = []
for count in range(termHeight):
line = p.stdout.readline()
if not line:
break
print(line.decode('utf8'),end='')
lines += [line]
if line:
q = Popen(['less','-Mr'],stdin=PIPE)
q.stdin.writelines(lines)
while True:
line = p.stdout.readline()
if not line:
break
q.stdin.write(line)
q.communicate()
让我们将这个python脚本保存到p.py.因此,当我们运行“python p.py some commands”之类的“python p.py ls –help”时,如果输出超过25行,则此脚本将使用less来显示输出.
问题是我无法从用户那里获得输入.这意味着此解决方案根本不适用于交互式程序.