web-dev-qa-db-ja.com

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

screencap of ls output on linux machine

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

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

158
DarenW

lsは、ファイルの種類に基づいてファイルに色を付けるほか(オーディオファイルには青緑色、アーカイブと圧縮ファイルには明るい赤、画像と動画には紫)、属性に基づいてファイルとディレクトリに色を付けます。

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

Stephano Palazzo 以上 Ask Ubunt は、さまざまな属性の色について非常に有益な画像を作成しました。

What the different colors mean in the terminal

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_COLORBACKGROUND_COLORは、0〜255の範囲の数値です。以下のスクリーンショットに、16色モードと256色モードのカラーコードの完全なリストを示します。

16 and 256 color mode color codes

176
Thomas Nyman

lsの色は権限を表すことができます。一部のシステムのデフォルトでは、すべての人が書き込み権限を持っているディレクトリを緑の背景で表示します。

enter image description here

dircolorsを使用して$LS_COLORS変数を編集することにより、色を変更できます(man 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

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

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

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

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

そしてここでそれは動作しています:

enter image description here

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

56
terdon

すべての技術的な答えは真実ですが、寛大に、またはcriss + crossをコピーするために少し権利を放棄したという、少し非公式の警告だと思います...(ほとんどの場合、私たちはすべて、最初に物事を機能させるために、 ?)

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

あなたが最も望む可能性が高い権利に戻るのに適した「グリーン化」は、次のステートメントです。

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

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

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

13
Frank Nocke

同じ質問がありました terdon's answer is niceですが、dirnameとdircolorsの間に混乱があると思いますか?

とにかく、さらに調査した後、色を変更することができたので、ここで自分の解決策を共有します。いつか誰かに役立つかもしれません!

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

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

dircolors -p > ~/.dircolors

次に、このファイルを変更します。中には色の値がいくつかありますが、さらに見つかりました here :)

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

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

ボイラ:)

9
KevinG

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

LS_COLORS+=':ow=01;33'

Nobgの青の3334に置き換えます。さらに簡単に、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でのさまざまな色の意味は何ですか?- も参照してください。

6
loxaxs

これを修正するには、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

enter image description here

ここで、owOTHER_WRITABLE)オプション

~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

enter image description here

1
PYK

これは、これを実行すると、このフォルダーにアクセス許可があることを意味します。

bgcolorを削除します:)

1

PuTTYで緑の色調を変更して、テキストを読みやすくすることができます。

PuTTYを開き、Window\Coloursに移動して、「ANSI Green」を選択し、濃い緑色に設定します(R:0 G:70 B:0)。

0
Erhan Alankus