働き方

【Macユーザー向け】zshのエイリアスと関数で開発を効率化する方法

【Macユーザー向け】zshのエイリアスと関数で開発を効率化する方法

「いつも同じコマンドを打つのが面倒くさいな〜」
「コマンドを打ち間違えて大事故を起こしてしまった・・・」
「毎回コマンドをググって時間を無駄にしている気がする」

上記のような悩みを抱える方向けの記事です。

こんにちは、株式会社Playground Webシステム開発部の稲垣です!

macOSのターミナルからコマンドを実行する際に、「エイリアス」と「関数」を使うことで以下のようなメリットを得られます。

エイリアス&関数を使うメリット
  • コマンドを覚える手間が少なくなる
  • コマンドを打つ時間を短縮できる
  • コマンドの打ち間違いを減らせる

macOS Catalinaから標準シェルがzshになりましたよね。

bashから移行する方も多いと思うので、zshのtipsをまとめていきます。

zshエイリアスについて

zshのプラグインであるoh-my-zshをインストールすると、gitなどのエイリアスがいい感じに設定されます。

とはいえ

  • 一連のコマンドを組み合わせた関数も欲しい。
  • 自分にとってわかりやすいエイリアスを作りたい。

なので~/.zshrcを編集して自分好みのエイリアスや関数を作成しましょう。

zshエイリアス設定方法

zshのソースファイルである~/.zshrcの書き方は、bashとはちょっと異なります。

例えば、エイリアス名とコマンドをつなぐイコールの間に、半角スペースが入ってはいけない、などです。

  1. エイリアスの設定方法
  2. 関数の設定方法

を具体例と共に解説します。

シンプルなzshエイリアスを設定する方法

単純なエイリアスの設定例は以下です。

alias gitls="alias | grep git"

aliasと書いた後に半角スペースを開けて、短縮系のコマンドと実際に実行されるコマンドを書きます。

zshで対話型の関数を設定する方法

対話型の関数を作るときはechoreadを使います。

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種類のコマンドたちのエイリアスと関数をお見せします。

  1. Firebase
  2. npm
  3. 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分の短縮です。

その積み重ねが、ボディーブローのように開発効率に効いてくると思います。

ぜひ活用してください。

参考にしたサイトは以下です。

ABOUT ME
稲垣 貴映
サーバーエンジニア兼Webフロントエンジニア。 新卒で独立系SIerに入社後、金融系システム基盤の構築・運用を3年間経験。 プログラミングを独学していた頃に、CEOの馬谷が開講していたSwiftスクールに通い、2019年9月に入社。 趣味はブラジル音楽の演奏。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA