Enterに空白行を追加するテール動作を追加する


8

フラグ(またはホットキー)lessを使用してログを追跡し+Fたり、ShiftF前後に検索したり、通常はドキュメント内を自由に移動したりするのに使用できるが大好きです。

しかし、不足していることが1つありますless。通常、私はファイルの最後にいて、新しいことが起こっているのを見たいのです。でtail -f、私だけ当たるenter数回、および新しいログの行は、ちょうど明確に古いラインから分離して見えるでしょう。

これを追加することは可能lessですか?どうやって?


私はあなたがこれを行うことができるとは思いませんが、ときどきecho -e '\ n \ n \ n \ n \ n' >> / dev / pts / 0を実行します。たとえば、それほどきれいではありませんが、少なくとも私が目をそらしたときに私が私がやめた基準点があります。
David Houde 2013

回答:


6

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

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

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


少人数のメンテナーにこの機能をリクエストするためのリンクは手元にありますか?
blueFast 2013


4

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

受け入れられた答えにがっかりして、私は回避策を思いつきました。これは理想的ではありませんが、追跡しているログの中で自分の位置をマークすることができます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つあります。

  1. を使用するときに通常Enterキーを数回押す時点でtail -f、代わりにmarklog別の端末から実行します(引数としてログファイルへのパスを指定します)。

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

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

方法3を使用すると、Lessのコマンド履歴のボーナスも追加されます。単にを押して!から、上矢印を使用して最新のコマンドを選択します(私にとっては常にですmarklog)。

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


1

ファイルの最後でShift+ Fを押すと、lessはとして機能し始めますtail -f


2
いいえ、ありません。新しい行に従いますが、としては機能しませんtail -f。特に、それは私の質問の唯一のポイントである改行としての入力を受け入れません 。その上、私はすでにShift+F質問で述べました(小さなエラーで、私は言わなければなりません)
blueFast 2013

1

あなたはこれを行うことができないと思います。私はを使用m'て、興味のある場所にマークを付けてから、それらに再度アクセスしましたが、これはあなたが求める分離を与えません。おそらく、マルチテイルのような何かがあなたが望むことをするでしょう。


-1

Lambartからの答えは、私のお気に入りの解決策をもたらします。ランバートへのThx!

ただフォローモードctrlcを割り込んで入力してください!printf "\n\n---$(date)---\n\n" >> %。その後、もう一度押すentershiftf、ファイルをたどって再び開始するためにヒットする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.