Linuxメモ : あると便利かもしれないRust製コマンドラインツール
- インストール方法
- bat
- ripgrep, ripgrep-all
- fd, fselect
- starship
- exa, lsd, nat
- nushell
- navi, tealdeer
- delta
- hyperfine
- xsv, csview
- py-spy
- bandwhich, gping, ht, dog
- hexyl, bingrep
- broot
- tokei
- genact, globe, glitchcat
- monolith
- shellharden
- fnm, volta
- pastel
- gitui, onefetch, git-interactive-rebase-tool
- skim
- watchexec
- dust, diskonaut, dua-cli, dutree
- zoxide
- ytop, bottom, zenith
- mcfly
- sd, desed
- topgrade
- pueue
- procs
- grex
- silicon
- angle-grinder
- drill, oha
- choose
- tmux-thumbs
GitHub TrendingのRustのページを眺めていて気になったコマンドラインツールを試してみる。
スター数の多いツールは既に有名なものもあるし便利。個人的にはbat, ripgrep, fd, starship, delta, lsd, zoxide, tealdeerなんかがお気に入り。
とは言っても本番環境で使うことには抵抗があるし、このようなツールに慣れると素の環境で困るので個人の開発環境で使っている。
スター数順に紹介するが、似たようなツール、関連しそうなツールは併せて紹介。
キャプチャはWSL 2/Ubuntu 20.04の環境で実際に使ってみたときの画像。ツール数が多く雑な説明になっているので適切でないところもあるかも。
一部のツールについては本ブログのRustカテゴリのページで紹介しているので興味があればどうぞ。
インストール方法
基本的にはcargo install
するか、GitHubのreleaseページにあるexecutableをダウンロードして実行すればよい。
コマンド名とインストールするときの名前が違うツールや、インストールできるバージョンが違ったりすることもあるので詳細はそれぞれのREADME.mdを参照。
以下はripgrepの例。
$ cargo install ripgrep $ rg --version ripgrep 12.1.1 -SIMD -AVX (compiled) +SIMD +AVX (runtime)
$ curl -O -L https://github.com/BurntSushi/ripgrep/releases/download/12.1.1/ripgrep-12.1.1-x86_64-unknown-linux-musl.tar.gz $ tar xf ripgrep-12.1.1-x86_64-unknown-linux-musl.tar.gz $ ./ripgrep-12.1.1-x86_64-unknown-linux-musl/rg --version ripgrep 12.1.1 (rev 7cb211378a) -SIMD -AVX (compiled) +SIMD +AVX (runtime)
bat
シンタックスハイライトしてくれるcat
。Gitのステータスも表示してくれる。
ripgrep, ripgrep-all
- GitHub - BurntSushi/ripgrep: ripgrep recursively searches directories for a regex pattern while respecting your gitignore
- GitHub - phiresky/ripgrep-all: rga: ripgrep, but also search in PDFs, E-Books, Office documents, zip, tar.gz, etc.
ripgrepは高速なgrep
。
ripgrep-allはzip, tar.gz, pdf, sqlite3などもripgrepで検索できるようにするツール。
fd, fselect
- GitHub - sharkdp/fd: A simple, fast and user-friendly alternative to 'find'
- GitHub - jhspetersson/fselect: Find files with SQL-like queries
fdは高速なfind
。
ファイル検索としてSQLライクにファイルを検索できるfselectもある。
starship
starshipはプロンプトをカスタマイズするツール。bash, zsh, fishなど複数シェルに対応している。
プログラミング言語のバージョンやGitのステータスなどを表示してくれる。
exa, lsd, nat
- GitHub - ogham/exa: A modern replacement for ‘ls’.
- GitHub - Peltoche/lsd: The next gen ls command
- GitHub - willdoescode/nat: ⚡️ nat - the 'ls' replacement you never knew you needed⚡️
exa, lsd, natはモダンなls
。
個人的にはlsdがお気に入り。アイコンを表示するにはNerd Fontが必要。
nushell
nushellはツールというかシェル。使い方はドキュメント参照。
navi, tealdeer
- GitHub - denisidoro/navi: An interactive cheatsheet tool for the command-line and application launchers
- GitHub - dbrgn/tealdeer: A very fast implementation of tldr in Rust.
naviはコマンドラインのチートシート。自分でチートシートを作成することもできる。
tealdeerはコマンドの代表的な使い方を表示してくれるツール。tldrクライアントはいろいろな言語での実装がある。
似たようなツールとしてはcheat.sh, cheat, howdoi, how2がある
delta
deltaはdiff出力を見やすく表示してくれるツール。git diff
にも使えるし、以下のように2つのファイルの比較もできる。
delta a.txt b.txt diff -u a.txt b.txt | delta
hyperfine
hyperfineはコマンドラインのベンチマークツール。Rust製のツールが高速だということを示すためにこのツールでベンチマークしていることがある。
xsv, csview
- GitHub - BurntSushi/xsv: A fast CSV command line toolkit written in Rust.
- GitHub - wfxr/csview: 📠 A high performance csv viewer with cjk/emoji support.
xsvはCSVファイルの加工、分析ができるツール。
csviewはCSVファイルを見やすく表示してくれるツール。
py-spy
py-spyはPythonプログラムのプロファイラ。以下のように実行中のPIDを指定できる。
py-spy top --pid 12345 # OR py-spy top -- python myprogram.py
bandwhich, gping, ht, dog
- GitHub - imsnif/bandwhich: Terminal bandwidth utilization tool
- GitHub - orf/gping: Ping, but with a graph
- GitHub - ducaale/ht: Yet another HTTPie clone
- GitHub - ogham/dog: Command-line DNS client
ネットワーク関連としてbandwhichはプロセス、アドレス、コネクション毎のネットワーク使用状況を表示するツール(キャプチャはプロセスのみ)。
gpingはグラフ表示のping
。
htはHTTPクライアントHTTPieのRust実装。
dogはdig
コマンドのようなDNSクライアント。
hexyl, bingrep
- GitHub - sharkdp/hexyl: A command-line hex viewer
- GitHub - m4b/bingrep: like ~~grep~~ UBER, but for binaries
hexylはHEX(16進数)viewer。
bingrepはバイナリ解析ツール。
broot
brootはディレクトリツリーの表示、移動、プレビューなどができるツール。
tokei
tokeiはソースコードのファイル数、行数などを表示してくれるツール。
genact, globe, glitchcat
- GitHub - svenstaro/genact: 🌀 A nonsense activity generator
- GitHub - adamsky/globe: ASCII globe generator
- GitHub - kuviman/glitchcat: Cat-like program with glitch animation
面白系としてgenactは何か作業している感じを出すツール。
globeはアスキーアートの地球を表示するツール。
glitchcatはグリッチアニメーションでcat
するツール。
monolith
monolithはWebページをjs, css, 画像を含んだ1つのHTMLとして保存するツール。
$ monolith https://lyrics.github.io/db/P/Portishead/Dummy/Roads/ -o portishead-roads-lyrics.html https://lyrics.github.io/db/P/Portishead/Dummy/Roads/ https://lyrics.github.io/favicon.ico https://lyrics.github.io/s.css https://lyrics.github.io/1.svg https://lyrics.github.io/2.svg https://lyrics.github.io/3.svg
shellharden
shellhardenはシェルスクリプト向けのシンタックスハイライトツール。修正すべき箇所も背景色でサジェストしてくれる。
fnm, volta
- GitHub - Schniz/fnm: 🚀 Fast and simple Node.js version manager, built in Rust
- GitHub - volta-cli/volta: Volta: JS Toolchains as Code. ⚡
fnm, voltaはNode.jsのバージョン管理ツール。
似たようなツールとしてはnvm, nがある。
pastel
pastelは色の操作ができるツール。color
, random
, format
などいろいろなサブコマンドがある。
gitui, onefetch, git-interactive-rebase-tool
- GitHub - extrawurst/gitui: Blazing 💥 fast terminal-ui for git written in rust 🦀
- GitHub - o2sh/onefetch: Git repository summary on your terminal
- GitHub - MitMaro/git-interactive-rebase-tool: Native cross-platform full feature terminal-based sequence editor for git interactive rebase.
Git関連としてgituiはgitのターミナルクライアント。
似たようなツールとしてはtig, lazygitなどがある。
onefetchはGit repositoryのサマリを表示するツール。
似たようなツールとしてはシステム情報を表示するneofetchがある。
git-interactive-rebase-toolはgit rebase -i
で使えるsequence.editor。
skim
skimはfuzzy finder(コマンド名はsk
)。
似たようなツールとしてはfzf, peco, percol, fzyがある。
これまでに紹介したコマンドを組み合わせると、fd
で検索したファイルをsk
で絞り込んでbat
でプレビューみたいなこともできる。
fd | sk --preview 'bat --style=numbers --color=always --line-range :500 {}'
watchexec
GitHub - watchexec/watchexec: Executes commands in response to file modifications
watchexecはファイルの変更を監視してコマンドを実行するツール。以下はコマンド実行例。
$ watchexec --exts js,css,html make $ watchexec -i target make test $ watchexec -- ls -la $ watchexec -e py -r python server.py
dust, diskonaut, dua-cli, dutree
- GitHub - bootandy/dust: A more intuitive version of du in rust
- GitHub - imsnif/diskonaut: Terminal disk space navigator 🔭
- GitHub - Byron/dua-cli: View disk space usage and delete unwanted data, fast.
- GitHub - nachoparker/dutree: a tool to analyze file system usage written in Rust
それぞれディスク使用量を見た目にわかりやすく表示するツール(dustとdiskonautの例)。
zoxide
zoxideは頻繁に使用するディレクトリへの移動を支援するツール。
似たようなツールとしてはz, autojump, enhancdなどがある。
ytop, bottom, zenith
- GitHub - cjbassi/ytop: A TUI system monitor written in Rust
- GitHub - ClementTsang/bottom: Yet another cross-platform graphical process/system monitor.
- GitHub - bvaisvil/zenith: Zenith - sort of like top or htop but with zoom-able charts, CPU, GPU, network, and disk usage
ytop, bottom, zenithはシステムモニタリングツール。
ytopはもうメンテナンスされていないのでbottomの例。
似たようなツールとしてはhtop, glances, bashtop, gtop, gotopなどがある。
mcfly
mcflyは作業ディレクトリなどのコンテキストを考慮してコマンド履歴をサジェストするツール。
sd, desed
- GitHub - chmln/sd: Intuitive find & replace CLI (sed alternative)
- GitHub - SoptikHa2/desed: Debugger for Sed: demystify and debug your sed scripts, from comfort of your terminal.
sdは直感的に置換ができるsed
のようなツール。
desedはsed
のデバッグツール。sed
の--debug
オプションみたいなもの。
topgrade
topgradeはシステムにインストールされているパッケージなどを自動で判定して一括アップデートしてくれるツール。ドライランもできる。
pueue
pueueは長時間かかるようなコマンドをキューに追加して処理してくれるツール。並列実行もできる。
procs
procsはps
のようなツール。
grex
grexは引数で与えた文字列がマッチする正規表現を作成するツール。
silicon
siliconはソースコードを画像に変換できるツール。
angle-grinder
angle-grinderはログ分析ツール。
drill, oha
- GitHub - fcsonline/drill: Drill is a HTTP load testing application written in Rust inspired by Ansible syntax
- GitHub - hatoo/oha: Ohayou(おはよう), HTTP load generator, inspired by rakyll/hey with tui animation.
drill, ohaは負荷テストツール。
似たようなツールとしてはwrk, vegeta, heyがある。
choose
chooseはPythonのスライス構文のようにフィールドを抽出できるツール。
tmux-thumbs
tmux-thumbsはtmux-fingersのRust実装。tmuxで作業時にパスやIPアドレスなどの文字列をキー操作でコピーするツール。