SCRIPT(1)

名称
script - 端末上に表示したすべてのもののログをとる

書式
script [-akq] [-t time] [file [command ...]]

解説
script ユーティリティは、 端末上に表示したすべてのもののログ (typescript) をとります。 記録後に lpr(1) で印刷することもできるので、 学生の宿題の証明等で対話的セッションのハードコピー が必要なときなどには有効です。

ファイル名 file が指定されていれば script は file に記録します。 指定されていなければ typescript というファイル名で記録されます。

引数 command を指定すると、 script は対話シェルの代りに指定したコマンドをオプションの引数ベクタ付きで実行します。

オプションとしては以下のものがあります:

-a  file もしくは typescript がすでに存在している場合には、それに追加する形で記録していきます。

-k  出力だけでなくプログラムに送られたキー入力も記録します。

-q  静かなモードで実行します。開始時と終了時のステータスメッセージを省略します。

-t time
    スクリプト出力ファイルにフラッシュする間隔を指定します。 値 0 を指定すると script は文字 I/O イベントごとにフラッシュします。 デフォルトのフラッシュ間隔は 30 秒です。

script は、フォークしたシェル (またはコマンド) を終了したとき (Bourne シェル (sh(1)) なら control-D で終了しますし、 C シェル csh(1) なら exit, logout, control-D (ignoreeof が設定されていない場合) で終了します)、記録を終わります。

vi(1) などのある種の対話コマンドでは、ログファイルにゴミが入る ことがあります。 script ユーティリティは、画面を操作しないようなコマンドについては、うまく動作します。 出力結果はハードコピー端末のエミュレーションと言えるでしょう。

環境変数
script は次の環境変数を使用します:

SHELL
    変数 SHELL が存在する場合、 script はこのシェルをフォークします。 SHELL が設定されていない場合は Bourne シェルが使われます。 (ほとんどのシェルはこの変数を自動的に設定します)

関連項目
csh(1) ( history 機能に関連)

歴史
script コマンドは 3.0BSD から登場しました。

バグ
script ユーティリティは、ログファイルにラインフィードやバックスペースも含め、 なんでも 記録 します。このためユーザの期待したものと違うログになることもあります。

スクリプトファイルを指定せずにコマンドを指定することはできません。 これは引数解析の互換性確保のためです。

-k オプションが指定されている場合には、エコーキャンセルは理想と程遠いです。 スレーブ端末モードの ECHO モードがチェックされ、 手動エコー記録をいつ避けるべきかがチェックされます。 これは raw モード時、すなわちプログラムが手動エコーを行う時には動作しません。