`ls`コマンドからの一貫性のないカラー出力


28

私は地元の大学でUNIX / Linuxの紹介コースを教えており、生徒の一人が次の質問をしました。

ディレクトリ内の一部のファイルが白色になり、他のファイルが灰色になるのはなぜですか?白いものは今日作成したもので、灰色は既存のファイルですか?

私がこれを調べたとき、私は最初に答えがLS_COLORS変数にあると考えましたが、さらなる調査により、-lスイッチを使用する場合-allsコマンドでスイッチを使用する場合に色のリストが異なることが明らかになりました。次のスクリーンショットを参照してください。

ls -lを使用すると、「3」という名前のファイルは白で表示されます

-alスイッチを使用すると、同じファイルに灰色が表示されます

ls -l「3」という名前のファイルを使用すると白で表示されますが、-alスイッチを使用すると同じファイルが灰色で表示されます。

これはlsのバグですか、それともなぜこれが起こっているのか知っていますか?


質問のタイトルについて:このような色付けは、lsコマンド自体とは関係ありません。
ドリュー

FWIW、LS_COLORSをいじってこれに到達できる最も近いのはですLS_COLORS='rs=0;1' ls -lが、見た目は大きく異なります。
wjandrea

4
@Drew問題を調査した後、それを知っているだけです。明らかlsにその出力の色を変えることができます。
パイプ

@pipe:いや、色があるずっと前から知っている。の最新バージョンが色提供できる場合でも、色を提供する必要はありません。;-)ls
ドリュー

回答:


68

プロンプト文字列($PS1)が文字のボールド属性を設定して、色をより良くするようにし、設定を解除しないように見えます。以下からの出力は、lsこのことを知って、としない太字設定を解除。したがって、の最初のカラー出力の後ls、すべてが暗く見えます。


1
うん、それでした。$ PS1の最後の色の変更は太字+白(1; 37)に設定-ありがとう!
ビルR

3
その後、承認済みとしてマークできます。
トーマスディッキー

0

lsの出力全体が最後のアクティブな色で印刷されます。ls色なしで呼び出された場合:

$ printf '\e[0;31m color test\n'; /bin/ls
 color test
filea  fileb  filec  filed  filee  filef  fileg  fileh

ファイルのリストをで印刷します。

または、lsに必要な色の変更がない場合、最後の色が残ります。

$ mkdir t1; cd t1; touch file{a..h}
$ printf '\e[0;31m color test\n'; /bin/ls --color -l
 color test
total 0
-rw-r--r-- 1 user user 0 Feb 23 01:16 filea
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user 0 Feb 23 01:16 filec
-rw-r--r-- 1 user user 0 Feb 23 01:16 filed
-rw-r--r-- 1 user user 0 Feb 23 01:16 filee
-rw-r--r-- 1 user user 0 Feb 23 01:16 filef
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user 0 Feb 23 01:16 fileh

それでも、すべて赤です。

ただし、ls色を設定する必要がある(およびコンソールで使用されるデフォルトに色をリセットする)とすぐに、それ以降に使用される色がコンソールのデフォルトになります。

$ printf '\e[0;31m color test\n'; /bin/ls --color -la
 color test
total 8
drwxr-xr-x 2 user user 4096 Feb 23 01:16 .
drwxr-x--- 7 user user 4096 Feb 23 01:15 ..
-rw-r--r-- 1 user user    0 Feb 23 01:16 filea
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileb
-rw-r--r-- 1 user user    0 Feb 23 01:16 filec
-rw-r--r-- 1 user user    0 Feb 23 01:16 filed
-rw-r--r-- 1 user user    0 Feb 23 01:16 filee
-rw-r--r-- 1 user user    0 Feb 23 01:16 filef
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileg
-rw-r--r-- 1 user user    0 Feb 23 01:16 fileh

最初の3行(青い点まで)を赤で印刷します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.