ファイル全体を読み取って、入力を待機させたいのですが、ファイル全体tail -f
が表示されているのと同じです。
これは.log
ファイルであるため、このファイルの長さは常に変更されます。
ファイルの長さがわからない場合、どうすればいいですか?
less
「F」キーがあります。相互作用が必要な場合に便利です。
ファイル全体を読み取って、入力を待機させたいのですが、ファイル全体tail -f
が表示されているのと同じです。
これは.log
ファイルであるため、このファイルの長さは常に変更されます。
ファイルの長さがわからない場合、どうすればいいですか?
less
「F」キーがあります。相互作用が必要な場合に便利です。
回答:
tail
を追加-n
して、最後から表示する行数を指定できます-f
。これはと組み合わせて使用できます。で-n
始まる引数+
が先頭からの行数である場合(0
および@Benで示されるように、最初の行をスキップすることを示す1
ファイル全体を表示する場合2
)。だからちょうど:
tail -f -n +0 filename
ログファイルがローテーションされる場合は、追加--retry
(または@Hagenが提案-f and --retry
する-F
ように結合)できます
また、グラフィカルターミナルに、マウスを使用してできることに注意PageUp/ PageDown歴史に戻ってスクロールする(あなたのバッファをと仮定すると十分な大きさである)、あなたが使用している場合でもあり、この情報にとどまるCtrl+ C出口へtail
。あなたが使用している場合less
、これははるかに少ない便利で、私の知る限りであるあなたは、スクロールするためのキーボードを使用する必要があると私は維持する手段を知らないless
あなたがそれを起動するのを忘れた場合deinitialisingのtermcapから-X
。
+
)がより効率的に実装されることは驚きではありません。
+1
について教えてくれた+0
。あなたは望むこと-F
の代わりに、-f
ログファイルを回転させるための
tail -n +1
ファイルの先頭を表示し、tail -n +2
1行スキップします。番号は最初に表示された行の行番号だと思います。
これを達成するより良い方法があります:
less +F <file>
ファイル全体が表示され、すべての機能を備えており、less
新しい入力を待機します。入力待ちを停止し、特定の部分を読む場合は、で停止して^C
再開できますF
。
このF
コマンドはで常に使用できless
ます。ファイルを開いているときに変更を監視することにした場合はless
、ヒットF
するとオンになります。hiergiltdiestfuとそれを指摘してくれたワイルドカードに感謝します。
tail
ます。ヒントをありがとう。私はこれに使用することを考えたことがなかったでしょうless
。他のユーザーへの注意:単に実行してless <file>
からを入力することもできF
ます。
/ u / Anthonの答えに加えて、次のようなことができます。
{ cat filename; tail -0f filename; }
-0
tailのそのオプションは-n 0
、と同等です:0行を表示します。しかし、-f
新しい行が表示されます。
中括弧は必要ありません{ }
。時々何らかの方法でファイル記述子をリダイレクトしたいので、私はそれらを使用しました。例えば:
{ cat ; tail -0f -; } < /var/log/messages
ベンミルウッドが指摘したように、cat
操作の終了から開始までの間にファイルが大きくなるという競合状態になる可能性がありますtail
。しかし、繰り返しますが、これは学術的な解決策に対する「学術的な」問題です。
cat
終了からtail
開始までの間にファイルが大きくなると、これらの行は表示されません。大したことではないが、純粋なtail
ソリューションを好む理由。
{ cat; tail -n +0 -f; } < file
tailはのcat
exitとtail
の間に表示される新しいデータを出力するので、レースを修正すると思います。もちろん、cat
冗長になります。リダイレクトは1回だけ発生し、tail
's stdinはcat
既にEOFに読み出されているファイル記述子であるため、現在の位置はcat
停止した場所です。あなたは置くことによってそれをテストすることができますecho foo >> file
内側の{}
レースを毎回作成するには、。