ターミナルで頻繁に使うコマンドをモダンなコマンドに変えてみた

おはようございます、morimorikochanです。 ターミナルで頻繁に利用するコマンドをモダンなコマンドに変えてみました。

入門モダンLinuxを読んでたら発見しました。 lscatがさらに使いやすくなったり高速に改良された新しいコマンドがあるらしく、いくつか取り上げられていました。

そのうちいくつか試して自分の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に変更するとだいぶ読みやすくなりました

/img/2023-06-19.png

デフォルトのテーマ

/img/2023-06-19-02.png

'--theme=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でできてることを知らないだけかも

See also