きっかけ
日報書くためのフォーマットをなんか作りたいなあと思ったので作りました。
日付で管理できるのであとあとの振り返りに便利だと思うので是非ご活用ください
スクリプト本体
create_journal.sh
#!/bin/bash
# 環境変数から本名を取得
if [ -f .env ]; then
export $(cat .env | xargs)
else
echo ".envファイルが見つかりません。"
exit 1
fi
FULL_NAME=${FULL_NAME}
# 現在の日付を取得
TODAY=$(date +"%Y/%m/%d")
YYYY=$(date +"%Y")
MM=$(date +"%m")
DD=$(date +"%d")
WEEKDAY=$(date +"(%a)") # 曜日を短縮形で取得
# フォルダパスとファイル名を定義
FOLDER="${YYYY}/${MM}"
FILENAME="${YYYY}${MM}${DD}.md"
FILEPATH="${FOLDER}/${FILENAME}"
# フォルダが存在しない場合は作成
if [ ! -d "$FOLDER" ]; then
mkdir -p "$FOLDER"
fi
# ファイルが既に存在するか確認
if [ -f "$FILEPATH" ]; then
read -p "ファイル $FILEPATH は既に存在します。上書きしますか? (y/n): " CONFIRM
if [ "$CONFIRM" != "y" ]; then
echo "ファイルの作成をキャンセルしました。"
exit 0
fi
fi
# ファイルを作成し、内容を書き込む
cat <<EOL > "$FILEPATH"
${YYYY}/${MM}/${DD}${WEEKDAY} ${FULL_NAME}
#作成したいフォーマットを記述
EOL
echo "ファイルが作成されました: $FILEPATH"
read -p "このままそのファイルを開きますか? (y/n): " CONFIRM
if [ "$CONFIRM" == "y" ]; then
# 開きたいエディタのコマンドを設定
# 自分はvscodeで開きたいので code .を設定
code . $FILEPATH
fi
使い方
スクリプトに権限を与えてを実行するだけ。
自分の名前だけ.env
に設定してください
$ chmod 775 create_journal.sh
$ ./create_journal.sh
.env
FULL_NAME="フル・ネイム"
いいところ
日付に応じたファイルパスに日報のフォーマットが吐き出されます。
スクリプトを実行した日時をそのままファイルパスにしてくれます
日報を生成した際のフォルダ構造
├── 2024
│ ├── 05
│ │ ├── 20240510.md
│ │ ├── 20240516.md
│ │ ├── 20240517.md
│ │ ├── 20240522.md
│ │ ├── 20240523.md
│ │ ├── 20240524.md
│ │ ├── 20240527.md
│ │ ├── 20240528.md
│ │ ├── 20240529.md
│ │ ├── 20240530.md
│ │ └── 20240531.md
│ ├── 06
│ │ ├── 20240603.md
│ │ ├── 20240604.md
│ │ ├── 20240605.md
│ │ ├── 20240606.md
│ │ ├── 20240607.md
│ │ ├── 20240610.md
│ │ ├── 20240611.md
│ │ ├── 20240612.md
│ │ ├── 20240613.md
また、スクリプトを実行するとそのままファイルをいじれます
$ ./create_journal.sh
ファイルが作成されました: 2024/12/20241216.md
このままそのファイルを開きますか? (y/n):
まとめ
それなりに便利なのでよければ使ってやってください。