おはようございます、morimorikochanです。 ターミナルで頻繁に利用するコマンドをモダンなコマンドに変えてみました。
入門モダンLinuxを読んでたら発見しました。
ls
やcat
がさらに使いやすくなったり高速に改良された新しいコマンドがあるらしく、いくつか取り上げられていました。
そのうちいくつか試して自分のmacに入れました
ls
の代替、exa
ls
の代替としてexa
が紹介されていました。
exa
ls
は主にディレクトリの中身を列挙してくれるコマンドですが、ls
との違いとして以下が挙げられていました
- 色がついて視覚的にみやすい
- Tree形式の表示が可能
- 高速
- 各ファイルのgitのステータスも表示される
早速導入してみました。デフォルトの動作はシンプルなのですが、隠しファイルも表示、ヘッダー表示、gitステータスも表示させたかったのでエイリアスを使って登録しています
alias exa="exa -h -l --git --all"
cat
の代替、bat
cat
の代替としてbat
が紹介されていました
bat
cat
は主にファイルの内容を出力するコマンドですが、cat
との違いとして以下が挙げられていました。
- 表示するファイルの内容を自動で判別しシンタックスハイライトを当てる
- 各行単位でgitのdiffを表示する
- ページングのカスタマイズ
これも良さげなので早速導入してみました。
ですが、ターミナルの背景が暗いとシンタックスハイライト(特にコメント)が読みにくかったです。おそらくbatのデフォルトのテーマ設定だと背景が明るいターミナルが想定されてるんでしょう。
--theme {theme name}
でテーマをansiに変更するとだいぶ読みやすくなりました
これもaliasで設定しておきます
alias bat="bat --theme=ansi"
find
の代替、fd
find
の代替としてfd
が紹介されていました。
fd
find
は主に指定したファイル名でファイルを検索するコマンドですが、find
との違いとして以下が挙げられていました。
- コマンド引数がシンプル
- 正規表現で検索ができる
- 検索結果に対して別のコマンドを適用
特に最後の特徴は魅力的に感じます。
たとえば 検索したファイルそれぞれに対してリネームしたい と言うユースケースの場合、find
だとfindした結果をxargsするというような一種のシェル芸が求められたんですが、fd
ではfd
のコマンド引数の中にその機能が含まれているため、簡単に実行することができます。「小さなことをうまくやる」Unixの哲学とはちょっと離れてそうですけどこれはこれで便利ですね
おもったこと・気づいたこと
- 自分の使うツールやコマンドは定期的に見直したほうが良いですね。
- dotfiles使ってみようか悩んだけどそんなにPC変更するわけじゃないと思うのでやめた。
- 調べてたら
sed
の代替コマンドsd
を見つけたけど、スター数が少なくて躊躇した。 - 紹介した3つのコマンドと上記
sd
は全てRustで書かれている、Rustで書き直す大きなムーブメントを体感した。- そんなに早くなるんやろうか、もともとC言語とかC++で書かれていたのであればそこまで言語によるパフォーマンス差はでなさそうに感じてるけど
- そういえばwebのフロントエンドのツールでもRustで書き直すムーブメントがあるらしいが、まだ自分は体感してない
- もしかしたら使ってるツールがRustでできてることを知らないだけかも