その他

【解説】テキストファイルの日報作成を自動化する方法

その他
この記事は約3分で読めます。

今回は、メモを取る際テキストファイルでメモを作成する苦しみを解決します。
具体的には、定期実行するバッチファイルを作成して、毎朝作成を自動で実行してくれるようにします。

想定読者

  • Linuxユーザー
  • テキストファイルで毎日メモを作りたい
  • 年月日でディレクトリを分け、該当月のフォルダを動的に判断して作成したい

スクリプトファイルの生成

まずはシェルスクリプトのファイルを作ります。
今回はドキュメントに作ることにしましたが、基本はどこでもOKです。

$ touch ~/Documents/mklog.sh
$ open ~/Documents/mklog.sh

スクリプトプログラムの実装

シェルスクリプトのファイルを開いたら、編集します。
今回は下記のような内容にしましたが、使いやすいように改変してください。

# 下記をお使いのシェルに読み替え、指定してください。
#!zsh

# 保存先のファイル名
TARGET_DIR="$HOME/Documents/Log"

# 現在の日付から年月日を取得
year=$(date +"%Y")
month=$(date +"%m")
day=$(date +"%d")

MONTH_DIR="$year$month"
# 月のフォルダを生成するか判定
if [ "$day" = "01" ]; then
  mkdir -p "$TARGET_DIR/$MONTH_DIR" >/dev/null 2>&1 || echo "フォルダが既に存在します。"
  TARGET_DIR="$TARGET_DIR/$MONTH_DIR"
else
  if [ ! -d "$TARGET_DIR/$MONTH_DIR" ]; then
    echo "フォルダが存在しないため、新しいフォルダを作成します。"
    mkdir -p "$TARGET_DIR/$MONTH_DIR"
  fi
  TARGET_DIR="$TARGET_DIR/$MONTH_DIR"
fi

# ファイルを生成
FILE_NAME="$month$day.txt"
touch "$TARGET_DIR/$FILE_NAME"

echo "ファイルの生成が完了しました."

このままでは使えないため、シェルスクリプトの実行権限をchmodコマンドでファイルに付与します。
775オプションは最強にするための呪文です。

$ chmod 755 ~/Documents/mklog.sh

これで準備は出来ました。
あとはコマンドを使わずとも、ファイルをCLIで呼ベばスクリプトは動作します。

$ ~/Documents/mklog.sh

シェルスクリプトを定期実行する

便利コマンドcron を使って、特定の日時にジョブを実行してくれるようにします。

crontabコマンドはUnix系オペレーティングシステム(OS) において、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。

Wikipedia

まずはcronファイルを編集します。

$ crontab -e

crontabコマンドを実行すると、CLI上で編集可能になります。
ここに直接ジョブ設定を書き込んでいきます。

# 毎日午前9時にシェルスクリプトを実行する場合
00 09 * * * zsh ~/Documents/mklog.sh

上記を書いたら、:wqを打って編集を終了します。

これで毎日朝9時にテキストファイルが生成されるようになりました。
あとはgit管理にして、書いたものを毎夜コミットすると幸せになれます。