上記のコマンドの出力を見て、端末が下にジャンプするのを防ぎたいので、端末に依存しない方法が欲しいです。したがって、端末の特定の構成を変更する必要はない。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