web-dev-qa-db-ja.com

gnu screenでディスプレイに印刷されたものを保存する方法はありますか?

たとえば、何かをアップグレードして、アップグレードがどのように行われたかを読み返したいときなど、コマンドラインで行うすべてのことを保存するのが好きです。

通常、Mac OSXとターミナルでは、好きなだけスクロールして戻り、Cmd-Sで保存できます。しかし、gnu screenを使用してSSHを使用している場合、ターミナルから直接スクロールして戻ることはできません。

スクリーンセッションで発生するすべてをディスクに保存するにはどうすればよいですか?たぶんデフォルトで(すべてのセッションが自動的にファイルをディスクに作成します...)

ありがとう!

8
luca

screenにはロギング機能があります。 screenを開始するときにscreen -Lを実行して(またはscreen内から)開始します。または、screen内から、を押すこともできます Ctrl-a:H

デフォルトでログオンする場合は、~/.screenrcファイルに次の行を追加します。

deflog on

次のようなものを使用してファイル名を設定することをお勧めします。

logfile /tmp/screenlog.%n

オプション1:スクリプトコマンドを調べます。 「manスクリプト」

「スクリプトは、端末に印刷されたすべてのTypeScriptを作成します。TypeScriptファイルは後でlprで印刷できるため、割り当ての証拠としてインタラクティブセッションのハードコピーレコードが必要な学生に役立ちます。」

基本的に「script」(引用符なし)と入力します。作業を行い、exitと1回入力してセッションを終了します。

オプション2:画面の「ハードコピー」モードを使用します。 'Crtl-a' then'h 'これにより、現在のセッションがファイルに保存されます。

注:GNU画面にはスクロール機能があります。「crtl-]」(右角括弧)を使用してコピーモードに入り、次に「ctrl-b」と「ctrl-f」を使用して移動します一度に1ページ下に移動します。

2
Sirex

スクロールバックを増やしてコピーモードで表示することは可能です http://www.samsarin.com/blog/2007/03/11/gnu-screen-working-with-the-scrollback-buffer/

2
Stephen Paulger

通常はCtrl-a Hにバインドされている「log」操作を使用することをお勧めします。これにより、screenlogという新しいファイルが開きます。[〜#〜] n [〜#〜]ここで、[〜#〜] n [〜#〜]はウィンドウ番号です。ファイルが存在する場合、出力はファイルに追加されます。そのウィンドウのすべての出力は、もう一度Ctrl-a Hを押して非アクティブ化するまで、スクリーンログに記録されます。[〜#〜] n [〜#〜]ファイル。この機能は、Ctrl-a :logを使用して取得することもできます。 logfile {filename}コマンドを使用して名前を変更できます。ファイルは、画面が最初に開始されたディレクトリに配置されますが、logfileコマンドまたはchdir [{directory}]を使用して変更できます。

これは、ハードコピーやスクロールバッファと同じではないことに注意してください。これはscript(1)プログラムと同じ機能ですが、新しいプログラムを呼び出さずに単一のウィンドウに関連付けられています。

スクロールバッファの内容全体を保存する場合は、Ctrl-a ] g <space> G <space> Ctrl-a :writebufを使用します。これにより、スクロールバッファがファイル/ tmp/screen-exchangeに保存されます。一部のみを保存する場合は、「g」と「G」を他の移動キーに変更します。

1
Arcege