スクロール可能ポケットベルでのコマンド出力の表示

スクロール可能ポケットベルでのコマンド出力の表示

上記のコマンドの出力を見て、端末が下にジャンプするのを防ぎたいので、端末に依存しない方法が欲しいです。したがって、端末の特定の構成を変更する必要はない。less次のコマンドを試してみました。

command | less

しかし、私が使用するコマンドでは、コマンドの出力が完了するとポケットベルが終了します。

ポケットベルにリアルタイムでストリーミングするためのコマンド出力を取得するにはどうすればよいですか?上から下に見えますか?

答え1

入力が完了したら終了しないでください。

デフォルトでは、quitコマンド(q)を使用しない限り、lessは自動的に終了しません。

lessオプションを使用して呼び出すと、-Eファイルの終わりに達すると終了します。オプションを使用すると、-eファイルの終わりを過ぎて移動しようとすると(繰り返しスクロールするなど)、終了します。-Fファイルが1つの画面に完全に収まると、lessオプションはすぐに終了します。これらのオプションはデフォルトで有効になっていませんが、システムでデフォルトオプションに設定する方法はいくつかあります。

  • lessオプションのシェルエイリアスにすることができます。で確認してくださいalias less
  • LESSLess が開始されると、環境変数からオプションを読み込みます。で確認してくださいecho $LESS
  • Lessには設定ファイルがあります。デフォルトの場所は.lessホームディレクトリです。これは環境変数を設定することで変更できますLESSKEY。ファイル形式はバイナリですが、このオプションを設定すると、LESSファイルに文字列とオプションの両方が表示されます。
  • その可能性は低いですが、環境変数が設定されている場合、lessはデフォルトでファイルの最後で終了することを含む以前のLESS_IS_MOREユーティリティのように動作します。more

完了前のコマンド出力の表示

コマンド入力をless(mycommand | less)にパイプすると、lessはコマンドが完了するまで読み続けます。 Interrupt lessを使用できますが、Ctrl+Cこの場合、コマンドは出力を読み取ることができず、パイプが壊れてコマンドが終了する可能性があります。これは、Lessが読み取りを停止したときにパイプを閉じるためです。

この問題に対する解決策は、コマンドをファイルに出力し、ファイルからlessを呼び出すことです。 lessがファイルからデータを読み込んでいる間に入力し、ファイルFからCtrl+Cより多くのデータを読み取るようにしてから、ナビゲーションを続行できます。

mycommand >log 2>&1 &
less log

プログラムは、出力が端末であるか、パイプであるか、ファイルであるかによって、若干異なる動作をすることがあります。出力が端末ではなくファイルまたはパイプの場合に出力が遅れることがわかった場合、これは出力によるものです。バッファー。バラよりパイプラインでバッファリングをオフにする

これscript便利仮想端末でプログラムを実行し、出力全体をファイルに書き込みます。プログラムに関する限り、端末に出力を書き込みます。たとえば、プログラムはカラーエスケープシーケンスを使用できます。-R制御文字をエスケープ形式で表示するのではなく、端末エスケープシーケンスを端末に渡すには、lessオプションを渡します。

script -c 'mycommand --option || echo "mycommand failed with status $?"' mycommand.log </dev/null >/dev/null &
less -R mycommand.log

答え2

問題は、less何らかの理由でstderr出力を次にリダイレクトしないことです。

command 2>&1 | less 

目的のアクションを生成します。

を使用すると、リダイレクトless -Rでカラー出力を保存できますが、一部のコマンドは出力をリダイレクトするときにカラー出力を自動的に省略するため、常にカラー出力を取得するのとcommand同じオプションを見つける必要があります。--color=always

私の場合は、出力を次にリダイレクトします。batcat、より多くの機能とオプションがあるのレプリカであり、--paging=alwayssオプションを使用します。--pager="less -RFX"--numbercargo build--color=always

cargo build --color=always 2>&1 | bat --paging=always --pager="less -RFX" --number

これにより、番号付きの行を含む優れたスクロール可能なカラー出力が生成されます。

   1    Compiling openlimits v0.1.0 (/home/####/git/openlimits)
   2 error[E0433]: failed to resolve: use of undeclared type or module `tokio`
   3   --> src/binance/client/websocket.rs:15:5
   4    |
   5 15 | use tokio::net::TcpStream;
   6    |     ^^^^^ use of undeclared type or module `tokio`
   7
   8 error[E0433]: failed to resolve: use of undeclared type or module `tokio_tungstenite`
   9   --> src/binance/client/websocket.rs:16:5
  10    |
  11 16 | use tokio_tungstenite::{
  12    |     ^^^^^^^^^^^^^^^^^ use of undeclared type or module `tokio_tungstenite`
  13
  14 error[E0433]: failed to resolve: use of undeclared type or module `tokio`
  15   --> src/coinbase/client/websocket.rs:10:5
  16    |
  17 10 | use tokio::net::TcpStream;
  18    |     ^^^^^ use of undeclared type or module `tokio`
  19
....

その後、オプションを設定ファイルに入れて暗黙的に作成し、入力するとbatこのcargo動作が表示されます。

cargo build 2>&1 | bat

&>Bashでは明らかに代わりに使用できます2>&1それらは同じです。 zshではこれはうまくいかないようです。このように録音されていますが、

関連情報