ls出力でこの緑の背景の原因は何ですか?


141

Linuxマシンでのls出力のスクリーンキャップ

「ls」で示される2つのディレクトリがあります。通常、ディレクトリは黒の背景に青で表示されます。しかし、最初のものは緑に青で、読むことが不可能です。どうしてこれなの?黒の上に青にするか、少なくとも暗い何かの上に何か明るいものにする方法は?

これはUbuntu 12.04で、Gnomeターミナルでbashを使用しています。Konsoleでは、青は少し暗く、読むことができますが、もっと良いかもしれません。

回答:


162

タイプに基づいてファイルを色付けする(オーディオファイルは青緑色、アーカイブと圧縮ファイルは明るい赤、画像とビデオは紫)以外lsに、属性に基づいてファイルとディレクトリも色付けします。

  • 背景が緑の黒のテキストは、ディレクトリが所有ユーザーおよびグループ以外の他のユーザーによって書き込み可能であり、スティッキービットが設定されていることを示します(o+w, +t)。
  • 背景が緑色の青色のテキストは、ディレクトリが所有ユーザーおよびグループ以外の他のユーザーによって書き込み可能であり、スティッキービットが設定されていないことを示します(o+w, -t)。

StephanoパラッツォでオーバーのUbuntuを掲載して別の属性の色の上に、この非常に有益な絵を作っています。

ターミナルでの異なる色の意味

terdonが指摘、カラー設定が経由で変更することができますdircolors。さまざまなカラーリング設定のリストには、でアクセスできますdircolors --print-database

などの出力の各行BLK 40;33;01の形式は次のとおりです。

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET カラーリングルールのターゲットを示します

  • TEXT_STYLE テキストスタイルを示します:

    • 00 =なし
    • 01 =太字
    • 04 =アンダースコア
    • 05 =点滅
    • 07 =逆、
    • 08 =隠された
  • FOREGROUND_COLOR 前景色を示します。

    • 30 =黒
    • 31 =赤
    • 32 =緑
    • 33 =黄色
    • 34 =青、
    • 35 =マゼンタ
    • 36 =シアン
    • 37 =白
  • BACKGROUND_COLOR 背景色を示します。

    • 40 =黒
    • 41 =赤
    • 42 =緑
    • 43 =黄色
    • 44 =青、
    • 45 =マゼンタ
    • 46 =シアン
    • 47 =白

フィールドは右から省略することができるため、たとえば.tar 01;31太字と赤を意味します。

XTermおよびその他の最新のターミナルエミュレータは256色をサポートしています。

XTerm 256色の前景色の形式は次のとおりです。

38;5;[FOREGROUND_COLOR]

XTerm 256色の背景色コードの形式は次のとおりです。

48;5;[BACKGROUND_COLOR]

ここでFOREGROUND_COLORand BACKGROUND_COLORは0〜255の範囲の数値です。16および256カラーモードのカラーコードの完全なリストを以下のスクリーンショットに示します。

16および256カラーモードカラーコード


5
BACKGROUND_COLORコードはFOREGROUND_COLORと同じではありません。背景コードは40-47です
ライアンV.ビッセル

38;5;xterm 256色のフォアグラウンドカラーコードを開始します。 48;5;xterm 256色の背景色コードを開始します。私のdircolorsは出力のシアンはあり38;5;51 ません 36結果は同じですが。
-stevesliva

1
@stevesliva:コメントありがとうございます。答えを編集して、背景色コードを正しく示し、256色の前景色と背景色コードを説明しました。
トーマスナイマン

55

の色はls許可を表すことができます。一部のシステムのデフォルトでは、全員が書き込み許可を持つディレクトリを緑の背景で表示します。

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

(から)$LS_COLORSを使用して変数を編集することにより、色を変更できます。dircolorsman ls

   Using color to distinguish file types is disabled both by  default  and
   with  --color=never.  With --color=auto, ls emits color codes only when
   standard output is connected to a terminal.  The LS_COLORS  environment
   variable can change the settings.  Use the dircolors command to set it.

構文は確かに迷惑なものですが、この色を変更するには、希望する色のファイルを作成し、次の名前で保存します~/.dircolors

dircolors -p > ~/.dircolors

そのコマンドは、デフォルトをに出力し~/.dircolorsます。次に、そのファイルを編集して、次の行を変更する必要があります。

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky

たとえば、赤の背景に黒のテキストを作成するには(色コードのリストについてはこちらを参照)

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky

すべてをデフォルトにする必要はありません。1行のファイルを作成して、変更したいものだけを再定義することもできます。とにかく、ファイルを作成したら、次のようにロードします。

eval "$(dircolors ~/.dircolors)";

そして、ここで動作しています:

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

これを自動的に行うには、eval上記のコマンドを~/.bashrcファイルに追加します。


8
デフォルトの色は、多くの場合、元の作者が私たちと私たちの目を嫌っていることを示しているように見えます
...-kurtm

1
ありがとう。なぜ〜/ .dirname、時には〜/ dircolors、時には〜/ .dircolorsを書くのですか?彼らは同じであるはずですか?
ティム

ありがとう。なぜeval "$(dircolors ~/dircolors)";、より直接的な方法のような代わりにdircolors ~/dircolors
ティム

@Timはdircolorsが設定のみを印刷するため、それらを読み取るには評価する必要があります。
テルドン

彼らが誰に読まれるか?
ティム

11

技術的な答えはすべて真実ですが、私はそれを少し非公式の警告とみなします。あなたは寛大に、またはcriss + crossをコピーする権利を少し与えたということです... ?)

黒に青にする方法は...?

あなたが最も望む可能性が高い権利に戻るための良い「環境保護」は、この声明です:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/

大文字の+ X「特別な実行」の目的を理解している場合、Wikipediaを参照してください。

「+」で使用し、通常は-Rオプションと組み合わせて使用​​すると、通常のファイル(テキストファイルなど)に実行権限を設定せずにグループまたはその他の大きなディレクトリツリーへのアクセスを許可する場合にのみ本当に役立ちます。 「chmod -R a + rx ...」を使用しました。


8

私は同じ質問を持っていました、テルドンの答えは素晴らしいですが、dirnameとdircolorsの間には混乱があると思いますか?

とにかく、いくつかのさらなる研究の後、私は色を変えることができたので、ここで私のソリューションを共有しています。いつか誰かに役立つかもしれません!

したがって、3つの簡単なステップ:

まず、terdonが言ったように、デフォルトの色をファイルにコピーします

dircolors -p > ~/.dircolors

次に、このファイルを変更します。あなたは内部の色のいくつかの値を見つけることができますが、私はここでもっと見つけまし :)

最後に、~/.bashrcターミナルを開いたときに自動的に色がロードされるように、ファイルに次の行を追加します。

eval 'dircolors ~/.dircolors' > /dev/null

Voilà:)


1
以下のために~/.zshrc私は行かなければなりませんでした if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi。申し訳ありませんが改行はすごいです
エリックD.ジョンソン

2

問題を迅速に修正するには(nobgで他の書き込み可能なファイルを黄色にします):

LS_COLORS+=':ow=01;33'

置き換え33によって34nobgの青いのために。さらに簡単に、nobgでnofgにする:

LS_COLORS+=:ow=

変更を永続的にするには、.profileに追加します。

echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile

LS_COLORSの非拡張関連ルールを表示するには:

echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'

sed各ルールを1行に配置し、次でgrep始まるルールを削除します*.'.


ls端末の色を調べるには、使用を検討してください

C="$LS_COLORS"
function sc () {
    echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
    ls /mnt # Or the path to your example directory.
}

それから

LS_COLORS="$C:ow=38;5;250;48;5;025";t

別の回答(Thomas Nymanの回答)で述べられているように38;5;、前景のx-term 256色と48;5;背景のx-term 256色の接頭辞です。ただし、すべての端末で256色がサポートされているわけではありません。

また、AskUbuntuの-ls で異なる色は何を意味するのか?



0

これを修正するには、LS_COLORSでowパラメータを試してください

例えば:

~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33'
~ls -l

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

次に、owオプションを追加します

~export LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0'
~ls -l

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


0

テキストを読みやすくするために、Puttyの緑のトーンを変更できます。

Puttyを開いてWindow \ Coloursに移動し、[ANSI Green]を選択して、暗い緑(R:0 G:70 B:0)に設定します。

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