MacのTerminalをカラフルに彩る"exa"コマンド【Bash】


A. はじめに

以下のように、普段terminalでlsと打ち、そのディレクトリのフォルダーやファイルを確認することが多いと思います。

この記事では、このlsを見やすく彩ってくれるコマンドexaを紹介します。
exaを使うと、以下のようにフォルダと色がついたりして、見やすくなります。

また、以下のようにより見やすくするためのオプションコマンドも紹介します。

B. インストール方法

1. brewのインストール

brewをインストールしている方はスキップして大丈夫です。
terminalで以下のコマンドを実行すると、Githubから自動的にダウンロードしてくれます。
時間がかかるため、安定したネットワーク環境で実行することをおすすめします。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

こちらが参考リンクです。

2. exaのインストール

terminalで以下のコマンドw実行します。

$ brew install exa

3. 動作チェック

以下のコマンドを実行して、ファイルが表示されれば確認完了です。

$ exa

C. オプションの紹介

オプションとは、コマンドの後につけるものです。
主要なオプションとしては、以下のようなものがあります。

オプション 機能 ls exa
-l 一列にして表示。権限や所有者などの詳細情報も表示
-a 隠しファイルも含めて、全て表示
-T tree形式で表示 ×
-L 2 2階層分のtreeを表示 ×
--git gitの状況を表示 ×
$ ls
README.md   ios     pubspec.lock
android     lib     pubspec.yaml
build       my_app.iml  test

$ ls -a
.       .idea       build       pubspec.yaml
..      .metadata   ios     test
.dart_tool  .packages   lib
.git        README.md   my_app.iml
.gitignore  android     pubspec.lock

$ ls -l
total 40
-rw-r--r--   1 masumi.morishige  staff   536  4  9 00:48 README.md
drwxr-xr-x  12 masumi.morishige  staff   384  4  9 00:48 android
drwxr-xr-x   5 masumi.morishige  staff   160  4  9 00:57 build
drwxr-xr-x   7 masumi.morishige  staff   224  4  9 00:48 ios
drwxr-xr-x   3 masumi.morishige  staff    96  4  9 00:48 lib
-rw-r--r--   1 masumi.morishige  staff   896  4  9 00:48 my_app.iml
-rw-r--r--   1 masumi.morishige  staff  4340  4  9 00:48 pubspec.lock
-rw-r--r--   1 masumi.morishige  staff  2658  4  9 00:48 pubspec.yaml
drwxr-xr-x   3 masumi.morishige  staff    96  4  9 00:48 test

$ ls -la
total 72
drwxr-xr-x  17 masumi.morishige  staff   544  4  9 16:34 .
drwxr-xr-x   3 masumi.morishige  staff    96  4  9 00:48 ..
drwxr-xr-x   4 masumi.morishige  staff   128  4  9 00:57 .dart_tool
drwxr-xr-x   9 masumi.morishige  staff   288  4  9 16:34 .git
-rw-r--r--   1 masumi.morishige  staff   615  4  9 00:48 .gitignore
drwxr-xr-x   6 masumi.morishige  staff   192  4  9 00:48 .idea
-rw-r--r--   1 masumi.morishige  staff   305  4  9 00:48 .metadata
-rw-r--r--   1 masumi.morishige  staff  4106  4  9 01:17 .packages
-rw-r--r--   1 masumi.morishige  staff   536  4  9 00:48 README.md
drwxr-xr-x  12 masumi.morishige  staff   384  4  9 00:48 android
drwxr-xr-x   5 masumi.morishige  staff   160  4  9 00:57 build
drwxr-xr-x   7 masumi.morishige  staff   224  4  9 00:48 ios
drwxr-xr-x   3 masumi.morishige  staff    96  4  9 00:48 lib
-rw-r--r--   1 masumi.morishige  staff   896  4  9 00:48 my_app.iml
-rw-r--r--   1 masumi.morishige  staff  4340  4  9 00:48 pubspec.lock
-rw-r--r--   1 masumi.morishige  staff  2658  4  9 00:48 pubspec.yaml
drwxr-xr-x   3 masumi.morishige  staff    96  4  9 00:48 test

$ exa -T -L 2
.
├── android
│  ├── app
│  ├── build.gradle
│  ├── gradle
│  ├── gradle.properties
│  ├── gradlew
│  ├── gradlew.bat
│  ├── local.properties
│  ├── my_app_android.iml
│  └── settings.gradle
├── build
│  ├── flutter_assets
│  ├── ios
│  └── snapshot_blob.bin.d
├── ios
│  ├── Flutter
│  ├── Runner
│  ├── Runner.xcodeproj
│  └── Runner.xcworkspace
├── lib
│  └── main.dart
├── my_app.iml
├── pubspec.lock
├── pubspec.yaml
├── README.md
└── test
   └── widget_test.dart

$ exa -la --git
drwxr-xr-x    - masumi.morishige  9 4  0:57 -I .dart_tool
drwxr-xr-x    - masumi.morishige  9 4 16:34 -- .git
.rw-r--r--  615 masumi.morishige  9 4  0:48 -N .gitignore
drwxr-xr-x    - masumi.morishige  9 4  0:48 -I .idea
.rw-r--r--  305 masumi.morishige  9 4  0:48 -N .metadata
.rw-r--r-- 4.1k masumi.morishige  9 4  1:17 -I .packages
drwxr-xr-x    - masumi.morishige  9 4  0:48 -N android
drwxr-xr-x    - masumi.morishige  9 4  0:57 -I build
drwxr-xr-x    - masumi.morishige  9 4  0:48 -N ios
drwxr-xr-x    - masumi.morishige  9 4  0:48 -N lib
.rw-r--r--  896 masumi.morishige  9 4  0:48 -I my_app.iml
.rw-r--r-- 4.3k masumi.morishige  9 4  0:48 -N pubspec.lock
.rw-r--r-- 2.7k masumi.morishige  9 4  0:48 -N pubspec.yaml
.rw-r--r--  536 masumi.morishige  9 4  0:48 -N README.md
drwxr-xr-x    - masumi.morishige  9 4  0:48 -N test

Qiitaのシンタックスハイライトでは、彩りがないですが、冒頭でも説明したようにこちらだと彩りが出ます。

ls -laの場合

exa -laの場合

D. Aliasの登録

最後に、余談ですが、lsを打ったときにexaを実行させる方法について紹介します。
Aliasを用いて、この目的を達成したいと思います。

エイリアスとは、偽名、別名、通称などの意味を持つ英単語。ITの分野では、ある対象や実体を、複数の異なるシンボルや識別子で同じように参照できるする仕組みを指す。別名。
引用文献

1. bashrcファイルの作成

まず以下のコマンドを実行し、bashrcファイルを編集します。

$ vim ~/.bashrc

vimエディターが開いたら、iを押し、===INSERT===(挿入モード)にします。
そしたら、以下のように入力して、エイリアスを登録します。

~/.bashrc
alias ls='exa'

最後に、escを押して、挿入モードを解除して、:wqを入力して実行を行うことで、保存して、エディターを閉じます。

2. bash_profileへのbashrcの登録

次に、以下のコマンドを実行し、bash_profileファイルを編集します。

$ vim ~/.bash_profile

vimエディターが開いたら、iを押し、===INSERT===(挿入モード)にします。
そしたら、以下のように入力して、terminalを開いたときにbashrcが実行されるようにします。

~/.bash_profile
source ~/.bashrc

最後に、escを押して、挿入モードを解除して、:wqを入力して実行を行うことで、保存して、エディターを閉じます。

3. bash_profileの再読み込み

terminalを再起動するか、source ~/.bash_profileと実行してみましょう。
すると、ls -laと入力しても、exaのような綺麗な表示なると思います。

以上です。
皆さんのterminal生活が少しでも彩れば幸いです。