web-dev-qa-db-ja.com

ANSIエスケープコードでGNOMEターミナルの内容を保存する方法は?

VT100端末には、端末の内容をエスケープコードとともにファイルに保存する 比較的簡単な方法があります Meta-p

XTerm.VT100.printAttributes: 2
XTerm.VT100.printerCommand: cat - > file
XTerm.VT100.translations: #override Meta <KeyPress> P: print() \n

私はかなり調べてみましたが、デフォルトのGNOMEターミナル+ XTerm + Bashで動作するための解決策が見つかりません。

私ははありませんウィンドウの内容を持つだけの画像が欲しいです。

GNOMEターミナルは最終的にはこれを修正 するかもしれませんが 、どのバージョンに含まれるかについての情報はなく、最後の更新からほぼ3年が経過しています。 。

9
l0b0

残念ながら、l0b0の箱から出した答えは次のとおりです。これは不可能です。

他の回答では、スクリプトを使用してこれを行う方法をリストしましたが、指摘したようにいくつかの違いがあります。もう1つの方法は、ソースをコンパイルするか、不安定なバージョンを使用することです。

Gnome Terminal Source Tarball

Raringのバージョンは3.6.1なので、このソースを見ることができます。 115行目のTerminal-window.cの内部:

/*
 * We don't want to enable content saving until vte supports it async.
 * So we disable this code for stable versions.
 */

#include "terminal-version.h"

#if (TERMINAL_MINOR_VERSION & 1) != 0
#define ENABLE_SAVE
#else
#undef ENABLE_SAVE
#endif
#endif

オプション:

  1. この下に#define ENABLE_SAVEを追加します。
  2. バージョンを不安定版に変更します。
  3. 不安定なバージョンの.DEBをダウンロードします。

お役に立てれば。

3
LimpingNinja

残念ながら、すぐに使える答えは次のとおりです。これは不可能です。

端末で常にスクリプトを実行し、すべての出力をログに記録することで、これを修正する2つの方法があります。 gnome-terminalを開いて、編集-> プロファイル設定に移動し、タブタイトルとコマンドに移動し、カスタムコマンドにこれを使用します:

bash -l -c 'script -q -c bash $HOME/sessionlogs/$BASHPID.sessionlog.$(date +%Y%m%d-%H%M).txt'

「sessionlogs」が$ HOMEに存在することを確認してください。

他の方法は削除され、この質問の2番目の回答として追加されました。

3
LimpingNinja

screenと呼ばれるパッケージがあります-VT100/ANSIターミナルエミュレーションを備えたターミナルマルチプレクサ。

buntu Manuals Webサイトのscreenのマンページscreenと主張する

複数のプロセス(通常は対話型シェル)間で物理端末を多重化するフルスクリーンウィンドウマネージャー各仮想端末は、 DEC VT100端末 の機能に加えて、ISO 6429からのいくつかの制御機能を提供します(ECMA 48、ANSI X3.64)およびISO 2022標準(行の挿入/削除、複数文字セットのサポートなど)VT100/ANSI端末エミュレーションを備えた端末マルチプレクサ。

およびscreenを実行している場合:

Ctrlah (ハードコピー)現在のウィンドウのハードコピーをファイル「hardcopy.n」に書き込みます。

GNOMEターミナルでscreenを実行して入力しました Ctrlah

running screen and typing Ctrl Alt h

これは、Geditで開いたときのhardcopy.1ファイルの出力です。

hardcopy.1 opened in Gedit

screenはUbuntu 13.04のraring/mainソフトウェアリポジトリにあります。

デフォルトではインストールされていません。

0
user85164

script(1) を使用してシェルを実行し、ファイルに保存されたターミナルのすべての入出力(ターミナルエスケープを含む)を取得できます。

0
geirha