Ctrl+ A、、を押すとコマンドの出力をH記録できます。screen
しかし、出力ファイルが大きすぎます。grep
同様のフィルタを適用して記録される内容を制御できますか?
たとえば、フレーズを含む行のみを記録したい場合がありますfoo bar
。
答え1
興味深い質問です。見た目だけ見たman screen
ので、外部ツールを使わなくても可能かどうかは分かりません。ただし、名前付きパイプとtailとgrepの組み合わせを使用してこれを実行できます。
$ mkfifo /tmp/fifo/fifo
$ tail -f /tmp/fifo/fifo | grep --line-buffered bar >> /tmp/DONE
内部screen
作業:
logfile /tmp/fifo/fifo
録音を始めてください。記録が完了すると、含まれている行のみbar
に保存されます/tmp/DONE
。man fifo
FIFO特殊ファイル(パイプという名前)は、ファイルシステムの一部としてアクセスされることを除いて、パイプに似ています。読み取りまたは書き込みのために複数のプロセスで開くことができます。プロセスがFIFOを介してデータを交換すると、カーネルはすべてのデータをファイルシステムに書き込むことなく内部的に渡します。したがって、FIFO 特殊ファイルにはファイルシステムに内容がありません。ファイルシステムエントリは、プロセスがファイルシステムでその名前を使用してパイプにアクセスできるようにするための参照ポイントとしてのみ機能します。
これは/tmp/fifo/fifo
、ディスク領域を占有しないことを意味します。この解決策は私には効果がありましたが、どのような欠点や欠点があるのかわかりません。
編集する:
次のものをfifo
使用することをお勧めしますman script
。
-f, --flush 各書き込み後に出力をフラッシュします。これはリモートコラボレーションに役立ちます。一人の人が「mkfifo foo」を実行できます。 script -f foo'、もう 1 つは 'cat foo' を使用して、実行中の操作をリアルタイムで監視できます。
知らないなら、スクリプト端末セッションも記録するユーティリティです。