はじめに
日頃からシェルスクリプトとPythonのファイルを実行していると,
いつ,どこで,どのような処理をしたのか,残しておきたくなります.
ここでは,これらを記録するための,私なりの工夫をご紹介します.
その日のための作業用ディレクトリ
まず,その日のための作業用ディレクトリを作成します.
以下ではこれを「DF (Day Folder)」と呼ぶことにします.
ドキュメントの下にその月のディレクトリを作成し,
その中にさらに,その日のためのディレクトリを作成します.
DFの作成は,bashrcに以下のように記載して,自動化しています.
~/.bashrc
export DF=/home/Username/Documents/`date '+%m'`/`date '+%m%d'`
mkdir -p $DF
私はDFを,その日の汎用的なフォルダとして,様々な書類の保存に使用しています.
たとえばあるコードを書き換える際には,更新前のコードを
$ cp main.c $DF
と,念のため保存しています.
ジョブファイルを保存して実行するコマンドの定義
次に,シェルスクリプトとPythonのジョブファイルを実行した際に,
エラーにならなかった場合にそのファイルをDFにコピーし,
実行した時間と実行した場所を記録して,区別できるようにします.
私はジョブファイルのファイル名の先頭に実行した時間を付加し,
ジョブファイルの一番先頭の行に実行した場所を挿入しています.
bashrcに次の項目を追記して,コマンド「ana」を定義します.
~/.bashrc
function ana(){
DFFILE=$DF/`date '+%H%M%S'`$1
if [ "'`echo ${1##*.}`'" = "'sh'" ]; then
sh $1 && cp $1 $DFFILE && sed -i 1i`pwd`$1 $DFFILE
elif [ "'`echo ${1##*.}`'" = "'py'" ]; then
python $1 && cp $1 $DFFILE && sed -i 1i`pwd`$1 $DFFILE
else
echo "the extension of job file must be 'sh' or 'py' with command ana"
echo "the extension of input file:'`echo ${1##*.}`'"
fi
}
anaコマンドの引数は,拡張子が ".sh" もしくは ".py" のジョブファイルです.
引数の拡張子を判別して,sh もしくは python のコマンドを実行します.
$ ana hoge.sh #or hoge.py
具体例
$ cd $DF #ここではDFで作業することにします.
$ ls #".sh" と ".py" の二つのファイルを用意しました.
main.sh hoge.py
$ cat main.sh #main.sh を実行すると,
echo "This is a pen" #"This is the pen" と表示します.
$ ana main.sh #「ana」で実行してみます.
This is a pen #たしかにシェルスクリプトが実行されました.
$ ls $DF # DFの中には,main.shに時間がついたファイルがあります.
182115main.sh main.sh hoge.py
$ head $DF/182115main.sh #このファイルの一行目には,実行した場所が記載されています.
/home/Username/Documents/12/1230main.sh
echo "This is a pen"
$ cat hoge.py #以下,Pythonでも同様の操作になります.
print("Is this a pen?")
$ ana hoge.py
Is this a pen?
$ ls $DF/Executed
182115main.sh 182329hoge.py main.sh hoge.py
$ head $DF/182329hoge.py
/home/Username/Documents/12/1230hoge.py
print("Is this a pen?")