「いつも同じコマンドを打つのが面倒くさいな〜」
「コマンドを打ち間違えて大事故を起こしてしまった・・・」
「毎回コマンドをググって時間を無駄にしている気がする」
上記のような悩みを抱える方向けの記事です。
こんにちは、株式会社Playground Webシステム開発部の稲垣です!
macOSのターミナルからコマンドを実行する際に、「エイリアス」と「関数」を使うことで以下のようなメリットを得られます。
- コマンドを覚える手間が少なくなる
- コマンドを打つ時間を短縮できる
- コマンドの打ち間違いを減らせる
macOS Catalinaから標準シェルがzshになりましたよね。
bashから移行する方も多いと思うので、zshのtipsをまとめていきます。
目次
zshエイリアスについて
zshのプラグインであるoh-my-zshをインストールすると、gitなどのエイリアスがいい感じに設定されます。
とはいえ
- 一連のコマンドを組み合わせた関数も欲しい。
- 自分にとってわかりやすいエイリアスを作りたい。
なので~/.zshrc
を編集して自分好みのエイリアスや関数を作成しましょう。
zshエイリアス設定方法
zshのソースファイルである~/.zshrc
の書き方は、bashとはちょっと異なります。
例えば、エイリアス名とコマンドをつなぐイコールの間に、半角スペースが入ってはいけない、などです。
- エイリアスの設定方法
- 関数の設定方法
を具体例と共に解説します。
シンプルなzshエイリアスを設定する方法
単純なエイリアスの設定例は以下です。
alias gitls="alias | grep git"
aliasと書いた後に半角スペースを開けて、短縮系のコマンドと実際に実行されるコマンドを書きます。
zshで対話型の関数を設定する方法
対話型の関数を作るときはecho
とread
を使います。
hoge()という関数を作るときの文法は以下の通りです。
~/.zshrc
hoge () {
echo 'Type your favorite food' && read food;
echo 'Your favorite food is '"${food}"', right?'
}
read
で入力した値がfood
という変数に格納されます。
変数を使いたいときは${変数名}
という形で呼び出せます。
hoge()のコンソールでの実行結果は以下のようになります。
-> % hoge
Type your favorite food // ここでcurryとタイプする
curry
Your favorite food is curry, right?
【公開】よく使うzshエイリアスの例
私が現在の業務でよく使う以下の3種類のコマンドたちのエイリアスと関数をお見せします。
- Firebase
- npm
- git
~/.zshrc
# zsh aliases
alias vz="vim ~/.zshrc"
alias sz="source ~/.zshrc"
alias rmf="rm -rf"
# Firebase aliases
alias fl="firebase login"
alias fi="firebase init"
alias fs="sudo firebase serve"
alias fd="firebase deploy"
alias fdf="firebase deploy --only functions"
# npm commands
alias nig="npm install -g"
alias nis="npm install --save"
alias nui="npm uninstall"
alias nuis="npm uninstall --save"
alias nls="npm ls"
alias niy="npm init -y"
alias nid="npm install --save-dev"
nvv() { npm view $1 version }
# Show all git alias commands
alias gitls="alias | grep git"
alias gc="git checkout"
alias gcd="git checkout develop"
alias gpd="git push origin develop"
alias gpm="git push origin master"
alias grm="git rm --cached"
alias gdn="git diff --name-only"
alias grh="git reset --hard HEAD^"
gmpd () {
git pull origin develop
echo "Type branche name to merge : " && read branch;
git merge ${branch};
git status;
echo "Is it okay to continue?" && read;
git push origin develop
}
# Push all changes to current branch
gcom () {
git add . && git status
echo "Type commit comment" && read comment;
git commit -m ${comment} && git push origin HEAD
}
mygcre () {
git init && git add . && git status && git commit -m "First commit"
echo "Type repository name: " && read name;
echo "Type repository description: " && read description;
curl -u YOURID:YOURPASSWORD https://api.github.com/user/repos -d '{"name":"'"${name}"'","description":"'"${description}"'","private":true}'
git remote add origin https://github.com/deatiger/${name}.git
git checkout -b develop;
git push -u origin develop;
}
個人的によく使うのはgcom()やmygcre()といった関数です。
gitは作業の流れの中で一連のコマンドを実行しますよね。
それを全て繋げて関数化しています。
「次はなんのコマンドだっけ…」といちいち意識する必要もありません。
うっかりおかしなコマンドを実行する事故も無くなりますね。
zshエイリアスと関数のまとめ
シェルを使いこなすと開発効率が段違いになりますよ。
エイリアスを設定することで1度に短縮できる時間が1秒だとしても、1日に60回実行するコマンドなら1分の短縮です。
その積み重ねが、ボディーブローのように開発効率に効いてくると思います。
ぜひ活用してください。
参考にしたサイトは以下です。
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン