僕がよく使うコマンドTOP5

engineer command terminal

ふと、「自分は一体、どんなコマンドをよく使うのだろう」と思ったので、なんとなくランキングにしてみました。
ちなみにランキングを作った時のコマンドは以下。

cat .zsh_history | awk '{print $1}' | sort | uniq -c | sort -nr

一応解説。

cat .zsh_history

私は、zshを使っているのでコマンドの履歴は.zsh_historyに溜まっています。
もしかしたら人によっては、HISTFILEの場所を変えていると思うので全員同じとは限りません。

catはファイルを閲覧する際に使うコマンド。
閲覧結果を|で次のコマンドに渡している。

awk ‘{print $1}’

awkは任意の文字列で区切って指定したフィールドの値だけに文字列を加工してくれます。
上記の例だと、任意の文字を指定していないので空白を区切りとして、第一フィールドを取ってくれます。

【awk前】
git branch
cd ./demo_dir
git status
mkdir hoge
git add .

【awk後】
git
cd
git
mkdir
git

sort

その名のとおり、ソートします。
基本、オプション無しだと昇順

【sort前】
git
cd
git
mkdir
git

【sort後】
cd
git
git
git
mkdir

uniq -c

uniqは重複を省きます。
-cオプションをつけることでカウントまでしてくれます。

【uniq -c前】
cd
git
git
git
mkdir

【uniq -c後】
1 cd
3 git
1 mkdir

sort -nr

最後にもう1回ソート!
けど今回は-rnオプション付きです。
r => 降順に並び替え
n => 数字を数値として並べる

nオプションの補足をすると、数字は字としてソートをすると大小では並びません。
たとえば「111、12、11、100」にオプション無しでソートすると 「100、11、111、12」のようになります。

身近な例だと、ファイルやフォルダー名に「00_〇〇」とか「01_〇〇」を付ける方がいると思います。
一桁にすると「1_〇〇」「2_〇〇」・・・「9_〇〇」まできれいに並びます。
ところが「10_〇〇」は1と2の間に割り込んで来ると思います。
そのルールと同じならびになるので、数値の大小で並び替えるときは-nオプションが必須です。

【sort -nr前】
1 cd
3 git
1 mkdir

【sort -nr後】
3 git
1 mkdir
1 cd

ランキングを作ったワンライナーコマンドの解説はここまでです。
※肝心のランキングまでにまあまあなボリュームになってしまった。。


肝心のランキング

それでは肝心のランキングを発表します!

第1位:git

不動のgitコマンドでした。
ちなみにgitコマンドだけだとcommitcheckoutpushあたりが多かったです。

第2位:cd

ディレクトリ移動で使うコマンドです。
私は、基本的にデスクトップ画面にファイルを置かない人なので、ホームディレクトリ以下にきれいにフォルダー分けしています。
ファイルにアクセスするときは、cd ~/target_dir/まで移動するか、open ~/target_dirとしてFinderで開きます。
ムダに几帳面でキレイ好きですw
※潔癖ではありません。

第3位:brew

みんな大好きHomebrewです。
環境整えたり、ツール入れたりする時に大変重宝します。
brew doctorとかupdateupgrade系をよく打ちます。

第4位:rm

ファイルやフォルダーを消すやつです。
ただし、ちょっといじっています。
普通rmコマンドって実行すると取り返しのつかないものですが、私の場合、一度ゴミ箱へ捨てるような仕様にしています。
具体的にはrmにエイリアスを設定してtrash-cliが動くようにしています。
前に事故って泣いたので予防的な感じでそうしています。
rmで消したものは一時的にゴミ箱に貯まるので、rm-emptyで空にできます。
また、誤ってrmしたものはrm-reと打つことで削除したファイルがリスト化されて出力されるので、該当のファイルを選択することで元あった場所へリストアできます。
trash-cliについてはQiitaとか記事がたくさんあるのでググってみてください。
※ちなみに事故った内容は恥ずかしすぎて書きたくありませんww

第5位:be

なぞのコマンドbe
これは私がエイリアス設定しているやつです。
こいつの実態はbundle execです。
bundle exec rails sとかなげーって思ったので設定しました。
be rails sとかbe rails cなどいい感じで使えます。
※最近はDocker使うからあまり出番なくなってきましたが。


いかがだったでしょうか。

次はzshの設定とか晒してみようかな。