上記のコマンドの出力を見て、端末が下にジャンプするのを防ぎたいので、端末に依存しない方法が欲しいです。したがって、端末の特定の構成を変更する必要はない。less
次のコマンドを試してみました。
command | less
しかし、私が使用するコマンドでは、コマンドの出力が完了するとポケットベルが終了します。
ポケットベルにリアルタイムでストリーミングするためのコマンド出力を取得するにはどうすればよいですか?上から下に見えますか?
答え1
入力が完了したら終了しないでください。
デフォルトでは、quitコマンド(q
)を使用しない限り、lessは自動的に終了しません。
less
オプションを使用して呼び出すと、-E
ファイルの終わりに達すると終了します。オプションを使用すると、-e
ファイルの終わりを過ぎて移動しようとすると(繰り返しスクロールするなど)、終了します。-F
ファイルが1つの画面に完全に収まると、lessオプションはすぐに終了します。これらのオプションはデフォルトで有効になっていませんが、システムでデフォルトオプションに設定する方法はいくつかあります。
less
オプションのシェルエイリアスにすることができます。で確認してくださいalias less
。LESS
Less が開始されると、環境変数からオプションを読み込みます。で確認してください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
私の場合は、出力を次にリダイレクトします。bat
cat
、より多くの機能とオプションがあるのレプリカであり、--paging=always
sオプションを使用します。--pager="less -RFX"
--number
cargo 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ではこれはうまくいかないようです。このように録音されていますが、。