ls よりも exa を使おう！モダンな Linux コマンド達を紹介

# はじめに

最近 GitHub で Rust 製の Linux コマンドを実装しているリポジトリをよく見かけるようになりました。使ってみるとカラフルでとてもオシャレな表示を行うコマンドが多くて便利でしたので、見つけたコマンドを一気に紹介していきたいと思います。

# `exa`

まずは `ls` コマンドの代替である [exa] の紹介です。

https://github.com/ogham/exa

<div style="text-align:center">
    <a href="https://github.com/ogham/exa/blob/master/screenshots.png?raw=true">
        <img src="https://github.com/ogham/exa/blob/master/screenshots.png?raw=true" />
    </a>
</div>

上記の画像を見ると分かる通り、カラフルで見やすいですね。右図のようにディレクトリのツリー表示にも対応しています。さらに `--icons` オプションを付けると、ファイルタイプに応じたアイコン表示も可能です。

[exa]: https://github.com/ogham/exa

# `bat`

続いて `cat` コマンドの代替である [bat] の紹介です。

https://github.com/sharkdp/bat

<div style="text-align:center">
    <a href="https://camo.githubusercontent.com/9d3d89364f2cc83ace8f29646a6236bc15ea1da0/68747470733a2f2f696d6775722e636f6d2f724773646e44652e706e67">
        <img src="https://camo.githubusercontent.com/9d3d89364f2cc83ace8f29646a6236bc15ea1da0/68747470733a2f2f696d6775722e636f6d2f724773646e44652e706e67" />
    </a>
</div>

ファイルの拡張子に応じてソースコードを色付けして表示してくれます。また `less` のようなページャの機能も持っており、行数の長いファイルを渡すと自動でページャモードで開いてくれます。

[bat]: https://github.com/sharkdp/bat

# `hexyl`

[hexyl] はバイナリダンプコマンド `od` の代替コマンドです。`bat` の開発者と同じ方が開発しています。

https://github.com/sharkdp/hexyl

<div style="text-align:center">
    <a href="https://camo.githubusercontent.com/1f71ee7031e1962b23f21c8cc89cb837e1201238/68747470733a2f2f692e696d6775722e636f6d2f4d574f3975534c2e706e67">
        <img src="https://camo.githubusercontent.com/1f71ee7031e1962b23f21c8cc89cb837e1201238/68747470733a2f2f692e696d6775722e636f6d2f4d574f3975534c2e706e67" />
    </a>
</div>

バイナリをダンプすること自体があまり多くないかもしれませんが C++ を使った低レイヤの開発をしていると、まれにバイナリの中をダンプしたくなることがあります。

[hexyl]: https://github.com/sharkdp/hexyl

# `fd`

続いては `find` コマンドの代替である [fd] です。こちらも `bat` と同じ方が開発しています。

https://github.com/sharkdp/fd

<div style="text-align:center">
    <a href="https://github.com/sharkdp/fd/raw/master/doc/screencast.svg?sanitize=true">
        <img src="https://github.com/sharkdp/fd/raw/master/doc/screencast.svg?sanitize=true">
    </a>
</div>

`fd` は検索速度の速さがウリの検索コマンドです。`find` に比べるとかなり速いです。検索時に `.gitignore` で指定されたディレクトリは自動で無視してくれる機能が付いています（無視しないようにすることもできます）。

[fd]: https://github.com/sharkdp/fd

# `procs`

[procs] は `ps` の代替コマンドです。

https://github.com/dalance/procs

<div style="text-align:center">
    <a href="https://user-images.githubusercontent.com/4331004/55446625-5e5fce00-55fb-11e9-8914-69e8640d89d7.png">
        <img src="https://user-images.githubusercontent.com/4331004/55446625-5e5fce00-55fb-11e9-8914-69e8640d89d7.png">
    </a>
</div>

`--tree` を付けると親プロセス・子プロセスの関係をツリー表示してくれます。

<div style="text-align:center">
    <a href="https://user-images.githubusercontent.com/4331004/55446692-9ff07900-55fb-11e9-8b66-a8432df0a8e1.png">
        <img src="https://user-images.githubusercontent.com/4331004/55446692-9ff07900-55fb-11e9-8b66-a8432df0a8e1.png">
    </a>
</div>

[procs]: https://github.com/dalance/procs

# `ripgrep`

[ripgrep] は `grep` の代替コマンドです。

https://github.com/BurntSushi/ripgrep

コマンド名は `rg` となっています。`fd` と同じく、速さがウリになっています。また Visual Studio Code のクイックオープン (Ctrl + P) でも `ripgrep` が使用されています。

<div style="text-align:center">
    <a href="https://camo.githubusercontent.com/f6c23a97909b858f9bc03039070fd98d524d3c86/68747470733a2f2f6275726e7473757368692e6e65742f73747566662f72697067726570312e706e67">
        <img src="https://camo.githubusercontent.com/f6c23a97909b858f9bc03039070fd98d524d3c86/68747470733a2f2f6275726e7473757368692e6e65742f73747566662f72697067726570312e706e67" />
    </a>
</div>

[ripgrep]: https://github.com/BurntSushi/ripgrep

# まとめ

CLI がカラフルだと視認性が向上するので、開発もしやすくなるのではないかと思います。ぜひお試しください。