初めに
解析用のPCはlinux(ubuntu)なのですが、以前OSをアップデートする際に誤ってクリーンインストールしてしまったので、頑張って作った設定がすべて消えてしまいました。。。
再設定をしていく過程で、記事になりそうなことがあれば、このブログに追記していこうと思います。
目的
解析を開始するときにターミナルから入力していくのですが、この作業をtextファイルで記録することができれば、いつでも見直すことができるため再現性の担保につながります。
今回は、ターミナルの入力および出力をtextファイルで記録する方法について書いていきます*1。
内容
設定するところは二カ所です。
まずターミナルを起動し、
$ nano .bashrc
と打ち込みます*2。
nanoはeditorと呼ばれ、ターミナル上でファイル内容を編集することのできるコマンドです。
すると、ターミナルの表示が変わり、.bashrcファイルの中身が表示されると思います。
最終行に
# start alias alias start="bash /home/*****/local/setting/alias/start.sh"
と記述し、Ctrl+Oで書き込み、Ctrl+Xで終了します。
間違えて.bashrcファイルをいじってしまった場合は、書き込みせずにCtrl+Xで終了してください。
設定ファイルをいじってしまうとめんどくさいので。
aliasコマンドは、新しく好きなコマンドを設定できるコマンドです(今回は"start"というコマンドを作っています)。
*****は自分のusernameを入れてください。ちなみに、.shファイルへのPATHは自分の好きなものにしていただいて構いません。
次に、
mkdir -p ~/local/setting/alias #aliasの.shファイル保存用ディレクトリ作成 mkdir ~/local/log #log保存用ディレクトリ作成 nano ~/local/setting/alias/start.sh
と打ち込み、start.shファイルを指定の場所に作成します。
何も書いていないファイルが開かれますので、
#!/bin/sh # for make log file today=$(date "+%Y%m%d-%H%M") folder=$(basename `pwd`) echo "Hello! Welcome to ***** PC (・v・)/" echo "what is your name?" read name logfilename=${today}-${name}-${folder} script /home/*****/local/log/${logfilename}.txt
と記入し、同様に保存します。
このように、.shファイルの中に自分の行いたいコードを記載し、.shファイルを実行することで一度にすべてのコードを実行することをシェルスクリプトといいます。
ターミナルを再起動して、ターミナル上に
start
と入力すると、
Hello! Welcome to ***** PC (・v・)/ what is your name? wet-to-dry #ここは自分で入力する スクリプトを開始しました。ファイルは /home/*****/local/log/20200929-1828-wet-to-dry-*****.txt です
という感じでログの記録が開始します。
ログは "/home//local/log/20200929-1828-wet-to-dry-.txt"にテキストファイルで保存されています。
ログの記録をやめたいときは
exit
と一回入力すれば良いです*3。
ログの見方
ログを見るときは
cat /home/*****/local/log/20200929-1828-wet-to-dry-*****.txt
とcatを使ってください。
script関数はcolorcodeが出力に入ってしまっているため、viやnano、text editorなどで見ようとするととても読みづらいです。
cat↓
Script started on 2020-09-29 18:45:06+0900 *****@*****:~$ exit exit Script done on 2020-09-29 18:46:03+0900
nano↓
Script started on 2020-09-29 18:45:06+0900 ^[]0;*****@*****: ~^G^[[01;32m*****@*****^[[00m:^[[01;34m~$ exit Script done on 2020-09-29 18:46:03+0900
まとめ
まあ、基本的に解析したら入出力すべて実験ノートにすべきで、実験ノートに書いておけばログ機能はいらないとは思います。
過去の実験ノートをOnenoteで電子化した記事も貼っときます