前提
-
以下環境で使うことを前提にしているので誰しも恩恵を受けられる話ではないかも知れない
- Mac (というか open コマンドに依存した記述になっている)
- zsh
- GNU screen
-
以下は他のソフトウェアであっても十分代替可能なのではないか
- Typora
- GNU Core Utilities関連のコマンド
やりたいこと
- 日報を書きたいよね
- 毎日自然と、半ば強制的に当該日ファイルが開かれると書き込めるまで腰の重さがなくていいよね
- アプリ切り替えのショートカットでフォーカスが切り替えられるほうがいいよね
- ブラウザだとやだよね、ということ
考えたこと
以下を実現することはとても容易い
- markdownで日報を書きたい
- 書けば良い
- 好きなEditorで書きたい(開きたい)
- 開けば良い(Macには
open
がある)
- 開けば良い(Macには
使い勝手を考え以下を考慮するとちょっとめんどい
- 当該日ファイルが存在しないならばファイルを作成する
- すでに指定エディタで当該日ファイルを編集状態であれば何もしない
- 当該日ファイルが編集状態でなければ指定エディタでファイルを開く
markdown生成および上記を考慮したやつ
- 雑なスクリプト(おなじことをそれぞれ別のやり方でやっているように見えるが気にしないで……)
- ディレクトリ作る
- ファイル作る
- 指定エディタでファイルを開いていなければ
open
で開く
- なおDropboxの下に作ってるので、あなたがそうでなければ読み替えされたい
${HOME}/Dropbox/paht/to/hoge.sh
# !/bin/bash
function date_or_gdate()
{
which gdate >/dev/null 2>&1 && echo "gdate" || echo "date"
}
DATE=$(date_or_gdate)
PREFIX="${HOME}/Dropbox/LogDiary"
TODAY_DIR="$(${DATE} \+'%Y/%m')"
TODAY_MARKDOWN="$(${DATE} \+'%Y-%m-%d.md')"
TODAY_TITLE="$(${DATE} \+'%Y/%m/%d')"
MARKDOWN_EDITOR_PROC="Typora"
ls -d ${PREFIX}/${TODAY_DIR} >/dev/null 2>&1
res=${?}
if [ ! "${res}x" = "0x" ]; then
mkdir -p ${PREFIX}/${TODAY_DIR}
echo "Genarated Dir."
fi
ls -f ${PREFIX}/${TODAY_DIR}/${TODAY_MARKDOWN} >/dev/null 2>&1
res=${?}
if [ ! "${res}x" = "0x" ]; then
echo -e "# ${TODAY_TITLE}\n" >> ${PREFIX}/${TODAY_DIR}/${TODAY_MARKDOWN}
echo "Genarated Markdown."
open ${PREFIX}/${TODAY_DIR}/${TODAY_MARKDOWN}
fi
pgrep ${MARKDOWN_EDITOR_PROC} >/dev/null 2>&1 || open ${PREFIX}/${TODAY_DIR}/${TODAY_MARKDOWN}
echo ${PREFIX}/${TODAY_DIR}/${TODAY_MARKDOWN}
~/.zshrc
にhoge.shを実行するよう記述
~/.zshrc
# LifeLog
genlifelog="${HOME}/Dropbox/path/to/hoge.sh"
bash ${genlifelog}
上記記述を追加することで
screenで新しいWindowを生成するごとに hoge.sh
が実行されることになる。
pgrep
でprocess状況を確認しているので、すでに編集状態なら何もしないのでうれしい。
と思ったが
.oO(これたとえばTyporaで他のファイル編集してたら open 日報ファイル.md しないのでは……)