OS X および iTerm2 のターミナルで ls コマンドの出力色を変更するにはどうすればよいですか?

OS X および iTerm2 のターミナルで ls コマンドの出力色を変更するにはどうすればよいですか?

同様の質問が以下でも行われていることを私は知っています:

ls の出力をカラー化するにはどうすればいいですか?

ただし、私は答えを本当に理解できず、実際にそれを機能させることもできませんでした。

しかし、私は別のことを試しました。のマニュアルページを読むことにしました。lsそこには、コマンドを扱うときに設定できるさまざまな環境変数が記載されていますls。オプションに行くと、環境変数-Gを確認するように書かれていますCLICOLOR。私はそうしました。それ1 つは環境変数のドキュメントへのリンクですLSCOLORS。そこにアクセスすると、次のような記述があります。

「この変数の値は、CLICOLOR で色が有効になっている場合に、どの属性にどの色を使用するかを示します。この文字列は、fb 形式のペアの連結です。f は前景色、b は背景色です。」

また、LSCOLORS のデフォルト値は「exfxcxdxbxegedabagacad」であり、各部分は ls コマンド内の特定のものの色を指定するとも記載されています。たとえば、例の最初のペア ex はディレクトリの色を指定します。2 番目の fx はシンボリック リンクの色などです。e は青を意味し、x はデフォルトの「前景」を意味します。

1) まず、「CLICOLOR で色が有効になっている場合」とはどういう意味ですか?

2) 何が"前景"平均?

lsコマンドが希望どおりに出力に色を付けるには、環境変数をどのように設定する必要がありますか?


私も試しました:

ls --color

しかし、次のエラーが発生しました:

ls: illegal option -- - usage: ls [-ABCFGHLOPRSTUWabcdefghiklmnopqrstuwx1] [file ...]

私が実行したときも同じエラーが発生しましたls --color=auto。それだけでもエラーが発生します。理由はわかりません。iTerm2 が原因か OS X が原因か、なぜそうなったのかはわかりません。他のシステムでは動作するようです...

答え1

自分の質問に答えようとしながら、いくつか異なることを試してみましたが、実験によってすべてうまくいきました。

1) 「CLICOLOR を有効にする」とは、それを 1 (つまり true) に設定することを意味すると推測します。なぜなら、その変数を 1 に設定すると、LSCOLOR が機能し始めるからです。

2) この文脈では、「フォアグラウンド」は、適用される背景の強調表示を意味します。たとえば、最初のペアの bc は、ディレクトリの文字を赤で表示し、背景/強調表示を緑にすることを意味します。たとえば、環境変数が次の場合: export LSCOLORS="bCfxcxdxbxegedabagacad"

次に ls を実行すると、次のような結果が表示されます。

ここに画像の説明を入力してください

当然ながら、これを機能させるには、ls コマンドを ls -G にエイリアスする (または毎回 ls -G を実行する) 必要があり、.bashrc または使用するシェル rc ファイルに次の行が含まれている必要があります。

export CLICOLOR=1
export LSCOLORS="gxfxcxdxbxegedabagacad"

これで、man ls ファイルで指定されたとおりに LSCOLORS を自由に変更できます。

これを機能させるにはさまざまな方法があるかもしれませんが、これは私の環境では、iTerm2 上の OS X mavericks の Unix で機能した方法です。

答え2

を実行するとき--colorは に置き換えてください。-Gls

関連情報