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

はじめまして、ますみです！

[![自己紹介.png](https://www.umi-mori.jp/wp-content/uploads/2023/02/introduction_banner_2-2048x533.png)](https://bit.ly/banner_intro_masumi_creator_qiita)


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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/9b60ca1f-b4b0-1767-0d5d-7f8762e5cc2f.png" alt="ls.png" width=700>

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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/1e3594cb-0834-fb76-8163-c4b25dcf5017.png" alt="exa.png" width=700>

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

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/83438008-868c-6b64-589a-5634dfef6ff9.png" alt="exa_la.png" width=700>

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/302646ed-c1b9-254c-83c9-c688564579e6.png" alt="exa_tree.png" width=700>

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

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

こちらが[参考リンク](https://brew.sh/index_ja)です。

## 2. exaのインストール
terminalで以下のコマンドw実行します。

```
$ brew install exa
```

## 3. 動作チェック
以下のコマンドを実行して、ファイルが表示されれば確認完了です。

```
$ exa
```

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

|オプション|機能|ls|exa|
|:---:|:---:|:---:|:---:|
|-l|一列にして表示。権限や所有者などの詳細情報も表示|○|○|
|-a|隠しファイルも含めて、全て表示|○|○|
|-T|tree形式で表示|×|○|
|-L 2|2階層分のtreeを表示|×|○|
|--git|gitの状況を表示|×|○|

```bash
$ 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`の場合
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/ae5ead52-bba6-0db2-53f2-52d318594530.png" alt="ls_la.png" width=700>

>`exa -la`の場合
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240280/8adca9cd-ef96-b423-8d41-50b5c84823ff.png" alt="exa_la.png" width=700>


# D. Aliasの登録
最後に、余談ですが、**lsを打ったときにexaを実行させる方法**について紹介します。
Aliasを用いて、この目的を達成したいと思います。
>エイリアスとは、偽名、別名、通称などの意味を持つ英単語。ITの分野では、ある対象や実体を、複数の異なるシンボルや識別子で同じように参照できるする仕組みを指す。別名。
（[引用文献](http://e-words.jp/w/%E3%82%A8%E3%82%A4%E3%83%AA%E3%82%A2%E3%82%B9.html)）

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

```bash
$ vim ~/.bashrc
```

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

```bash:~/.bashrc
alias ls='exa'
```
最後に、`esc`を押して、挿入モードを解除して、`:wq`を入力して実行を行うことで、保存して、エディターを閉じます。

## 2. bash_profileへのbashrcの登録
次に、以下のコマンドを実行し、bash_profileファイルを編集します。

```bash
$ vim ~/.bash_profile
```

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

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


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

# 最後に
最後まで読んでくださり、ありがとうございました！
いかがだったでしょうか？

この記事を通して、少しでもあなたの学びに役立てば幸いです！

:::note info
【仕事の相談はこちら】
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。

[問い合わせフォームはこちら](https://forms.gle/G5g1SJ7BBZw7oXYA7)

もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。

info*galirage.com（*を@に変えてご送付ください）

🎁 「生成AI活用の無料相談券」もしくは「生成AIの社内ガイドライン（無料PDF）」を『公式LINE』で配布中 🎁
『生成AIを業務に活用したいけど、どうしたらいいかわからない』といった声を多くいただきます。

Galirageでは公式LINEにて、チャットやオンライン会議で「完全個別の生成AI活用無料相談会」を実施しております！
（期間限定で実施しているため、ご興味ある方はお早めに以下のLINE公式アカウントをご登録ください^^）
https://lin.ee/rvz6lMN

※ 予告なく、キャンペーンを終了する可能性がございますが、ご了承ください。

【業務内容】
具体的には、以下のお仕事を中心に受け付けております！（[詳しくはこちら](https://galirage.notion.site/Galirage-AI-c2f3945fafb0433d8d2fd03e56927fd8)）
1. 受託開発（例：生成AIを使った社内システムの開発）
2. コンサルティング（例：技術戦略のアドバイス）
3. 講演（例：社内研修、イベント登壇）

※ 特に「生成AIを使ったシステム開発のご依頼」が多く、ご好評いただいております。

【これまでの相談事例】
以下のようなご相談が多くあります。

🔑 機密情報を漏洩させないための、生成AIのシステム構築をお願いしたい。
🤖 自社データを用いたFAQチャットボットの作り方を知りたい。
💡 ChatGPTを、自分たちの事業にどのように活かせるか、アドバイスやアイデアが欲しい。
:::
# おまけ
エンジニアの仲間（データサイエンティストも含む）を増やしたいため、公式LINEを始めました🎉

「**一緒に仕事をしてくれる方**」「**友だちとして仲良くしてくれる方**」は、友だち追加をしていただけますと嬉しいです！（仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆）

とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました！

友だち追加後に、アンケートに回答してくれた方へ「**エンジニア図鑑（職種20選）**」のPDFをお送りします◎

https://lin.ee/hFUN4TL

[![](https://www.umi-mori.jp/wp-content/uploads/2023/10/line_banner_v2.png)](https://lin.ee/hFUN4TL)