Provided by: manpages-ja_0.5.0.0.20210215+dfsg-1_all bug

名前

       script - 端末セッションの忠実な記録を作成する

書式

       script [options] [file]

バージョンについて

       このマニュアルは、util-linux  2.36 所収の script コマンドのマニュアルである。script コマン
       ドは util-linux 2.35 でかなり大幅な改訂が行われた。そのため、バージョン 2.34 以前の script
       では、このマニュアルで述べている機能やオプションに使えないものがあると思う。    バージョン
       2.34 やそれ以前の script の動作やオプションについては、 付属の英語マニュアルをご覧いただき
       たい。

説明

       script は、端末セッションで行われるすべてについて忠実な記録 (タイプスクリプト、typescript)
       を作成する。端末上のデータは、未加工のまま (in raw form) ログファイルに記録され、 タイミン
       グに関する情報は、(作成する、しないが任意の)  構造化された別のログファイルに記録される。こ
       のタイミングのログファイルは、後で scriptreplay(1)  を使用して、セッションを再生するために
       も、 またセッションに関する補足情報を記録するためにも必要である。

       バージョン  2.35 以降の script は、複数ストリームをサポートし、 入力と出力を別々のファイル
       に記録することも、 両者を一つのファイルに記録することも可能になっている。 またそうしたバー
       ジョンでは、補足情報を記録する新型のタイミングファイルも使用できる。          scriptreplay
       --summary というコマンドを使えば、そうした補足情報のすべてを見ることができる。

       引き数の file やオプションの --log-out file を指定すると、script  はセッションのやり取りを
       file  という名前のファイルに記録する。ファイル名を指定しない場合は、セッションのやり取りを
       typescript というファイルに記録することになる。

       --log-in--log-io  を使って入力のログを取ると、セキュリティ的に危険な情報まで記録される
       ことになるかもしれない。  端末のエコーフラグ (echo flag) の設定がどうなっていようと、 ログ
       ファイルに端末セッションにおけるすべての入力が書き込まれるからである (たとえば、パスワード
       までも)。

オプション

       以下で使用する引き数 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
              出力を filetypescript に追加する。ファイルの既存の内容はそのまま保持される。

       -c, --command command
              対話シェルではなく、command を直接実行する。  そうすることで、標準出力が端末  (tty)
              ではない場合に動作が違ったものになるプログラムの出力が、取り込みやすくなる。

       -E, --echo when
              このオプションは、セッション中で使われる疑似端末の  ECHO フラグを制御する。サポート
              されるモードは、always,  never,  auto  である。デフォルトは  auto  であり、その場合
              は、目下の標準入力が端末ならば、  二重のエコーを避けるために、ECHO は抑止され、標準
              入力が端末でないならば (たとえば、echo date | script のように、標準入力がパイプの場
              合)、 セッションログに入力の記録漏れが起きないように、ECHO は有効になる。

       -e, --return
              子プロセスの終了ステータスを返す (訳注: 詳しく言うと、script 上で最後に実行したプロ
              セスの終了ステータスを script の終了ステータスとして返すようにする)。  子プロセスが
              シグナルによって終了させられたときの終了ステータスには、bash の場合と同じ形式を使用
              する  (すなわち、「128  +  シグナル番号」である)。   子プロセスのその終了ステータス
              は、タイプスクリプトファイルにも常に記録される。

       -f, --flush
              書き込みをするたびに出力をフラッシュする。 離れた場所で共同作業をしているとき、これ
              は役に立つ。 片方が `mkfifo foo; script -f foo' をすれば、もう一方は `cat  foo'  を
              使って、相手が何をやっているかリアルタイムで監視できるわけである。 頻繁にフラッシュ
              すると、パフォーマンスに影響が出ることに注意していただきたい。  SIGUSR1  シグナルを
              使って、オンデマンドでログをフラッシュすることもできる。

       --force
              デフォルトの出力ファイル  typescript がハードリンクやシンボリックリンクであってもよ
              いことにする。すなわち、script コマンドがシンボリックをたどるようになる。

       -B, --log-io file
              入力と出力のログを同じファイル file  に記録する。注意してほしいが、このオプションに
              意味があるのは、--log-timing   オプションも一緒に指定した場合だけである。そうしない
              と、ログファイル file 中の出力ストリームと入力ストリームを分離できないことになる。

       -I, --log-in file
              入力を file に記録する。--log-in だけを指定すると、出力のログは作成されないことにな
              る。

              このログ機能を使うときは、気を付けていただきたい。 端末でエコーフラグを「抑止」にし
              ているときの入力も含めて、すべての入力を記録するからである  (たとえば、パスワードの
              入力も記録する)。

       -O, --log-out file
              出力を file に記録する。オプション --log-out--log-in を指定しない場合、出力が記
              録されるのは、デフォルトでは typescript という名前のファイルである。--log-in だけを
              指定すると、出力のログは作成されないことになる。

       -T, --log-timing file
              タイミング情報を file に記録する。現在では、タイミングファイルに 2 種類のフォーマッ
              トが使用できるようになっている。 classic (従来型) フォーマットは、(入力なり、出力な
              り)  片方のストリームのロギングのみが有効になっている場合に使用される。  マルチスト
              リーム型のフォーマットが使用されるのは、--log-io のときか、--log-in--log-out が
              一緒に使われているときである。 --logging-format も参照していただきたい。

              [訳注]  次の  --logging-format についても言えることだが、「デフォルトでは、--log-in
                      さえ指定されていれば、--log-out   が指定されていないでも、advanced  (新型)
                      フォーマットが使用される」、というのが正確な説明のようだ。--log-in だけ指定
                      するというのは、scriptlive での再実行を考えているのでないかぎり、意味のない
                      ことだが。

       -m, --logging-format format
              タイミングファイルに強制的に advanced (新型) または classic (従来型) フォーマットを
              使用させる。 デフォルトは、出力のみをログに記録する場合は、従来型であり、  入力と出
              力、両方のロギングが要求されている場合は、新型である。

              classic フォーマット

              ログは、スペースで区切られた二つのフィールドからなる。 最初のフィールドは、前回の出
              力から経過した時間を示し、2 番目のフィールドは、今回、何文字 (characters)  出力した
              かを示している。

              advanced (multi-stream) フォーマット

              最初のフィールドは、記載事項のタイプ識別子である   ('I'nput,   'O'utput,  'H'eader,
              'S'ignal)。2 番目のフィールドは、前回の記録から経過した時間。  そして、記載事項の残
              りの部分は、タイプ特有のデータである。

       -o, --output-limit size
              タイプスクリプトファイルやタイミングファイルの上限を  size までとし、そのサイズを越
              えたら、子プロセスをストップする。 ファイルサイズの計算には、script  コマンドが子プ
              ロセスの出力の前後に付ける開始や終了のメッセージは入らない。   バッファリングのせい
              で、生成される出力ファイルが、指定した値より大きくなることがある。

       -q, --quiet
              寡黙モード (開始や終了のメッセージを標準出力に書き出さない)。

       -t[file], --timing[=file]
              タイミングデータを標準エラーに出力する。file を指定した場合は、  タイミングデータの
              出力先がそのファイルになる  (訳注: 短いオプション -t とタイミングファイル名は、間に
              空白を入れず、続けて書かなければならない。   そうしないと、タイミングデータが標準エ
              ラーに出力されてしまう)。 このオプションは非推奨であり、--log-timing の使用をお勧め
              する。 なお、--log-timing では、引き数 file の指定は任意ではない (訳注:  つまり、必
              須である)。

       -V, --version
              バージョン情報を表示して終了する。

       -h, --help
              ヘルプを表示して終了する。

シグナル

       SIGUSR1 を受け取ると、script は直ちにバッファの内容を出力ファイルにフラッシュする。

環境変数

       次の環境変数を script は利用する。

       SHELL  環境変数    SHELL   が存在すれば、script   からフォークするシェルは、そのシェルにな
              る。SHELL が設定されていない場合は、Bourne  シェルだと見なされる  (ほとんどのシェル
              が、この変数を自動的に設定する)。

注意

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

       vi  のような対話的なコマンドには、タイプスクリプトファイルにゴミを作るものがある。  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
       <https://www.kernel.org/pub/linux/utils/util-linux/> から入手できる。