ハイパーマッスルエンジニア

Vim、ShellScriptについてよく書く

Webエンジニアの作業効率を1.3倍ぐらいにするワンライナー

この記事は今すぐalias登録すべきワンライナー by ゆめみ① Advent Calendar 2018の25日目の記事です。

ワンライナーでサクッと作業完了できる人かっこいいですよね。

"今すぐ登録すべきalias"ということで普段業務中にでごりごりと使っているワンライナーをご紹介。

とりあえず自分がWebエンジニアなのでこのタイトルにしたけど、特にWeb系エンジニアに限った話ではない。(ただMac限定が多々あるけど許して)

ローカルサーバー立ち上げ

さくっとビルドインサーバー立ち上げたい時ありますよね。

alias phpS='php -S localhost:9000'

Googleの検索

ソース読んでて知らない気になる関数出てきた時、コピペしていちいちブラウザから検索みたいなことはしてませんよね。(本当はググらなくてもわかるような男になりたい)

alias goo='open https://www.google.co.jp/search\?q\=`pbpaste`'

f:id:rasukarusan:20181224232148g:plain
gooコマンド

コピペしたものじゃなくてブラウザに打ち込むように検索したいという方はこちら。

alias goo='open https://www.google.co.jp/search\?q\=`read s;echo $s`'

f:id:rasukarusan:20181222211644g:plain

ワンライナーじゃないのでごめんなさいですが、普段はこっちの関数にした版を使ってます。

alias goo='searchByGoogle'
function searchByGoogle() {
    # 第一引数がない場合はpbpasteの中身を検索単語とする
    [ -z "$1" ] && searchWord=`pbpaste` || searchWord=$1
    open https://www.google.co.jp/search\?q\=$searchWord
}

jsを実行

手軽にjsを実行したいとき

alias js='osascript -l JavaScript'

# js test.js

一番直近に変更があったファイルをlessする

これは結構気に入ってる。
カレントディレクトリ内の最新のファイルをlessでちら見できる。本番サーバーに入って調査する時重宝マン。
今日のアクセスログ見るときとかに便利。

alias late='less $(echo `ls -t | head -n 1`)'

f:id:rasukarusan:20181222201703g:plain
lateコマンド

lessをなくして単純にファイル名だけ取得したいエイリアスも登録してる。

alias fin='echo `ls -t | head -n 1`'

f:id:rasukarusan:20181224232257g:plain

modifiedのファイルを全てVimのタブで開く

vimのタブ機能便利ですよね。 編集してたファイルをとりあえず一気に開きたい時に便利です。「s」は複数形のsです。

alias vims='vim -p `git diff --name-only`'

f:id:rasukarusan:20181222201849g:plain
vimsコマンド

ブラウザからコピーした時など、プレーンテキストに戻したい時に使用

GmailやYahooでコピペしてそのまま貼り付けるとリッチテキストになるのでそれを回避。

alias pcopy='pbpaste | pbcopy'

空行を削除

こんぐらい覚えておけよって感じですが打つのもしんどいので登録してる。

alias demp='sed "/^$/d"'

さくっとwifiをOFF/ONする

なんか通信の調子が悪いなって時、まず真っ先にwifiを切りますよね。ええ。

alias wifiConnect='networksetup -setairportpower en0 off && networksetup -setairportpower en0 on'

Git系

git系はたぶん皆さん色々設定してますよね。よく使うやつだけ載せておきます。

# 空白等の差分は無視して表示
alias gd='git diff -b'

# 現在のブランチをoriginにpushする
alias po='git push origin $(git branch | grep "*" | sed -e "s/^\*\s*//g")'

# 現在のブランチをpullする
alias gpl='git pull --rebase origin $(git branch | grep "*" | sed -e "s/^\*\s*//g")'

# git checkout branchをfzfで選択
alias co='git checkout $(git branch -a | tr -d " " |fzf --height 100% --prompt "CHECKOUT BRANCH>" --preview "git log --color=always {}" | head -n 1 | sed -e "s/^\*\s*//g" | perl -pe "s/remotes\/origin\///g")'

# 全てのファイルをgit checkout
alias gca='git checkout $(git status -s | grep -v \? |  grep -E "^.M" | perl -pe "s/(?<=^.{0}).{3}//g")'

特にcoはもう手放せないかなあ。git checkout ブランチ名をfzfでサクッと実行するやつなんだけど、普通にgit checkout XXXと打つのが考えられないくらいには楽。

f:id:rasukarusan:20181224233611g:plain
coコマンド

終わり

改めてzshrcを見直してみるとaliasに設定してあるのはあんまりなくて、大体関数にしちゃっていた。

ワンライナーじゃなくて「お前らが考えるハイパー便利なshellスクリプト教えろ」とかもあったら参加したい。
BitbucketとかRedmineなど実際の業務だと連携するツールがあると思うので、他の人がやっている楽ちん連携コマンドとか見てみたい。

いやあでもやっぱり他の人が設定してるalias見るの楽しい。来年もぜひこのアドベントカレンダーやってほしい。