GNU/Linux >> Linux の 問題 >  >> Linux

Enter が less に空白行を追加する末尾動作の追加

これは実際には tail ではありません の動作 -- 端末です。 Tail は出力ストリームを stdout に送信するだけで、それが端末に送信され、Enter キーを押してその出力の途中に空白行を挿入します。 Tail 自体は、実際にはユーザーからの入力をまったく受け付けていません。他に必要なものを入力すると、それも表示されます。

less ただし、コンソール アプリであり、入力を受け取って処理します。端末制御シーケンスを使用してコンソールを管理しているため、スクロールできます。任意の文字をストリームに挿入できるようにすると、表示が台無しになります。とにかく、入力を使用してプログラムを制御することは少なくなります。

残念ながら、現在の位置を視覚的にマークする方法はないようです。ただし、それはひどい機能要求ではありません。 時々新しい機能が追加されます。


私自身も同じ答えを探していたときに、あなたの質問を見つけました。

受け入れられた答えに失望したので、回避策を思いつきました。理想的とは言えませんが、追跡しているログで自分の位置を less でマークすることができます 、これが要点です。

小さな実行可能スクリプトを作成しました (私はそれを marklog と呼びました) ) を次の内容で、パスに入れます:

#!/bin/sh
echo >> $1
echo >> $1
echo >> $1
echo `date` ---------------------------------------------------------------------- >> $1
echo >> $1
echo >> $1

もちろん、これはログ ファイルへの書き込みアクセス権がある場合にのみ機能します。これは、多くの状況で契約を破る可能性があります。また、所有していないログ ファイルに書き込むために使用するこのバージョンも作成しました (ただし、sudo アクセス権は持っています):

#!/bin/sh
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo `date` ------------------------------------------------------------------------- >> $1"
sudo sh -c "echo >> $1"
sudo sh -c "echo >> $1"

これらのスクリプトは、まさに私が求めていた視覚的な区切りを提供します。少なくとも 3 つの使用方法があります:

<オール>
  • tail -f を使用するときに通常数回エンターを押すポイントで 、代わりに marklog を実行します 別の端末から (ログ ファイルへのパスを引数として指定します)。

  • Ctrl を使用 Z less を一時停止するには 同じターミナル ウィンドウでスクリプトを実行できますが、less を再度フォアグラウンドにすると、 (fg を使用) 、もちろん)、「フォロー」モードではなくなるため、Shift を押す必要があります。 F もう一度...

  • 最後に、ログ ファイルへのパスを入力する必要がないので、これが最も便利な方法かもしれません:marklog を実行します。 less から直接 !marklog % と入力して . Less % を現在のファイル名に置き換えます .ただし、less には応答しません。 'follow' モードの間は Ctrl を押す必要があります C 最初にフォローモードを終了するには、!marklog % を実行します 、次に Shift F

  • 方法 3 では、Less のコマンド履歴の追加ボーナスも得られます:! を押すだけです。 次に、上向き矢印を使用して最新のコマンドを選択します (私にとっては、常に marklog です) ).

    これがすでに私を助けてくれたのと同じくらい誰かを助けることを願っています.


    Linux
    1. Sedでテール出力を着色しますか?

    2. N行を印刷した後の終了テール-f?

    3. Bashで、最初のX行をスキップしてファイルを印刷します

    1. ファイル(タブとスペースを含む)から空白行を削除する方法は?

    2. bash スクリプトでの ENTER キー押下のシミュレート

    3. UNIXシェル変数への改行文字の追加

    1. Lsによって出力される行数?

    2. シェルスクリプトの予期しない動作?

    3. Debian –このコマンドのどこにSudoを入れるべきですか?