1文字aliasをa-z全部登録してみた


コマンドラインを使っているとよく使うコマンドをaliasに登録することがあると思います。
今回は厳選した26コマンドをa-zまで1文字aliasにを定義してみました。
ちなみにPCはMac, シェルはzshを使っています。

よく使うコマンドを確認する

せっかく1文字のaliasにするならよく使っているコマンドがいいですよね。
ということで、まずはhistoryを使ってよく使っているコマンドを見てみます。

# コマンドの最初の1単語で集計
history 1 | awk '{print $2}' | sort | uniq -c | sort -nr

# コマンドの最初の2単語で集計
history 1 | awk '{print $2,$3}' | sort | uniq -c | sort -nr

1単語で集計した結果

左の数字は出現数です。環境固有のコマンドは省いて、いくつか抜粋してみました。
git系コマンドなどすでにaliasを作っていたものは元のコマンドを#コメントで追記しています。
vim使いなのでviが一位でした!あとgitコマンドとdockerコマンドが多いですね。

4535 vi
3167 gs # git status
2331 dce # docker-compose exec
2182 git
1702 gg # git grep
1532 gd # git diff
1243 gb # git branch
 913 cd
 858 ls
 691 gp # git push
 505 docker-compose
 492 dcb # docker-compose up --build -d
 433 dls # docker containar ls
 241 gc # git checkout
 229 rm
 203 tail
 202 docker
 190 cp
 169 yarn
 143 ch # chrome履歴のインクリメンタルサーチ(https://qiita.com/ham0215/items/cf9a8a0a8aec33158925)
 117 pwd
 105 mv
  92 mysql
  77 mkdir
  75 ssh
  60 history
  55 brew
  51 open
  49 cat

2単語で集計した結果

1単語のものは除いて抜粋してみました。
やはりgitやdockerコマンドが多いですね。
vi系は2単語目がファイル名でばらけるので1位からは落ちましたが、主にRailsで開発しているのでGemfileなどRails特有のファイル編集はランクインしています。

761 git commit
397 git pull
322 git checkout
285 vi Gemfile
261 git add
224 ls -l
219 vi docker-compose.yml
197 tail -f
175 cp -p
170 git branch
155 vi Dockerfile
117 docker-compose run
108 docker-compose down
 68 vi README.md
 63 rm -rf
 54 vi package.json
 53 docker image
 45 yarn start
 45 git fetch
 41 docker container
 40 docker-compose restart
 36 open .

alias登録

上記のhistory結果を参考にa-zのaliasを登録してみました。
割り当てる1文字のアルファベットから連想できるようにコマンドを紐付けるのは無理があるので、キーボードの位置で似た機能をまとめる方針にしてみました。

また、1文字だと誤作動してしまうこともあるのでrm -rfのような間違って実行したら危険なコマンドは避けました。

キーボードレイアウト

キーボードのレイアウトに当てはめると下記の通りです。

いつでも参照できるようにgithub.ioにページを作りました。
https://ham0215.github.io/alias.html

左2列は割り当て文字との関連は無視してdocker関連のコマンドを固めました。
残りは可能な限り1文字から連想できるように配置しつつ、git関連のコマンドは割り当てが難しかったので右手に固めました。

各コマンドの説明は次の章に記載します。

各コマンドの説明

a

docker-compose up --build -d

docker-composeをビルドしてバックグラウンドで起動するコマンド
PC起動後、開発を始めるときによく使います

b

git checkout -b

新しいブランチを作るときに使うコマンド
(switchを使えという声が聞こえてきそうですが無視しよう)

c

cp -p

ファイルコピー
パーミッションなどを保持する-pは癖でいつもつけています。

d

git diff

コミットの前にいつも実行する使用頻度が高いコマンドの一つ

e

ch

下記のqiitaに投稿したchromeの履歴をインクリメンタルサーチして開くコマンド
https://qiita.com/ham0215/items/cf9a8a0a8aec33158925

f

alias f=find . -name

カレントディレクトリ配下のファイルを検索します

$ f application*
./app/mailers/application_mailer.rb
./app/models/application_record.rb
./app/javascript/packs/application.js
./app/javascript/stylesheets/application.css
./app/jobs/application_job.rb
./app/controllers/application_controller.rb
./app/views/layouts/application.html.erb
./app/helpers/application_helper.rb
./app/channels/application_cable
./config/application.rb
./config/initializers/application_controller_renderer.rb

g

git grep

これも使用頻度が高いコマンドの一つ

h

下記のファンクションを割り当てました。

function gc {
  local c="$(git branch | peco | sed -e 's/* //g' | awk '{print $1}')"
  if [ -n "$c" ]; then
    git checkout $c
  fi
}

ローカルブランチをインクリメンタルサーチして、選択したブランチにスイッチするコマンドです
(switchを使えという声が...)

i

git branch -d

ブランチを削除するときに使います

j

git status

git関連コマンドで一番実行するコマンド
無意識にstatus確認してる

k

git pull

git関連はよく使うコマンドが多いですね
featureをマージした後にマージ先ブランチにスイッチして実行するケースが多い

l

ls -ltr

昔からの癖でlsは-ltrを付けて実行することが多い
タイムスタンプが新しいものがリストの下に来るのでコマンドラインでは見やすいです

m

git commit

もはや説明不要

n

git add

もはや説明不要

o

open .

カレントディレクトリをFinderで開きたいときに使っています

p

下記のファンクションを割り当てました。

function gp {
  local c="$(git branch | grep '*' | awk '{print $2}')"
  if [ -n "$c" ]; then
    git push origin $c
  fi
}

カレントブランチと同名のリモートブランチにpushするコマンド

q

docker-compose logs -f

各コンテナのログを垂れ流すコマンド

r

r

aliasを設定していません
1文字aliasを設定しようと思ったときに初めて知ったコマンドだが、便利そうだったので残しています
rは直前のコマンドを実行するコマンドです
便利だと思った点は、ただ直前のコマンドを実行するだけではなく、引数に渡したコマンドの中で直前に実行したコマンドを実行してくれるところです
言葉だと説明しづらいですが下記のように動きます

$ history
vi Gemfile
vi config/routes.rb
ls

$ r
=> lsが実行される
$ r vi
=> vi config/routes.rbが実行される 

s

docker-compose restart

コンテナの再起動
たまに使います

t

tail -f

ログ垂れ流すときに使うよね

u

git branch

カレントブランチの確認も無駄によくします

v

下記のファンクションを割り当てました。

function gvi {
  vi $(git grep -n $@ | peco --query "$LBUFFER" | awk -F : '{print "-c " $2 " " $1}')
}

v keywordのようにキーワードを指定して使います
keywordでgit grepした結果をインクリメンタルサーチして、選択したファイルをvimで開きます

w

docker container ls

起動中のコンテナ一覧
コンテナ起動はよく失敗するので起動確認でよく使います
ちなみにwはログインしているユーザーと実行中のプロセスを表示するというコマンドが割り当てられているが、ローカルマシンで使うことはまずないので上書きすることにしました

x

docker-compose exec

コンテナ内でコマンド実行
dockerで開発していると何を実行するにも必要になるコマンド

y

open https://ham0215.github.io/alias.html

キーボードレイアウトに載せた1文字aliasの割り当てを書いたページを開くコマンド
割り当てを忘れたときのヘルプ

z

docker-compose down

コンテナ、使い終わったら終了させましょう(ローカルだと放置しがち)

最後に

最後まで読んでいただきありがとうございます。
早速自分の環境に適用していますが1文字aliasに手が慣れるまでしばらくかかりそうです。。。が、慣れればタイプ量がかなり減るはずなのでしばらくはこれでやってみようと思います。
今後、使うコマンドが変わってくると思うので定期的に見直すのが良さそうですね。