2009-05-27 11 views
1

script(1)は、対話型端末セッションの記録を保持するためのツールです。デフォルトでは、ファイルtranscriptに書き込みます。私の問題は、readline機能を持っているksh93を使用していることです。そのため、トランスクリプトにはあらゆる種類のターミナルエスケープシーケンスが混在しており、実際に実行されたコマンドを再構築するのは非常に困難です。迷いはありません^Mのものなどはもちろんです。script(1)ツールの出力を駆除するツールはありますか?

scriptで書かれた記録ファイルを読み込むツールを探していて、すべてのジャンクを取り除き、シェルが実行していると思ったものを再構築するので、実際に実行されたコマンド$PS1が表示されます。それができない場合は、ANSIエスケープシーケンスを使用するだけで、理想的にはterminfoデータベースの知識を使用するか、失敗するようなツールを書く方法に関する提案を探しています。

シェルヒストリーに見えるチートは、本当に実際に動作する限り、受け入れられます。

答えて

0

トランスクリプトを閲覧するためにデフォルトでcat/moreは動作しませんか?実際に実行されたコマンドからスクリプトを作成しようとしていますか(これは私の経験では危険です)。

とにかく、3年の答えがないので、私は不完全な解決策でそれを与えるでしょう。実際に入力されたコマンドだけに興味がある場合は、印刷できない文字を削除し、PS1 'を読みやすくユニークなものに置き換え、その一意の文字列をgrepに置き換えます。このように:

$ sed -i 's/[^[:print:]]//g' transcript 

$ sed 's/]0;[email protected]: [email protected]:~/CARTMAN/g' transcript | grep CARTMAN 

説明:最初のsedをした後、PS1' はそのまま、トランスクリプトファイルの最初の数行のいずれかから撮影することができます - PS1' はPS1と異なっている - として変更することができます一意の読み取り可能な文字列(ここでは「CARTMAN」)。プロンプトの最後のドル記号は意図的に省略されていることに注意してください。

私が試したいくつかの例では、これはすべてを解決するわけではありませんでしたが、ほとんどの問題を処理しました。

関連する問題