ターミナルの表示内容をファイルに保存したい – script コマンド

kiccocui, linux

kiccoです。インフラ周りをやってます。
エンドユーザーに近いアプリ関連は苦手です。
サッカーと競馬と木村カエラが好きです。

コマンドラインでの作業内容や出力内容をファイルに保存したい場合に重宝する script コマンドを紹介します。
使い方は簡単。ターミナルでコマンドを実行するだけ。
$ script
スクリプトを開始しました、ファイルは typescript です

CWD に typescript という名前のファイルが作成され出力内容が保存されます。

保存先のファイル名を指定することもできます。
$ script work.log
スクリプトを開始しました、ファイルは work.log です

それでは何かコマンドを実行してみましょう。
$ date
2008年 11月 27日 木曜日 20:36:15 JST

ファイルへの出力をやめたい場合は exit を実行します。
$ exit
スクリプトを終了しました、ファイルは typescript です

それでは保存された内容を見てみましょう。
$ cat typescript
スクリプトは 2008年11月27日 20時36分13秒
に開始しました[kicco ~]$ date
2008年 11月 27日 木曜日 20:36:15 JST
[kicco ~]$ exit
スクリプトは 2008年11月27日 20時36分18秒
に終了しました

一部改行がおかしいですがきちんと出力内容が保存されています。

“-a”オプションを指定することで既存のファイルに追記して保存することができます。
$ script -a
その他にも以下のオプションがあります。

-c COMMAND
インタラクティブなシェルではなく、COMMAND を実行する。標準出力が端末 (tty) でないと動作が変わってしまうプログラムの出力を、 script が簡単に記録できるようにする。
-f
書き込みをするごとに出力をフラッシュする。これは遠隔で共同作業をする場合に良い。一方の人が `mkfifo foo; script -f foo' を実行した場合、もう一方の人は、`cat foo' を使うことにより、何が実行されているかをリアルタイムで監視することができる。
-q
寡黙な動作にする。
-t
タイミングデータを標準エラーに出力する。このデータはスペースで区切られた 2 つのフィールドからなる。 1 番目のフィールドは、前の出力からの経過時間を表す。 2 番目のフィールドは、そのときに何文字出力されたかを表す。この情報は、タイピングと出力の実際の遅延時間で、写しを再現するために使われる。

こちらのページを参考にさせて頂きました。
JM – script

それではまた v(^o^)

kiccocui, linux

Posted by kicco