[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

script【コマンド】

pointこの用語のポイント

pointUNIX系で使えるコマンドだよ

point操作内容を記録するよ

スポンサーリンク

簡単に書くよ

script【コマンド】とは

操作内容(端末の入出力)を記録するときに使うコマンド
です。

image piyo

詳しく書くよ

UNIX系(LinuxとかMacとか)で使えます。

「script」コマンドの書き方は、

script [オプション] [ファイル名]

です。

オプションはちょぼちょぼとあります。

オプション説明
-a内容をファイルの末尾に追加する(上書きしない)
-c 【コマンド】【コマンド】の実行結果を記録する
-f操作内容をファイルに即時反映する(書き込む毎に出力内容をフラッシュする)
Flush output after each write. This is nice for telecooperation: One person does ‘mkfifo foo; script -f foo’ and another can supervise real-time what is being done using ‘cat foo’.
-q開始、終了時のメッセージを表示しない&終了時のメッセージを表示しない
-tタイミングデータを標準エラー出力に出力する。タイミングデータって何?
Output timing data to standard error. This data contains two fields, separated by a space. The first field indicates how much time elapsed since the previous output. The second field indicates how many characters were output this time. This information can be used to replay typescripts with realistic typing and output delays.

ですね。
オプションは複数組み合わせて指定できます。

それでは使い方を見ていきましょう。

何も付けないで

script

を実行すると

Script started, file is typescript

というメッセージが表示されて記録が始まり、以降の画面に対する表示内容がすべて「typescript」という名前のファイルに記録されます。

この状態で、例えば「ls」コマンドを実行したとしましょう。
私の環境では以下の内容が画面上に表示されました。

# ls
test01 typescript
#


記録を終了したいときには

exit

を実行します。
そうすると

Script done, file is typescript

というメッセージが表示されて、表示内容の記録が終了します。
その後、ファイル「typescript」の中身を覗いてみると、以下の内容が記録されていました。

Script started on Fri 07 Nov 2014 11:11:50 AM JST
# ls
test01 typescript
# exit
exit

Script done on Fri 07 Nov 2014 11:15:33 AM JST


実行したコマンド及びその結果が記録されていますね。

ファイル名を指定しない場合は「typescript」という名前のファイルに記録されますが、任意のファイル名を指定することも可能です。
例えば

script hoge.txt

を実行すると、ファイル名が「hoge.txt」なファイルに記録されますよ。

これが「srcipt」コマンドの基本的な使い方です。

次に、オプションの使い方を見てみましょう。

オプション「-a」は上書きではなく追記するためのオプションです。
例えば

script
ls
exit
script
cd
exit


を順番に実行すると、ファイルには

Script started on Fri 07 Nov 2014 11:23:04 AM JST
# cd
# exit
exit

Script done on Fri 07 Nov 2014 11:23:07 AM JST


のように記録されます。
上書きされて、後に実行した方(「cd」コマンドを実行した方)のみ記録として残っていますね。

一方、二回目の「script」コマンドの実行に「-a」オプションを付けて

script
ls
exit
script -a
cd
exit


を順番に実行すると、ファイルには

Script started on Fri 07 Nov 2014 11:24:25 AM JST
# ls
test01 typescript
# exit
exit

Script done on Fri 07 Nov 2014 11:24:26 AM JST
Script started on Fri 07 Nov 2014 11:24:30 AM JST
# cd
# exit
exit

Script done on Fri 07 Nov 2014 11:24:32 AM JST


のように追記されます。
今度は、どちらの記録も残りました。

これが「-a」オプションです。
追記モードにしてくれます。

次にオプション「-c」です。
これはコマンドの実行結果をファイルに出力するためのオプションです。
例えば

script -c ls

を実行すると、画面には

Script started, file is typescript
test01 typescript
Script done, file is typescript


のように表示されます。
表示内容が記録されたファイル「typescript」の中身は、以下の通りです。

Script started on Fri 07 Nov 2014 11:26:55 AM JST
test01 typescript

Script done on Fri 07 Nov 2014 11:26:55 AM JST


これは

script
ls
exit


を順番に実行したのと同じ結果です。

これが「-c」オプションです。
コマンドの実行結果を記録してくれます。

次にオプション「-f」です。
これは操作内容をファイルに即時反映するためのオプションです。

ちょっとややこしいので、順番に書いていきます。
頑張って付いてきてください。

まず下準備として、端末を2つ起動します。

次に1つ目の端末で

script

を実行して記録を開始します。

その後、2つ目の端末で

tail -f typescript

を実行して「script」コマンドで記録するファイルの内容を表示します。
ちなみに「tail」コマンドはファイルの最後の方を表示するときに使うコマンドで「-f」オプションはファイルに内容が追記されたらリアルタイムで表示するためのオプションです。

この状態で、1つ目の端末(「script」コマンドを実行した端末)で

ls

を実行してみてください。

2つ目の端末(「tail -f」コマンドを実行した端末)には変化が無いはずです。

その後、1つ目の端末(「script」コマンドを実行した端末)で

exit

を実行します。

その瞬間、2つ目の端末(「tail -f」コマンドを実行した端末)に、記録された内容が一気に表示されます。

これが意味するところは

ファイルに記録されるのは「exit」された瞬間

ということです。
「script」コマンド実行中にファイルの中身を覗いても、中身は空のように見えます。

これが「-f」オプション未指定時の動きです。

さて、いよいよ「-f」オプションの登場です。

1つ目の端末で

script -f

を実行して記録を開始します。
次に、先程同様、2つ目の端末で

tail -f typescript

を実行して「script」コマンドで記録するファイルの内容を表示します。
この時点で、2つ目の端末には

Script started on Fri 07 Nov 2014 11:42:49 AM JST

のような記録開始メッセージが表示されるはずです。

この状態で、1つ目の端末(「script」コマンドを実行した端末)で

ls

を実行してみてください。
今度はすぐに「ls」コマンドの実行結果が2つ目の端末に表示されるはずです。

これが意味するところは

ファイルに記録されるのはコマンドが実行された瞬間

ということです。
つまり即時反映を意味します。

これが「-f」オプションです。
指定することで、操作記録をファイルに即時反映してくれます。

次にオプション「-q」を見てみましょう。
これは開始、終了のメッセージを表示しないためのオプションです。

実際に

script -q

を実行すれば分かると思いますが、記録開始メッセージ

Script started, file is typescript

と記録終了メッセージ

Script done, file is typescript

が画面に表示されなくなります。
また、ファイルにも終了メッセージ

Script done on Fri 07 Nov 2014 11:49:32 AM JST

が記録されません。
ただし、開始メッセージ

Script started on Fri 07 Nov 2014 11:50:27 AM JST

だけは記録されます。

これが「-q」オプションです。
画面上への開始・終了メッセージの表示、ファイルへの終了メッセージの記録を止めます。
ファイルへの開始メッセージの記録だけは行います。

最後に「-t」オプションです。

……が、よく分からなかったので飛ばします。

試しに

script -t

を実行してみたところ、標準エラー出力に以下の内容が出力されました。

0.211711 14
0.039255 1
e5.132002 1
(以下略)


「なんじゃ?こりゃ」って感じですね。
何か分かったら追記しますが、多分そんな機会は訪れないでしょう。

「script」コマンドの使い方としては、そんなところでしょうか。

image piyo2

一言でまとめるよ

まぁ「script」ってコマンドが出てきたら「操作内容(端末の入出力)を記録するときに使うんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク