コマンドを実行して一度に表示される行数を制限する

コマンドを実行して一度に表示される行数を制限する

ターミナルで実行しているコマンドがいくつかあり、それらはすべて出力されますが、これは素晴らしいことですが、ウィンドウ全体が何千行もの入力で埋め尽くされる必要はありません。出力された最後の x 行だけを表示し、残りを削除する方法はありますか?

答え1

tail コマンドを使用できます。このコマンドは、ユーザーが指定したファイルの最後の数行だけをリストします。また、必要に応じて、最後の数行だけをリアルタイムでリストすることもできます。tail -n 5 は、最後の 5 行を出力します。他のオプションを取得するには、man tail を実行してください。

答え2

どのコマンドの出力が大量に表示されるかは分かりませんが、tail コマンドで「パイプ」を使用して 1 番目のコマンドの出力を 2 番目のコマンドに送信することで、ターミナルに出力される行数を制限できると言えます。例は次のとおりです。

ls | tail -n 5  

ls コマンドの出力を画面に送信する代わりに、それを tail コマンドに送信 (またはパイプ) します。ここで tail コマンドは、"-n 5" が指定されているため、ls 出力の最後の 5 行を印刷します。

答え3

コンソール出力は、出力ストリーム (標準出力または標準エラー) に 1 行ずつ書き込まれるだけです。コンソール ウィンドウとターミナル アプリケーションは、それらの行を表示し、前の行を上にスクロールします。既に印刷された行を消去することはできません。次のいずれかが必要です。

  1. 最後のもの以外を省略する機能が組み込まれたコンソール/ターミナルアプリケーション新しい行を受信したときに再描画するときに行を非表示にします。これは可能かもしれませんが、方法がわかりません。
  2. これを実行できる追加のアプリケーションは、アプリケーションのラッパーとしてコンソールから起動され、screenおそらくtmux実行できますが、方法がわかりません。
  3. アプリケーションのコンソール出力をパイプしてこれを実行できるアプリケーションは、multitailたとえば次のようになります。

    find | env LINES=10 multitail -j
    

    の出力を表示しますfindが、一度に 10 行以上は表示されません。

使用している OS は明記されていませんが、multitailたとえば Ubuntu パッケージとして Linux で利用可能です。

関連情報