アメリエフのブログ

Amelieff Staff Blog

簡単にコマンドの実行ログをファイルに記録する方法

コマンドライン操作していると、
どのコマンドを試して、どんな結果が出たか、一連の作業を簡単に記録したいな〜〜
と思ったこと、ありませんか?


私がLinuxの勉強を始めたばかりの頃、コマンドラインの画面を見て、その出力結果をA4ノートにせっせと書き写していました。(Linux云々以前に、そもそもデジタル初心者すぎて恥ずかしい...😇)
その後は、コマンドラインの画面を、ドラックでコピー&メモ帳にペーストする、という方法にグレードアップしました👏🏻!(レベルが低い)

f:id:iijm-l:20200416120241p:plain
「コピーして...こっちにペースト...、あー最終行が入ってない!...コピーし(続く)」


でも実は、もっと簡単にコマンドのログを取る方法がありました。
この記事では、【初心者向け】手っ取り早くコマンドの実行ログをファイルに記録できる方法をご紹介します💡

方法1:hisotryコマンドを使う

基本的な使い方


historyコマンドを使用すると、コマンドの入力履歴が確認できます。
早速、コマンドを打ち込んでみましょう。

$ history
  1  ls
  2  cd Desktop/
     .
     . 
 56  ls
 57  mkdir todays_shoping_list
 58  mv banana.txt todays_shopping_list/
 59  history

このように、コマンドの入力履歴が番号付きで出力されます。


history 整数値:末尾から行数を指定して表示


history 整数値を入力して実行すると、履歴の最終行から指定した行数分のみを表示することが可能です。これは直近の履歴だけ見たい、という場合におすすめです。

$ history 4
 56  ls
 57  mkdir todays_shoping_list
 58  mv banana.txt todays_shopping_list/
 59  history



history >> ファイル名:外部ファイルにhistoryコマンド結果を出力


このhistoryコマンドの実行結果を外部ファイルに書き出すことで、コマンドログを簡単にファイルとして保存することが可能です。

$ history >> history_20200401.log
$ cat history_20200401.log
  1  ls
  2  cd Desktop/
     .
     . 


もしどこかでコマンドを間違えていて、「なぜか次に進めないな...」というときは、historyコマンドを使って入力したコマンドを確認すると、その原因がわかるかもしれません。

積極的にコマンド履歴を確認して、間違いを見つけて復習する習慣を身につけ、Linuxコマンドをサクサク使えるようになりましょう!


方法2:scriptコマンド

基本的な使い方


scriptコマンドは、標準出力をそのままファイルに書き出すことができます。
早速、コマンドを打ち込んでみましょう。

$ script
スクリプトを開始しました、ファイルは typescript です

このように表示されます。
何が起こっているのかといいますと、実行ディレクトリにtypescriptという名前のファイルを作成されています。

$ ls
typescript

typescriptファイルの中を出力してみますが、まだ空っぽです。

$ cat typescript 
$

実はこのscriptコマンドは、作業終了後にログを出力されるため、終了報告をする必要があります。
終了報告のやり方は、exitと入力して実行するだけです。

$ exit
exit
スクリプトを終了しました、ファイルは typescript です

これで、typescriptファイルに開始から終了までの作業ログが記録されました。

もう一度、中を出力してみます👀

$ cat typescript 
スクリプトは 2020年04月01日 08時43分24秒に開始しました
$ ls
typescript
$ cat typescript 
$ exit
exit
スクリプトは 2020年04月01日 08時45分33秒に終了しました

今度はきちんとtypescriptファイルに今までの記録が残っていました。


script ファイル名:ファイル名を指定して作業ログを保存


また、デフォルトのログファイル名はtypescriptになっていますが、script ファイル名で好きな名前を指定して、そのファイルに作業ログを残すことができます。
※既存のファイルを指定すると、上書き保存されるので注意!

$ script 200410.log
スクリプトを開始しました、ファイルは 200410.log です



script -a ファイル名:既存のファイル名に作業ログを追記


「一度記録したファイルに追記したい!」という場合は、-aオプションを指定します。

$ script -a 200410.log


1つ前にご紹介したhistoryコマンドは、標準出力は記録されていません。
つまり、「自分が入力したコマンド」は保存されていますが、「プログラムが書き出した結果」は保存されていません

しかし、scriptコマンドであれば、コマンドの実行結果まで書き出すことができます。
そのため、コマンドの結果まで残しておきたい慎重派の方には、scriptコマンドがおすすめです。


まとめ

作業ログは何か問題があった時に、コマンドを見直して調べたり、誰かLinuxに詳しい人に相談するときにも役立ちます。
その他にも作業ログを取る方法はありますが、今回は簡単さ重視で、作業ログを記録する方法を紹介しました!
ぜひ積極的に活用してください✨