ターミナルの環境改善活動をしてみた
先日、同僚とモブプログラミングをしていて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 こちら。
インストールの方法は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)
コマンドとして呼び出すことができました!