Bu yeşil arka planın çıkışındaki sebep nedir?


141

linux makinesinde ls çıktısının screencap

'Ls' ile gösterilen iki dizin var. Normalde her yerdeki dizinler siyah arka plan üzerinde mavidir. Fakat ilki yeşilde mavidir ve okunması imkansızdır. Bu neden? Siyahı mavi yapmak ya da en azından karanlık bir şeyi aydınlatmak nasıl?

Bu, Gnome Terminalinde bash kullanarak Ubuntu 12.04’te. Konsole'de mavi renk biraz daha koyu ve okunması mümkün, ancak daha iyi olabilirdi.

Yanıtlar:


162

Dosya türlerine göre renklendirme dışında (ses dosyaları için turkuaz, Arşivler ve sıkıştırılmış dosyalar için parlak kırmızı, görüntüler ve videolar için mor), lsaynı zamanda niteliklerine göre dosyaları ve dizinleri renklendirir:

  • Yeşil arka plana sahip siyah metin, bir dizinin sahibi olan kullanıcı ve grup dışında başkaları tarafından yazılabilir olduğunu ve yapışkan bit ayarının ( o+w, +t) olduğunu gösterir.
  • Yeşil arka plan ile Mavi metin bir dizin ayrı sahip olma kullanıcı ve grup başkaları tarafından yazılabilir olduğunu gösterir ve yok değil yapışkan biti ayarlanmamış ( o+w, -t).

Stephano Palazzo at üzerinde Ask Ubuntu farklı özellik renkleri içinde bu çok öğretici bir resim yaptı:

Terminalde farklı renklerin anlamı

Terdon'un belirttiği gibi , renk ayarları ile değiştirilebilir dircolors. Farklı renklendirme ayarlarının bir listesine ile erişilebilir dircolors --print-database.

Her çıktı satırı, örneğin BLK 40;33;01:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
  • TARGET renklendirme kuralı için hedefi belirtir

  • TEXT_STYLE metin stilini gösterir:

    • 00 = yok
    • 01 = kalın
    • 04 = alt çizgi
    • 05 = göz kırpma
    • 07 = geri
    • 08 = gizli
  • FOREGROUND_COLOR ön plan rengini gösterir:

    • 30 = siyah
    • 31 = kırmızı
    • 32 = yeşil
    • 33 = sarı
    • 34 = mavi
    • 35 = eflatun
    • 36 = camgöbeği
    • 37 = beyaz
  • BACKGROUND_COLOR arka plan renklerini gösterir:

    • 40 = siyah
    • 41 = kırmızı
    • 42 = yeşil
    • 43 = sarı
    • 44 = mavi
    • 45 = eflatun
    • 46 = camgöbeği
    • 47 = beyaz

Sağdan başlayarak alanlar atlanabilir, bu nedenle örneğin .tar 01;31koyu ve kırmızı anlamına gelir.

XTerm ve diğer birçok modern terminal emülatörü, 256 rengi destekler.

XTerm 256 renkli ön plan renk kodu şu şekildedir:

38;5;[FOREGROUND_COLOR]

XTerm 256 renkli bir arka plan renk kodu şu şekildedir:

48;5;[BACKGROUND_COLOR]

burada her ikisi de FOREGROUND_COLORve BACKGROUND_COLORbir sayı aralığı 0-255 olup. 16 ve 256 renk modu için renk kodlarının tam listesi aşağıdaki ekran görüntüsünde gösterilmiştir:

16 ve 256 renk modu renk kodları


5
BACKGROUND_COLOR kodları, FOREGROUND_COLOR ile aynı değildir; Arka plan kodları 40-47
Ryan V. Bissell

38;5;xterm 256 renkli ön plan renk kodunu başlatır . 48;5;xterm 256 renkli arka plan renk kodunu başlatır. Dircolors çıktığımda Cyan , sonucun aynı olmasına rağmen 38;5;51 değil 36 .
stevesliva

1
@stevesliva: Yorumunuz için teşekkür ederiz. Arka plan renk kodlarını doğru şekilde belirtmek için cevabı düzenledim ve 256 renk ön plan ve arka plan renk kodlarını tanımladım.
Thomas Nyman

55

Renkleri lsizinleri temsil edebilir, bazı sistemler için varsayılan değerler yeşil arka plana sahip herkesin yazma izni olan dizinleri göstermektir:

görüntü tanımını buraya girin

$LS_COLORSDeğişkeninizi dircolors(from man ls) kullanarak düzenleyerek renkleri değiştirebilirsiniz :

   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.

Sözdizimi kuşkusuz burada sinir bozucudur, ancak bu rengi istediğiniz renklerle bir dosya oluşturarak ve aşağıdaki gibi kaydederek değiştirebilirsiniz ~/.dircolors:

dircolors -p > ~/.dircolors

Bu komut varsayılanları içine yazacaktır ~/.dircolors. Daha sonra bu dosyayı düzenlemeniz ve bu satırı değiştirmeniz gerekecektir:

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

Örneğin, kırmızı bir arka plan üzerinde siyah metin yapmak için (renk kodlarının bir listesi için buraya bakın ):

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

Tüm varsayılanlara sahip olmanıza gerek yoktur, yalnızca değiştirmek istediğiniz dosyayı yeniden tanımlayarak, tek satırlı bir dosya da oluşturabilirsiniz. Neyse, dosyayı oluşturduktan sonra, şununla yükleyin:

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

Ve burada eylemde:

görüntü tanımını buraya girin

Bunun otomatik olarak gerçekleşmesi için evalyukarıdaki komutu ~/.bashrcdosyanızı ekleyin .


8
Varsayılan renkler genellikle orijinal yazarın bizden ve gözlerimizden nefret ettiğini gösteriyor gibi görünüyor ...
kurtm

1
Teşekkürler. Neden bazen ~ / .dirname, bazen ~ / dircolors ve bazen ~ / .dircolors yazarsınız? aynı olması mı gerekiyordu?
Tim

Teşekkürler. Neden eval "$(dircolors ~/dircolors)";daha doğrudan bir yol yerine dircolors ~/dircolors?
Tim

@Tim, dircolors yalnızca ayarları yazdırdığından, okunması için değerlendirmeniz gerekir.
terdon

kim tarafından okunması için?
Tim

11

Tüm teknik cevaplar doğru olsa da, biraz gayri resmi bir uyarı olarak düşünürdüm, biraz cömertçe veya kopyalanan criss + cross haklarını reddetmişsin ... ?)

Siyah üzerine mavi yapmak nasıl ...?

Büyük olasılıkla istediğiniz haklara geri dönmek için iyi bir “daha ​​yeşil”:

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

En Eğer büyük harf + X bakınız yani “özel yürütme” amacını anlamak eğer, ne yaptığını anladı Vikipedi

Yalnızca '+' ile kullanıldığında ve genellikle normal dosyalar üzerinde (metin dosyaları gibi) normal dosyalarda (metin dosyaları gibi) yürütme izni olmadan grup veya başka bir dizin ağacına erişim izni vermek için -R seçeneğiyle birlikte kullanıldığında gerçekten kullanışlıdır. az önce "chmod -R a + rx ...


8

Aynı soruyu sordum, Terdon'un cevabı güzel ama dirname ile dircolors arasında bir karışıklık olduğunu düşünüyorum?

Her neyse, biraz daha araştırmadan sonra renkleri değiştirebilirim, bu yüzden çözümümü burada paylaşıyorum. Bir gün biri için yararlı olabilir!

Yani, 3 basit adım:

İlk olarak, terdon'un dediği gibi, varsayılan renkleri bir dosyaya kopyalayın.

dircolors -p > ~/.dircolors

Sonra bu dosyayı değiştirin. İçindeki renkler için bazı değerler bulabilirsiniz, fakat burada daha fazla buldum :)

Son olarak, ~/.bashrcbir terminal açtığınızda renklerin otomatik olarak yüklenmesini sağlamak için dosyanızı aşağıdaki satırı ekleyin :

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

Voilà :)


1
çünkü ~/.zshrcgitmek zorundaydım if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi. Maalesef satır sonu aweful
Eric D. Johnson

2

Sorunu hızla düzeltmek için, (diğer yazılabilir dosyaları nobg'de sarı yapın):

LS_COLORS+=':ow=01;33'

Değiştir 33tarafından 34nobg üzerinde mavi için. Daha da basit, nobg'de nofg yapmak için:

LS_COLORS+=:ow=

Değişikliğinizi kalıcı hale getirmek için bunu .profile dosyasına ekleyin:

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

LS_COLORS’un uzantı ile ilgili olmayan kurallarını görüntülemek için:

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

sedher kuralı bir satıra yerleştirir ve grepbaşından itibaren kuralları kaldır*.'.


lsTerminalinizdeki renkleri keşfetmek için , kullanmayı düşünün.

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.
}

Sonra

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

Bir başka cevapta belirtildiği gibi (Thomas Nyman’ınki), 38;5;ön plan x-terimi 256 renk ve 48;5;arka plan x-terimi 256 renk önekidir . 256 renk, tüm terminaller tarafından desteklenmiyor.

Ayrıca bkz . -Ls'de farklı renkler ne anlama geliyor? - AskUbuntu'da.


1

Bu, bunu çalıştırırsanız, bu klasörün izinleri olduğu anlamına gelir:

сhmod og-w AU_LI

bgcolor'u kaldıracak :)


0

Bunu düzeltmek için LS_COLORS üzerindeki ow parametresini deneyin.

Örneğin:

~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

görüntü tanımını buraya girin

Şimdi ow seçeneğini eklediniz

~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

görüntü tanımını buraya girin


0

Metni okunabilir hale getirmek için Macun'da yeşilin tonunu değiştirebilirsiniz.

Putty'i açın ve Window \ Colors'a gidin, "ANSI Yeşil" i seçin, daha koyu bir yeşile ayarlayın (R: 0 G: 70 B: 0).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.