less標準入力からのマルチスクリーン出力の最後の画面で開くためのワンライナーを作成しようとしています。この理由は、私は long を生成するプログラムに取り組んでおり、ASTそれを上下にトラバースできる必要があるためですが、一番下から始めたいと思っています。私はこれを思いつきました:
$ python a.py 2>&1 | tee >(lines=+$(( $(wc -l) - $LINES))) | less +$lines
最初に、出力の行数を計算し、それから減算する必要があるため$LINES、最後の画面の最上行が何であるかがわかります。a.py後で出力を再利用する必要があるteeため、その目的のためにプロセス置換を使用します。最後のステップとしてless、特定の行で元の stdout を開くことを示しています。もちろん、すべてのサブコマンドがサブシェルで実行されるため、最後のステップで設定されていないBashため、機能しません。$linesではZSH、パイプ コマンドはサブシェルで実行されませんが、プロセス置換は実行されるため、どちらも機能しません。宿題や仕事のタスクではなく、一時ファイルを作成せずに自分のやりたいことを実行できるかどうか、BashまたはZSH. 何か案は?