Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What is going on with this article?
@torahack

【効率化】zshエイリアスと関数を晒す

More than 1 year has passed since last update.

TL;DR

以前、村上さん(@ryuta69 )の記事を読んで、速攻で導入したエイリアス一覧を晒します。
【私的最強alias32選】忘れやすいコマンドは、『辞書化&ショートカット化』しちゃえばいい

こんな人におすすめです。

  • コマンドを覚えられない
  • コマンド打つのめんどい
  • コマンドの打ち間違いが怖い

zshについて

macOSのCatalinaからzshが標準のシェルになりましたね。
bashから移行する方も多いと思うので、zshのtipsをまとめます。

zshエイリアスについて

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

とはいえ

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

なので~/.zshrcをいじってオレオレエイリアスを設定しました。

zshエイリアス設定方法

bashとは記法がちょっと異なります。
例えば、エイリアス名とコマンドをつなぐイコールの間に、半角スペースが入ってはいけない、とか。

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

~/.zshrc
alias gitls="alias | grep git"

対話型の関数を作るときは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種類

  • 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は作業の流れの中で一連のコマンドを実行しますよね。
それを全て繋げて関数化しています。

「次はなんのコマンドだっけ...」といちいち意識する必要もありません。
うっかりおかしなコマンドを実行する事故も無くなりますね。

まとめ

シェルを使いこなすと作業効率が段違いですよ。
ぜひ活用してください。

13
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
torahack
インフラエンジニア3年→Webフロントエンジニア1年目 Python(スクレイピング, Flask, Django) Javascript(Node.js/React) AWS(Lambda, DynamoDB, API Gatewayなどサーバーレス) Firebase全般

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
13
Help us understand the problem. What is going on with this article?