it-swarm-ja.com

bashセッションログファイルのゴミ。 (スクリプトコマンドを使用)

以下を使用してbashセッションをログに記録しようとしました。

js:/var/tmp # script -aqf /var/tmp/out

outファイルには、出力の他にたくさんのゴミがあります。空白と新しい行だけでなく、次のように表示されます。

Script started on Tue Jul 14 14:17:57 2015
^[[?1034h^[[1m^[[31mjs-om:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[mpwd^M
/var/tmp^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[m^M
^[[1m^[[31mjs:/var/tmp # ^[(B^[[mexit^M
exit^M

問題はエンコーディングにあると思います。この問題の解決策はありますか?

2
Yura

問題はエンコーディングにありません。 manページに記載されている画面の前提条件に従わないようです。

 Certain interactive commands, such as vi(1), create garbage in the type‐
 script file.  Script works best with commands that do not manipulate the
 screen, the results are meant to emulate a hardcopy terminal.

おそらく複雑なプロンプトから生じるあらゆる種類のものがあります。プロンプトを設定する

PS1="$ " 

それがゴミを書くのを防ぐために。

2
Anthon

PS1を修正するだけでなく、TERM環境変数に適切な値をエクスポートすることで、これらの非印刷文字を出力しないようにアプリケーションを説得できる場合があります。正規のものは、おそらくscriptセッションの開始時のexport TERM=dumb(または呼び出し時のTERM=dumb script <args>)です。 tputを使用してPS1を移植可能に作成すると仮定すると、後者もそのために機能する可能性があります。

1
Toby Speight

スクリプト出力から制御文字(コンソールコード/色を含む)を削除する はあなたの質問に答えるように見えます。

最初に、すべてのエスケープシーケンスのTypeScriptファイルをクレンジングした後、script +を使用します。

0
David Favor