SCRIPT

Section: User Commands (1)
Updated: June 2014
Index Return to Main Contents
 

名前

script - 端末セッションの写し (typescript) を作成する。  

書式

script [options] [file]  

説明

script は端末のセッションのすべての写し (typescript) を作成する。 端末のデータは、ログファイルに生の形式で格納され、 タイミングは、(オプションで) 別の構造化されたログファイルに格納される。 タイミングのログは、後で scriptreplay(1) でセッションを再生するのに必要であり、 セッションについての追加の情報を格納している。 バージョン 2.35 以降で、 script は複数ストリームをサポートし、入力と出力を別のファイルに記録することも、 1 つのファイルに記録することもできる。 このバージョンでは、追加の情報を記録する新しいタイミングファイルも サポートしている。 コマンド scriptreplay --summary で、すべての情報が提供される。

引き数 file または、オプション --log-out file が指定されると、 script はすべての記録を file に保存する。 ファイル名が与えられなければ、写しは typescript というファイルに保存される。

--log-in または --log-io を使った入力の記録では、 端末の echo フラグ設定に拘わらず、 ログファイルはすべての端末セッションの入力 (例えば、パスワード) を含むので、 セキュリティ上のセンシティブな情報も記録される点に注意すること。  

オプション

size 引き数の後ろに倍数の拡張子 KiB (=1024), MiB (=1024*1024), GiB, TiB, PiB, EiB, ZiB, YiB を 付けることができる ("iB" はオプションであり、つまり "K" は "KiB" と同じ意味である)。 また、拡張子 KB (=1000), MB (=1000*1000), GB, TB, PB, EB, ZB, YB を付けることもできる。
-a, --append
出力を file または typescript に追加 (append) する。 以前の内容が保存される。
-c, --command command
インタラクティブなシェルではなく、 command を実行する。 標準出力が端末 (tty) でないと動作が変わってしまうプログラムの出力を、 script が簡単に記録できるようにする。
-E, --echo when
このオプションは、セッションの擬似端末の ECHO フラグを制御する。 サポートされるモードは always, never, auto である。 デフォルトは auto であり -- この場合、現在の標準入力が端末であれば、 二重のエコーを避けるため、ECHO は無効化される。 また、標準入力が端末でない場合 (例えばパイプ echo date | script の場合)、セッションログの入力の喪失を避けるため、ECHO は有効化される。
-e, --return
子プロセスの終了コードを返す。 bash でのシグナル終了と同じ形式である (つまり、終了コードは 128+シグナル番号になる)。 子プロセスの終了コードは、常に typescript ファイルに格納される。
-f, --flush
書き込みをするごとに出力をフラッシュする。 これは遠隔で共同作業をする場合に良い。 一方の人が `mkfifo foo; script -f foo' を実行した場合、 もう一方の人は、`cat foo' を使うことにより、 何が実行されているかをリアルタイムで監視することができる。 フラッシュは性能に影響がある点に注意すること。 SIGUSR1 を使って、要求に応じてログをフラッシュできる。
--force
typescript ファイルがハードリンクやシンボリックリンクであっても、 デフォルトの出力ファイルを許可する。 コマンドはシンボリックリンクを辿る。
-B, --log-io file
入力と出力を同じ file に記録する。 このオプションは、--log-timing も指定された場合にのみ、意味を持つ点に注意すること。 指定されない場合、出力と入力ストリームをログ file から分離することはできない。
-I, --log-in file
入力を file に記録する。 --log-in しか指定されない場合、出力は記録されない。

このログ記録機能は、端末の echo フラグを無効化している場合の入力 (例えば、パスワード入力) を含む、すべての入力を記録するので、注意して使うこと 。

-O, --log-out file
出力を file に記録する。 オプション --log-out または --log-in が指定されない場合、 デフォルトでは出力はファイル typescript に記録される。 --log-in しか指定されない場合、出力は記録されない。
-T, --log-timing file
タイミング情報を file に記録する。 現在のところ、2 種類のタイミングファイルの形式がサポートされている。 1 つのストリーム (入力または出力) の記録が有効にされている場合に、 昔からの (classic) 形式が使われる。 --log-io が使われた場合、 または、--log-in--log-out の両方が使われた場合、 複数ストリーム (multi-stream) 形式が使われる。 --logging-format も参照すること。
-m, --logging-format format
advanced または classic 形式の使用を強制する。 デフォルトは昔からの (classic) 形式であり、出力のみを記録する。 拡張 (advanced) 形式は、出力だけでなく、入力の記録も要求された場合に、使われる。

昔からの (classic) 形式

このログは、空白で区切られた 2 つのフィールドから構成される。 1 つ目のフィールドは、前の出力からの経過時間である。 2 つ目のフィールドは、そのタイミングで何文字出力されたかを示す。

拡張 (advanced) (複数ストリーム) 形式

1 つ目のフィールドは、エントリータイプの識別子 ('I'nput, 'O'utput, 'H'eader, 'S'ignal) である。 2 つ目のフィールドは、前のエントリからの経過時間であり、 エントリの残りの部分は、タイプ固有のデータである。

-o, --output-limit size
typescript のサイズを制限し、ファイルを size に切り詰めて、サイズを超過した場合に子プロセスを停止する。 計算されるファイルサイズには、 script コマンドが子プロセスの出力の前に付ける開始メッセージと、 後に付ける終了メッセージが含まれない。 バッファリングのために、結果の出力ファイルは指定した値より 大きくなる可能性がある。
-q, --quiet
寡黙な動作にする (開始と終了メッセージを標準出力に書き出さない)。
-t[file], --timing[=file]
タイミングデータを標準エラーに出力する。 file が指定された場合は、ファイルに出力する。 このオプションは古く、file 引き数がオプションでない、 --log-timing を使うべきである。
-V, --version
バージョン情報を表示して、終了する。
-h, --help
ヘルプを表示して、終了する。
 

シグナル

SIGUSR1 を受けると、 script は出力ファイルを即時にフラッシュする。  

環境変数

script は以下の環境変数を用いる。
SHELL
環境変数 SHELL が定義されていると、 script が fork するシェルはそれになる。 SHELL が定義されていなければ、 Bourne シェルが用いられる。 (ほとんどのシェルはこの環境変数を自動的にセットする。)
 

注意

script は fork されたシェルが終了したときに記録を終える (Bourne シェル (sh(1p)) を終わるには control-D を入力する。 C シェル (csh(1)) なら exit, logout, control-d のいずれかを入力する。 ただし control-d が有効なのは ignoreeof がセットされていない場合である)。

vi(1) のようなインタラクティブなコマンドでは、 typescript ファイルにゴミができることがある。 script は画面を操作しないコマンドを扱ったときに最もうまく動作する。 その場合の結果は、ハードコピー端末をエミュレートしたものとなる。

script を対話的でないシェルで実行するのは推奨されない。 script の内部シェルは、常に対話的であり、シェルが対話的でない場合、 予期しない結果になる可能性がある。 script をシェルの初期化ファイルで使う場合、無限ループに入るのを 避けなければならない。 例として、以下の .profile ファイルを使うことができる。 これは、ログインシェルからのみ読み込まれる。

if test -t 0 ; then
    script
    exit
fi

script はあなたが思うより多くの入力を読み込む可能性があるので、 コマンドのパイプから script を使うことも避けるべきである。

 

履歴

script コマンドは 3.0BSD で登場した。  

バグ

script はラインフィードやバックスペースも含め、 すべて をログファイルに書きこむ。 これは普通のユーザが期待するものとは異なるかもしれない。

script は元々対話的な端末のセッションのために設計されている。 標準入力が端末でない場合 (例えば、echo foo | script)、 セッションがハングする可能性がある。 これは、script セッション内の対話シェルが EOF を見つけられず、 script がセッションをクローズする手がかりがないためである。 より詳細な情報は「注意」のセクションを参照すること。  

関連項目

csh(1) (history メカニズムに関する部分), scriptreplay(1), scriptlive(1),  

入手方法

script コマンドは、util-linux パッケージの一部であり、 Linux Kernel Archive から入手できる。


 

Index

名前
書式
説明
オプション
シグナル
環境変数
注意
履歴
バグ
関連項目
入手方法

This document was created by man2html, using the manual pages.
Time: 14:04:02 GMT, January 22, 2021