突撃となりのエイリアス(Zsh, Git編)

こんにちは。 もうすぐお花見の時期*1ですね。Misoca開発チームのtaiki-tです。

開発チームに聞いたところ、人によってエイリアスの設定に違いがあったので、比べてみました。 対象はZshとGitの設定です。

ちなみに、この間インターンの方の送別会と打ち上げ的なものがあって楽しかったです。

f:id:taiki-t:20160310183822j:plain

写真: 「commit -m '開発チームと愉快な仲間たちの巻'」

Zsh

ls

たかがls されどlslsエイリアスにも様々なものがあります。 よく使うオプションと合わせてエイリアスにしているようです。

alias la='ls -a' # dot(.)で始まるディレクトリ、ファイルも表示
alias la='ls -al' # -a オプションと -l オプションの組み合わせ
alias ll='ls -lav' 
alias ll='ls -l' # ファイルの詳細も表示
alias lla='ls -la' # -a オプションと -l オプションの組み合わせ
alias ls='ls -F' # ディレクトリ名の末尾にはスラッシュ、シンボリックリンクの末尾には@というように種類ごとの表示をつけてくれる
alias ls='ls -v -G' # Gはアウトプットに色を付けてくれる 

同じコマンドでも人によってエイリアスが異なっていて面白いです。

また、上記にgrepを組み合わせた

alias llag='ls -la | grep'

というようなエイリアスもありました。

ディレクトリ移動

alias cdprj='cd ~/Documents/prj'
alias cdwork='cd ~/Documents/work'
alias pd="popd"

よく使うディレクトリにエイリアスを張ると便利そうです。 popd, pushdは知らなかったので使ってみようと思います。 知らなかったコマンドを知れるのも、隣人に突撃してみる醍醐味です。

Railsに特化したエイリアス

MisocaはRailsで開発されています。 なのでRails開発でよく使うコマンドのエイリアスもあります。

bundle exec

alias b='bundle exec'
alias be='bundle exec'

b, be等でエイリアスされています。僕はbeを使っていましたが 、教えてもらったあとにbに変えました。なんと入力する文字数を50%も削減できました。

console, serverの起動、テストの実行時など

alias c='bundle exec rails c'
alias cs='bundle exec rails c -s'

alias s='bundle exec rails s'
alias sr='bundle exec spring rspec'

alias rt='RAILS_ENV=test'
alias rtsr='RAILS_ENV=test spring rspec'
alias rd='RAILS_ENV=development bundle exec'

alias npm-exec='PATH=$(npm bin):$PATH'
alias disable-rspec-retry='export RSPEC_RETRY_RETRY_COUNT=1'

rspec retryの設定は失敗しそうなspecを実行したい場合に便利です。

環境変数RSPEC_RETRY_RETRY_COUNT=1 と設定しておくことにより、一時的にリトライを抑制することができます。詳しくは下記の記事に載っています。

rspec_retry に Pull Request を送ってマージしてもらえた - Misoca開発ブログ

gitと組み合わせたコマンドのエイリアス

Misocaではrubocop、haml-lintを導入しています。 lintに引っかかるとCIを通らないので、gitとrubocopを組み合わせたコマンドのエイリアスも人気です。 ここらへんは、gitのサブコマンドにしてる人もいます。

alias gcr='git status --short | cut -c 3- | xargs rubocop -a && git commit'
alias hamco='git status -s | cut -c 3- | grep .haml | xargs haml-lint'
alias rspeco='git status -s | cut -c 3- | grep '\''_spec.rb$'\'' | xargs rspec'
alias ruboco='git status -s | cut -c 3- | grep '\''\.rb$'\'' | xargs rubocop -a'

hamco, rspecoという名前に可愛さがあります。名付けた本人曰く「かわいいは正義」だそうです。なるほど。 ちなみにそのメンバーの名字は「saco」です。

hamcoは、git status -sで変更したファイル一覧を取得し、ファイル名にhamlを含むのものを選んでhaml-lintをかけるものです。

typo対策

alias eamcs='emacs'
alias まけ='make'
alias おまけ='omake'
alias 。。='..'
alias だて='date'

日本語入力のまま打ち込んでもそのまま実行できると便利ですね。

その他

その他、個々人の開発してきた経歴や環境が反映されるエイリアスがあって大変興味深かったです。

alias 644='chmod 644'
alias 755='chmod 755'
alias 777='chmod 777'

alias sudo='sudo '
alias untar='tar xzvf'

alias setlangja='export LANG=ja_JP.UTF-8'
alias setlangc='export LANG=C'

sudo='sudo 'については下記リンク先の記事が詳しいです。

なんで末尾にスペース入れるだけで sudo で alias を有効にできるわけ? « blog.hekt.org

また、まったくエイリアスを設定していないというメンバーもいました。

Git編

鉄板エイリアス

co = checkout

基本コマンド

1文字でエイリアスする派と2文字でエイリアスする派がいます。

f = fetch 
p = push

commitエイリアスは割といろいろありました。

c = commit
ci = commit
ci = commit -a

ところで、この記事を書いていたところ 「coとciはsubversion由来なんですよね`」という知見を得られて「へぇー」となりました。

便利なエイリアス

delete-merged-branches = !git branch --merged | grep -v \\* | xargs -I % git branch -d %
hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
log-all = log --graph --all --color --pretty='%x09%h %cn%x09%s %Cred%d%Creset'

histは下記のように履歴をグラフィカルに、綺麗にみれて便利です。

f:id:taiki-t:20160310183503p:plain

その他

gitconfigの設定は下記の記事を参考にしているという情報を得られました。 大変参考になりました。

.gitconfigに設定してるaliasなどのまとめ - ( ꒪⌓꒪) ゆるよろ日記

まとめ

ほんの出来心でエイリアスをとなりの人たちに聞いたのですが、結果的に知らないオプションや知らないコマンドを知れて良かったです。

今度は大きなしゃもじならぬ大きなターミナルをもって皆さんのところに突撃したいなと思います。

*1:tech.misoca.jp 今年はどんなドラマが生まれるのでしょうか。