はじめに
初めまして、フロントエンドから新卒でSREに転生した🦊です。
今回は以下の記事を見て、アウトプットのための準備を最大限効率化するためのスクリプトを作成したのでその紹介です。
問題
この記事では「高速に雑に記事を書くフレームワーク」に沿ってアウトプットを行っていけば、時間をかけずいい感じのアウトプットができるというものでしたが、そもそも怠惰な私にはこのテンプレートを毎回用意するのが面倒だなと感じていました。
似た様なフレームワークを用意して、普段はNotionなどを使用していましたが、最近はいちいちNotionを開いてページ作成して、タグをつけてを毎回していると割と手間がかかってしまう課題があります。
解決方法
そこで今回は、ターミナル上からスクリプトをいい感じに実行して、テンプレートを任意のディレクトリに作成して、最速でアウトプットを行うための下地を作りました。(雑に作ったので不具合は後ほど修正)
#!/bin/bash
# デフォルトのディレクトリと日付の取得
DIRECTORY=~/blog/articles
DATE=$(date +%Y%m%d)
# ヘルプメッセージ
show_help() {
echo "使用方法: $0 [-t タイトル] [ファイル名]"
echo
echo "オプション:"
echo " -t タイトル ファイルのタイトルを指定"
echo " -h ヘルプメッセージを表示"
}
# オプション解析
while getopts ":t:h" opt; do
case $opt in
t)
TITLE=$OPTARG
;;
h)
show_help
exit 0
;;
\?)
echo "無効なオプション: -$OPTARG" >&2
show_help
exit 1
;;
:)
echo "オプション -$OPTARG には引数が必要です" >&2
show_help
exit 1
;;
esac
done
shift $((OPTIND - 1))
# ファイル名を設定(デフォルトは "blog_post")
if [ -n "$TITLE" ]; then
BASENAME=$TITLE
elif [ $# -eq 1 ]; then
show_help
exit 1
else
BASENAME="blog_post"
fi
FILENAME=$DATE-$BASENAME.md
# 保存先パス
FILEPATH=$DIRECTORY/$FILENAME
# 固定のコンテンツ
CONTENT="# はじめに
# 問題
# 解決方法
# おわりに
# 参考
"
# ディレクトリが存在しない場合、作成
if [ ! -d "$DIRECTORY" ]; then
mkdir -p "$DIRECTORY"
fi
# テキストをファイルに書き込む
echo "$CONTENT" > "$FILEPATH"
echo "ファイルが $FILEPATH に作成されました。"
# VSCodeでファイルを開く
code "$FILEPATH"
スクリプトを実行
sh ./create_blog_post.sh 任意のタイトル
ファイルが /fuga/hoge/blog/articles/20240620-任意のタイトル.md に作成されました。
おまけ
私は、aliasを貼っているので、より効率的にコマンドを実行できます。
# alias
alias blog='sh ~/blog/scripts/create_blog_post.sh'
# 実際に実行するコマンド
blog -t 任意のタイトル
おわりに
今回はサクッと雑に作りましたので、これから育てていこうと思います。
一応repositoryはこちらです。