yiskw note

機械学習やプログラミングについて気まぐれで書きます

lsコマンドの改良版であるexaでファイル一覧をカラフルに表示する


はじめに

f:id:yiskw713:20220120172432p:plain

lsコマンドの改良版であるexaを使用してみました.
exaはRust製のツールで,カラフルにファイルの一覧を表示することができます.
またNerd Fontとともに使用することで,アイコンの表示も可能です.
今回はexaの設定方法と,使い方に関してこちらにメモを残しておきます.

その他のツールについてもまとめておりますので,良ければご参照ください.

yiskw713.hatenablog.com

yiskw713.hatenablog.com

exaとは

f:id:yiskw713:20220120172524p:plain
公式レポジトリより引用.

github.com

exaはRust製のツールで,lsコマンドを改良したものになっています.
カラフルにファイルの一覧を表示したり,ファイルごとのgit statusを見ることもできます
またNerd Fontとともに使用することで,アイコンとともにファイルの一覧を表示することも可能です.

前準備: Nerd Fontの導入

www.nerdfonts.com

前準備としてNerd Fontをインストールします.
Nerd Fontを入れることで,ファイルのアイコンを表示できるようになります.
自分はNerd Fontの中でも,プログラミングフォント 白源 (はくげん/HackGen)を使用しております.
Macを使用している場合,HackGenは,以下の方法でインストール可能です.
その他のOSでのインストールや,その他のフォントのインストールに関しては,各自調べていただければと思います.

brew tap homebrew/cask-fonts
brew install font-hackgen
brew install font-hackgen-nerd

フォントのインストールが完了したら,ターミナルでフォントの設定を行います.
Macの純正ターミナルを使用している場合は,Preferences -> Profiles -> Text -> Fontより設定が可能です.

f:id:yiskw713:20220120174026p:plain

exaのインストール

Homebrewやapt,cargoなどでインストールが可能です.
その他のインストール方法に関してはこちらをご参照ください.

brew install exa
# or
sudo apt install exa
# or
cargo install exa

使い方

f:id:yiskw713:20220120180338p:plain

上記のように,lsコマンドと同じように,exaコマンドを使用します.
主要なオプションは以下の通りです.

  • -1 ... 1行につき,一つのファイル/ディレクトリを表示
  • -l / --long ... ファイルの詳細や属性を表示
  • --icons ... アイコンを表示
  • -a / --all ... 隠れファイルやドットファイルを表示

以下は-l / --longオプションと一緒に使用するものです

  • -g / --group ... 各ファイルのグループを表示
  • -h/ --header ... 各列のヘッダーを追加
  • --git ... ファイルごとのgit statusを表示

その他のオプションに関しては,こちらをご確認ください.

エイリアスの設定

自分はデフォルトで,全てのファイルの情報やgit statusの情報+アイコンを表示させたかったので, 以下のようにエイリアスを設定しています.
また,cdしたときに,同時にexaコマンドを実行したかったので,
cdlsという関数を新たに作成し,cdコマンドにcdlsを割り当てています.
自分はなんとなく設定しませんでしたが,alias ls="exa"としても良いと思います.

# exa: https://github.com/ogham/exa
alias exa="exa -a --icons --git -h -g"

# alias
# cdls
cdls ()
{
    \cd "$@" && exa
}
alias cd="cdls"

このようにすることで,以下のようにディレクトリ移動時に,ディレクトリの中身を可視化することが可能です.

f:id:yiskw713:20220120174843p:plain

参考

関連記事

yiskw713.hatenablog.com

yiskw713.hatenablog.com