Macでシェルスクリプトをつくって、Zennの記事作成とプレビュー起動を爆速で実行
困っていたこと
以前、ZennをGitHubで管理できるようにしました。
これ自体は大変便利なのですが、毎回記事を書くたびに、ターミナルを開いて、「cdで移動して……記事を追加して……プレビューを起動して……」ともたもたしていました。
もう少し便利になるのでは!?
↓
そういえばWindowsだったらバッチファイルがつくれるよなあ!
↓
ってことはMacでもなんかそういうのあるんじゃないの!?ダブルクリックするだけで起動できちゃうとかさあ!
という流れです。
シェルスクリプトを作成
複数のコマンドをひとつのシェルスクリプトとしてまとめることができるそうです。
試しに下記をファイルにしました。
cd {zennフォルダーのパス}
npx zenn new:article
npx zenn preview
実行権限を付与
作成したシェルスクリプトに権限を付与しないと実行できないらしいです。
下記をターミナルで実行しました。
cd {シェルスクリプトが配置されているディレクトリ}
chmod +x {作成したシェルスクリプトのファイル名}
+xは、「実行(execute)」パーミッションを追加するという意味らしいです。
その他のパーミッション
- +r: 読み取り(read)パーミッションを追加。
- -r: 読み取り(read)パーミッションを削除。
- +w: 書き込み(write)パーミッションを追加。
- -w: 書き込み(write)パーミッションを削除。
- -x: 実行(execute)パーミッションを削除。
上記は数字を使って権限状態を表現することもできます。
また、パーミッションを与えるユーザーをしぼることもできます。
シェルスクリプトをターミナルから起動
フルパスをターミナルで実行したら、シェルスクリプトが起動されて、Zennの記事ファイルが新規作成されました。
しかし、フルパス長い。
コマンドっぽく、たとえば「cr」(Create)と入力するだけで実行してほしい……。
シェルスクリプトをコマンドで実行できるようにする方法を調査
下記の方法があります。
エイリアスを設定する
aliasというコマンドを使用し、シェルスクリプトのファイルに別名をつけます。別名をコマンドとして使用できます。
参考サイト
PATH環境変数に追加
Windowsでもよくやるやつですね。
ターミナルから設定できます。
参考サイト
シンボリックリンクを作成
他の方法と違い、元のファイルやフォルダーそのものとして扱えるように設定します。
参考サイト
エイリアスを設定
今回はエイリアスを設定する方法で進めてみます。
下記を実行します。
alias {コマンドにしたい文字列}='{シェルスクリプトのフルパス}'
記事作成+プレビューは、「cr」として登録しました。
また、プレビューだけ実行する「pr」も別で作成しました。
ちゃんと登録できているかどうかは、下記のコマンドで確認できます。
alias
現時点で登録されているエイリアスが一覧で表示されます。
うまく登録できていないと、「cr=''」のようになってしまうこともあるようです。
コマンドを実行
ターミナル上で「cr」「pr」などのコマンドを実行すると、問題なくシェルスクリプトが実行されました。
めちゃ便利だ。
と思ったのですが、これだけだと一時的な設定に過ぎず、ターミナルを起動し直すと設定が消えてしまいました。
恒久的な設定にするため、設定を追加します。
設定ファイルを開いてエイリアスを追加
エイリアスを追加するために、設定ファイルを開きます。
open -e ~/.bashrc # Bashを使用している場合
# または
open -e ~/.zshrc # Zshを使用している場合
BashとZshについて
どちらもシェルの種類。
シェルとは
簡単にいうと、コマンドで動くプログラムのこと。
シェルスクリプトはコマンドを並べたファイルのことであり、シェルとシェルスクリプトは別物なので注意。
Bash(バッシュ)とは
Bourne Again SHellの略。広く採用されている。
Zsh(ゼットシェル/ゼッシュ/ジーシェル)とは
Z SHellの略。Bashより機能が多い。
MacではバージョンによってデフォルトのシェルがBashかZshかに分かれているらしい。
ターミナルの画面上部にから確認できます。
自分の環境はZshでした。
開いた設定ファイルに下記を追加し、保存。
alias {コマンドにしたい文字列}='{シェルスクリプトのフルパス}'
設定を再読み込み
下記を実行。
source ~/.bashrc # Bashの場合
# または
source ~/.zshrc # Zshの場合
sourceはファイルに書かれたコマンドを現在のシェルで実行するコマンド。
コマンドを実行
無事crもprも起動できました。
また、ターミナルを一度閉じても、エイリアスは保持されていました。
まとめ
シェルスクリプト覚えたらいろいろと作業を効率化できそうだなと思いました。
また、権限についてはもう少し勉強したほうがよいかもなと思いました。
変更履歴
2023/08/31 「altキー」を「alt(option)キー」に修正しました。
Discussion