久しぶりのブログになります。澤井です。
私は、入社前はCLIを使う機会は、あまりありませんでした。最近になって、業務でCLIを使う機会が増えました。そこで、今回は実際に使ってみて、便利だと感じたCLIツールをいくつか紹介したいと思います。
紹介するツール
今回は個々のツールの概要を紹介するのが目的ですので、インストールや使い方は各ツールのドキュメントを参照ください。
peco
pecoは、入力をインクリメントサーチする機能を提供します。
簡単な例としてls -al | pecoで、ディレクトリ内をインクリメントサーチする例を紹介します。

他の例としては、grepやfindなどの結果をパイプを使って、pecoへ入力として渡して、インクリメントサーチで絞り込むといった使い方などが浮かびます。
機能はシンプルですが、色々な使い方が考えられると思います。 なかでも個人的に、とても便利だと感じている使い方を1つ紹介します。
コマンド履歴をサーチ
コマンド履歴はMacならctrl + rで検索できますが、pecoを使うことで、より便利に履歴を検索できるようになります。

上記機能を使うには、シェルの設定ファイルに関数を定義する必要があります。
本記事では、具体的なコードは紹介しませんが、peco コマンド履歴などで検索すれば、関数の実例を紹介している記事が見つかると思います。
direnv
direnvは、あるディレクトリに設定ファイル.envrcを作成すると、そのディレクトリ配下にcdコマンドで移動したタイミングで、環境変数に対して変更を加えることが出来ます。私は、おもにPHP・Nodeのバージョンを切り替えるため環境変数$PATHの値を変更し使っています。
PHP 5.6がデフォルトの環境において、dirAディレクトリはPHP 7.1、dirBディレクトリはPHP 7.2を指定した例を紹介します。
dirAディレクトリ、dirBディレクトリの.envrcは、以下のように設定しました。
# dirA
PATH_add /usr/local/opt/php@7.1/bin
PATH_add /usr/local/opt/php@7.1/sbin
# dirB
PATH_add /usr/local/opt/php@7.2/bin
PATH_add /usr/local/opt/php@7.2/sbin
dirAディレクトリ・dirBディレクトリに、.envrcで指定したPHPのバージョンが設定されました。

設定ファイル1つでバージョンを切り替えることができるのはとても便利です。
PsySH
PHPの高機能なREPLです。PHPのREPLは他にもありますが、以下の点が気に入っています。
- 補完が優秀
doc 関数名でビルトイン関数のマニュアルを表示
特に個人的には、ビルトイン関数のマニュアルを簡単に表示する機能は、便利だと感じています。

tmux
tmuxは端末多重化ソフトウェアと呼ばれるソフトです。
私は使い始めたばかりですが、ウィンドウの作成や画面を分割する機能を使うだけでも、作業効率が高まりました。

私の使い方をいくつか紹介します。
- 複数のプロジェクトごとにウィンドウを作成して、ショートカットキーで切り替え
- 画面を左右に分割して左側はサーバー上で作業をして、右側は左側で接続しているサーバーから
scpなどを実行 - 画面を左右に分割して左側はサーバーを立ち上げておいて、右側で作業
さいごに
紹介したツールを使うことで、CLIでの作業効率が高まりました。
上記ツールを使う前は、「この処理を短縮したい」・「思った結果を得るのに複雑な処理が必要」といったストレスもありましたが、今回紹介したツール使うことでストレスが少なくなりました。
紹介したいツールは他にもありますが、今回はよく使っている4つのツールを紹介しました。
今後は役立つCLIツールを自分でも作れたら良いなと思っています。