GNU画面のスクロールバックバッファーをファイルにコピー(拡張ハードコピー)


187

GNU Screenスクロールバックバッファーをファイルに簡単にコピーするにはどうすればよいですか?つまり、「hardcopy」コマンドのより強力なバージョンですか?

GNU画面では、「Ctrl+ A Esc」を使用してスクロールバックバッファーに入ることができます。次に、バッファ全体をマークし、「Ctrl+ A Ctrl+ ]」を使用してEmacsバッファに貼り付け、ファイルに保存します。

ただし、これは面倒です。画面の可視部分に対して 'hardcopy'が行うように、スクロールバックバッファーをファイルに単にコピーするScreenコマンドはありますか?

回答:


283

スクロールバックバッファーの内容全体をファイルに書き込むには、次のように入力します。

Ctrl+ Aそして: コマンドモードに入るには、

hardcopy -h <filename>

の古いバージョンではscreen、単に行うhardcopy -hと、ファイルに書き込むだけです-h。これはバージョン4.2.0で修正されたため、は現在のウィンドウ番号であるにhardcopy -h書き込みます。hardcopy.NN


1
ファイルはホームディレクトリに保存されることに注意してください-少なくとも私にとってはそうでした。答えをありがとう、ところで!
Ritesh 2013年

2
@allrite:$ PWDに保存されます(フルパスを指定しない場合)、特別な動作はありません。
Pushpendre 2014年

9
はい。ただし、画面を起動した$ PWDに保存されます。スクリーンセッションの$ PWDにはありません
seumasmac 14

7
長いスクロールバックバッファーがあり、あまりない場合は、最初の数十行または数百行が空白で、内容が最後にあるため、保存されたファイルが空に見える場合があります。
Terry Brown

3
ハードコピーが保存される場所についてのもう1つの注意:ディレクトリにcdしてからを使用screen -rして既存のセッションに再接続する場合、ハードコピーは画面内のアクティブなディレクトリまたはを使用する前のディレクトリには保存されませんscreen -r。スクリーンセッションを最初に開始したときのディレクトリに保存されたと思います。hardcopydirコマンドでこれを変更できる場合があります。
Matthias Fripp、2015

24

プレスCtrl+ A :bufferfileの/tmp/somefile.txt ENTER、その後Ctrl+A >

これにより、バッファの現在の内容が指定したファイルに書き込まれます。


私はこれを試しました、そして、「ctrl-a>」は「何も起こらなかった」と言います。最初のステップでは、「Bufferfileは '/tmp/foo.txt'になりました」とありましたが、そのファイルを作成するようにも見えません。

1
Ctrl + Aを使用してスクリーンバッファに何かをコピーしましたか?バッファが空のようです-Ctrl + Aを使用して選択した部分だけがスクロールバックバッファ全体をコピーするわけではありません[
Roshan

2
ああ、ctrl-aを使用せずにバッファ全体をコピーするショートカットを探していた[

12

TL; DR: ^A:writebuf <filename>

OPは、^ A [を実行するときに取得するバッファーの選択した部分を使用し、開始と終了にスペースを使用してテキストを選択し、^ A]を使用して貼り付けずに結果の選択した部分を保存する方法を望んでいるようですバッファのファイルへの。

これはうまくいきました:

^A:writebuf <filename>

注:writebufの1つの「f」


1
いいえ、違います。OPは、選択されたパーツだけでなく、バ​​ッファー全体を保存したいと考えています。-OP

2
ネズミ!これだけで見逃しました
ケビン・マレット2015

4
この投稿はまだ役に立ちます。よくやった。
ジャスティンE

1
:私はaboluteパスを使用する必要がありました(/Users/user1/path/to/file.txt IE)画面のMacOSXのバージョンでこの仕事をするためにそれを発見した
jhrf

6

hardcopy -hバッファ全体を含めるようにしてください。


2
これはファイル〜/ -hにハードコピーを作成するだけです

2
@barrycarter:最近のバージョンでは変更されている可能性があります。画面4.03.01のとおり、hardcopy -hへの書き込みhardcopy.N場合は、N現在のウィンドウの数です。
キース・トンプソン

4

これは私のために働きました:

編集モード(~)に入り、次のように入力します。

:hardcopy -h buff_file

それは巨大なファイルを作成し、そのうち98%は空でしたが、私のログは残りの2%に完全に存在しました。


-2

Ctrl+ A:およびコマンド「に関するログ」を発行します。

または、それを.screenrcファイルのデフォルトとして「deflog on」として設定します。


2
このコマンドを実行すると、すべてのログが開始されると思います。すべてをログに記録したくない(冗長すぎる)。スクロールバックバッファをファイルとしてキャプチャしたいだけです。

-3

やりますCtrl+ AH

これにより、現在の画面がハードコピーファイル(たとえば、画面0のhardcopy.0)に保存されます。Ctrl+ Aに移動:してhardcopyコマンドを入力するよりも速い方法のようです。


3
残念ながら、これはスクロールバックバッファーではなく、画面のVISIBLE部分のみを保存します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.