scriptコマンドを使うと、自分がシェル上で実行したコマンドの入力や出力をファイルに書き出すことができる。
$ script
スクリプトを開始しました、ファイルは typescript です
$ ps
PID TTY TIME CMD
22452 pts/4 00:00:00 bash
22462 pts/4 00:00:00 ps
$ exit
スクリプトを終了しました、ファイルは typescript です
$ cat typescript
スクリプトは 2008年05月15日 08時26分06秒
に開始しました$ ps
PID TTY TIME CMD
22452 pts/4 00:00:00 bash
22462 pts/4 00:00:00 ps
$ exit
スクリプトは 2008年05月15日 08時26分13秒に終了しました$
scriptコマンドをオプションなしで実行すると、ファイル名がtypescriptとして保存される。ファイル名をaaaとしたい場合は、
$ script aaa
とすればよい。
scriptコマンドから出るにはexitを入力するか、Ctrl+Dを入力する。
-aオプションを用いるとファイルへの追加がおこわなれる。
-fオプションを用いるとファイルへの出力が即座に行われる。これを用いると他の端末からtail -f などでリアルタイムに入出力を見ることができる。(マニュアルには行単位で出力と書いてあるが実際にやってみると即座に行われるようだ)
-tオプションを用いると入出力のタイミングデータを標準エラー出力に出力する。
$ script -t 2> timing
.....
$
scriptreplayコマンドを使うと、このtimingファイルとtypescriptファイルを使ってリアルに再現することができる。
$ scriptreplay timing
...
ただしUbuntu日本語環境だとタイミングがうまく動かないみたいなので、scriptコマンド実行のときのLANGを消したらうまくできた。
$ LANG= script -t 2> timing