ターミナルの環境改善活動をしてみた

先日、同僚とモブプログラミングをしていてrgコマンドを使ってgrepに近いことをしていてとても便利そうだったので、導入しようとおもったので、記事にしました。

巷を賑わすRust 製のコマンドたち

最近、自分のターミナルを豊かにするアンテナを貼っていなかったのであまり知らなかったのですが、Rust 製のコマンドが流行ってるみたいですね。
今は、仕事の都合上Python を触ることが多いのですが、違う言語にも触れたいと思っていたので、少しRust に興味を持ったので、少しそういう記事を増やしても行くかもしれません。
ひとまず、今回の主題に入っていこうと思います。

コマンドの導入方法

今回インストールする環境は、macOS Catalina になります。
まあMac といえばこういうツールに関してはbrewでインストールするというのもありなのですが、個人的に開発で使う環境ということもあり、
何をbrew でいれたか、何をコードからビルドしたかわからなくなるのがいやなので、
最近はbrew から入れないようにしています。
なので、Rust 製のコマンドに関してはコードからのビルド or cargoでbuild のどちらかで進めようと思います。

Rust 環境を整備する

今後Rust を勉強しようとおもったのでRust の環境を今回は導入していこうと思います。
rust-lang.org にインストール方法を説明するページがあります。
コマンド一撃でセットアップできます。

ripgrep をインストールする

ripgrep のリポジトリは v こちら。

github.com

インストールの方法はREADMEにかかれており、各環境での手軽なインストールする方法が載ってますので、環境や自分のポリシーに合わせてインストールしてください。

コードからビルドする

Rust programmer 向けにcargo を使いインストールする方法とコードからビルドする方法が提案されています。

cargo 経由でインストールする

cargo を使ってインストールする場合は、

$ cargo install ripgrep

とすれば良いみたいです。
ただ、注意点としてはRust のバージョンが1.34.0 以降である必要があるとのことです。

コードからビルドする

コードからビルドするには、git clone でコードを引っ張ってくるところからスタートします。

$ git clone https://github.com/BurntSushi/ripgrep
$ cd ripgrep
$ cargo build --release

cargo build とすると必要なcrates をdownload し、compile してくれます。
crates とはRust の世界でpackage を指す言葉のようです。
build 自体は多少時間がかかりましたが、無事成功しましたので、実行できるか確認してみます。

$ ./target/release/rg --version
ripgrep 12.1.1 (rev 11c7b2ae17)
-SIMD -AVX (compiled)
+SIMD +AVX (runtime)

成功しているみたいです。
ただ、コードからビルドした場合は、./target 以下にバイナリが作られるだけなので、パスを通す必要があります。
今回、自分は/usr/local/binシンボリックリンクを貼るようにしました。

$ rg --version
ripgrep 12.1.1 (rev 11c7b2ae17)
-SIMD -AVX (compiled)
+SIMD +AVX (runtime)

コマンドとして呼び出すことができました!