0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CachyOSのlsコマンドの色を自在に設定する方法

Last updated at Posted at 2025-12-16

動機

筆者はCachyOSを普段使いのOSとして利用しております。CachyOSはその高速動作と先進性で現在人気爆発中のディストリビューションで、Distro WatchのPage Hit Rankingでもダントツの1位を独走しています。(2025年12月16日現在)
そんなCachyOSですが筆者が使っていて「ちょっとだけ」不満を感じていたこと、それがlsコマンドの表示でのタイムスタンプの色が非常に見にくいことでした。具体的には、こんな感じ。
Screenshot_2025-12-16_09-33-08.png
これは流石に見にくすぎるのでなんとかしたい!!ということで設定を変更することにしました。

lsの正体はeza

色々と調べてみたところ、CachyOSでのlsの実体はezaというコマンドのエイリアスになっていることがわかりました。ということで、lsと打った時の表示をカスタマイズするにはezaの設定を変えればよいとのこと。

いざezaをカスタマイズ

ezaコマンドのカスタマイズは、EZA_COLORSという環境変数を書き換えることで実現できます。後述しますが、設定方法はこんな感じで項目コードとそのカラーコードをイコールで結んで、コロンで羅列します。

<項目コード>=<カラーコード>:<項目コード>=<カラーコード>:...

CachyOSのデフォルトシェルはfishなので、環境変数の設定の仕方はbashとは異なります。例えば日付の色を黄色に変更するには、コマンドラインから、

shell
$ set -Ux EZA_COLORS "da=33"
$ exec fish

と打ち込むだけです。これだけで永続的に日付欄が黄色になります。
設定をリセットするには、

shell
$ set -eg EZA_COLORS
$ set -e EZA_COLORS
$ exec fish

とします。

設定項目

設定できる項目

色を指定できる項目とその項目コードを以下に列挙します。

  • ファイル名関連
項目コード 説明
di ディレクトリ
fi 通常ファイル
ln シンボリックリンク
pi 名前付きパイプ (FIFO)
so ソケット
bd ブロックデバイス
cd キャラクタデバイス
ex 実行可能ファイル
  • パーミッション関連
項目コード 説明
ur ユーザーの読み取り (User Read)
uw ユーザーの書き込み (User Write)
ux ユーザーの実行 (User Execute/Search)
ue ユーザーの実行 (Execute only)
gr グループの読み取り
gw グループの書き込み
gx グループの実行
tr その他(Other)の読み取り
tw その他(Other)の書き込み
tx その他(Other)の実行
  • 属性関連
項目コード 説明
sn ファイルサイズの数字 (Size Number)
sb ファイルサイズの単位 (K, M, G など)
da 日付 (Date)
uu 自分自身のユーザー名 (User You)
un 自分以外のユーザー名 (User Not you)
gu 自分自身のグループ (Group You)
gn 自分以外のグループ (Group Not you)
  • Git関連
項目コード 説明
ga Git: 新規追加 (Added)
gm Git: 変更あり (Modified)
gd Git: 削除された (Deleted)
gv Git: 名前変更 (Renamed)
gt Git: 未追跡ファイル (Untracked)

指定できる色

色の指定にはANSIカラーコードを用います。

  • 標準色
コード
30 黒 (Black)
31 赤 (Red)
32 緑 (Green)
33 黄 (Yellow)
34 青 (Blue)
35 マゼンタ (Magenta)
36 シアン (Cyan)
37 白 (White)
  • 明るい色
    90番台のカラーコードは、30番台の色それぞれに対してのより明るい色が割り当てられています。
コード 色(明るい)
90 黒 (Black)
91 赤 (Red)
92 緑 (Green)
93 黄 (Yellow)
94 青 (Blue)
95 マゼンタ (Magenta)
96 シアン (Cyan)
97 白 (White)
  • 装飾
    カラーコードの後ろに、セミコロンをつけて以下のコードを付加することで文字の装飾ができます。
コード 効果
1 太字 (Bold)
4 下線 (Underline)
0 リセット (標準に戻す)

実際に設定してみる

実際の設定例はこんな感じ。

shell
$ set -eg EZA_COLORS
$ set -e EZA_COLORS
$ set -Ux EZA_COLORS "di=36;1:fi=37:ln=35:ex=32:so=31:da=33"
$ exec fish

上の2行は設定のリセットで、3行目で、「ディレクトリ名はシアンの太文字、ファイル名は白、リンク名はマゼンタ、実行ファイル名は緑、ソケット名は赤、日付は黄色」に設定されます。
設定した後の実際の画面はこんな感じ。
Screenshot_2025-12-16_19-47-40.png

やっぱり設定ファイルに書こう

これで永続的に設定ができてしまうのですが、やっぱり設定ファイルに書いた方が、後々わかりやすそうなので、設定ファイルを作成します。

~/.config/fish/conf.d/eza.fish
set -gx EZA_COLORS "di=36;1:fi=37:ln=35:ex=32:so=31:da=33"

ここではオプションを"-Ux"から"-gx"に変えていることに注意してください。
設定ファイルが作成できたら、fishに読み込ませます。

shell
$ exec fish

もし、以前のUniversalな設定が残っていて悪さをしているようなら、それをリセットしてから再度設定ファイルを読み込ませてください。

shell
$ set -e EZA_COLORS
$ set -eg EZA_COLORS
$ exec fish

これで永続的な設定は完了です。

テーマを使う

vivid

これで一通り設定はできるのようにはなったのですが、いちいち全項目を設定するのは控えめに言ってもダルいです。そんなときにおすすめなのがvividというパッケージ。これを使うとezaの表示をテーマを使って設定できるようになります。
インストールはpacmanで一発。

shell
$ sudo pacman -S vivid

プレビュースクリプト

vividに用意されているテーマの一覧を表示するには

shell
$ vivid themes

とするとテーマ名がズラッと出てきます。
しかし、vividにはプレビュー機能はないので、テーマ名の一覧だけを眺めていても、どんな表示になるのかさっぱりわかりません。ということで、簡単なプレビュースクリプトを作成しました。(正確には本家のスクリプトをCachyOS用に書き換えただけですが。:sweat_smile:

vivid-preview.sh
for theme in $(vivid themes); do
    echo "Theme: $theme"
    export EZA_COLORS=$(vivid generate $theme)
    eza -l --header --icons --git
    echo
done

これに実行権限を与えて実行すれば、テーマごとのプレビューが表示されます。

shell
$ chmod +x vivid-preview.sh
$ ./vivid-preview.sh

テーマの適用

テーマを適用するには、以下のような設定ファイルを作成してfishに読み込ませます。

~/.config/fish/conf.d/eza.fish
set -gx EZA_COLORS (vivid generate tokyonight-night)

ここではtokyonight-nightというテーマを指定しています。
なお、テーマにオプションを付加することでテーマをカスタマイズすることもできます。
筆者の最初の動機であった日付の見にくさはこのテーマにしても改善されなかったので、日付だけは黄色に変更しました。

~/.config/fish/conf.d/eza.fish
set -gx EZA_COLORS (vivid generate tokyonight-night):da=33

設定ができたらfishに読み込ませます。

shell
$ exec fish

これでテーマを用いたezaのカスタマイズは完了です。

aliasの設定(おまけ)

さらにlsコマンドの挙動をカスタマイズするために、エイリアスを設定し直します。

~/.config/fish/conf.d/alias.fish
abbr -a ls "eza --icons"
abbr -a ll "eza -l --icons --header --git"
abbr -a lt "eza --tree --level=2 --icons"

ここではaliasコマンドの代わりにabbrコマンドを使用しています。abbrはaliasと違って、コマンド実行時に元のコマンドに展開されるため、どんなコマンドを打ったのかが後々わかりやすくなります。
設定ファイルができたら、こちらもfishに読み込ませます。

shell
$ exec fish

これでやっと理想的なlsコマンド環境が手に入りました!!
スクリーンショットはこんな感じ。
Screenshot_2025-12-17_05-53-29.png

まとめ

最初は「lsコマンドの日付の色を変えたい」と思っただけだったのですが、いざ始めてみるとなんとも奥深い世界が待っていました。ezaのカスタマイズ性の高さは想像以上のものでした。
もし、筆者と同じようにlsコマンドの表示に不満を持っている方がいらっしゃったら、この記事がその解決の一助となれば幸いです。
それでは、よいlsライフを♪

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?