cd, ls, find, grepコマンドではなくz, exa, fd, rgを使うべし

cd, ls, find, grepとは

それぞれ以下の操作を行うためのコマンド。

コマンド用途
cdカレントディレクトリの位置を変更する
lsファイルを一覧を表示する
find指定した条件に一致するファイル名を検索
grep指定したパターンを検索して一致するファイル名と行を表示

Macのターミナルなどを使用している人なら知らない人は少ないが、使い勝手が悪いので積極的に使用するのは好ましくない。

z, exa, fd, rgとは

cd, ls, find, grepをより使いやすくしたオープンソースのコマンドラインツール。

例えばgrepの場合、カレントディレクトリ内で「Helvetica」の文字列が含まれるファイルと行番号を検索して表示するには以下のようになる。

grep -nr Helvetica

-nrオプションが必要で一致部分の文字列の色が変わらないなど、わかりにくい仕様になっている。

対してrgコマンドであれば以下のように「rg 検索文字列」というシンプルな形で検索でき、一致部分のテキストの色が変わるのでわかりやすい。

rg Helvetica
grepコマンドとrgコマンドを実行したサンプル

z, exa, fd, rgのインストール方法

macOSであれば以下のbrewコマンドを使用すれば簡単に4つをインストールできる。

brew install zoxide exa fd ripgrep

zoxideをzコマンドで実行するにはBash(~/.bashrc)かZsh(~/.zshrc)にevalで以下を追記する。

# Bash
eval "$(zoxide init bash)"

# Zsh
eval "$(zoxide init zsh)"

zの使い方

zはcdの上位互換のようなコマンド。

cdと同じく「z [ディレクトリ]」でカレントディレクトリから移動できる。

これだけだとcdと変わらないが、zコマンドは過去に移動したディレクトリにフルパスでなくても移動できる。

例えば「z foo/bar/baz」で移動して「z -」で戻り、またbazディレクトリに移動したい場合は「z baz」で移動できる。

z foo/bar/baz
z -
z baz

あとzコマンドだと「/」の代わりに半角スペースを使用しても移動できる。

z foo bar baz

exaの使い方

exaはlsの上位互換のようなコマンド。

「exa」やオプション付きの「exa -l」でカラーや下線などが付いた見やすい状態で一覧を表示できる。

exaはlsコマンドの上位互換のようなコマンド

fdの使い方

fdはfindの上位互換のようなコマンド。

例えば「fd foo」と入力して実行するだけでディレクトリ名およびファイル名に部分一致していれば検出されるのでfindコマンドより使い勝手が良いです。

ディレクトリだけの場合は--type d、ファイルだけの場合は--type fを付ける。

fd foo
fd --type d bar
fd --type f baz

findと同様に正規表現も使用できる。

fd "index\.(css|html)"

うしろにディレクトリを指定すれば検索範囲を絞ることもできる。

fd foo ディレクトリ名

rgの使い方

rgはgrepの上位互換のようなコマンド。

「rg 文字列」で入力すればカレントディレクトリ内のファイルに文字列が含まれているファイルがあるか検索できる。

rg foo

grepと同様に正規表現も使用できる。

rg "H.ll[io]"

うしろにディレクトリを指定すれば検索範囲を絞ることもできる。

rg foo ディレクトリ名