Ls’deki farklı renkler ne anlama geliyor?


364

Ubuntu'nun lskomutundaki farklı renkler ne anlama geliyor? Örneğin, lskomutları klasörlerimden birine yazdığımda, dosyalardan birini açık yeşil renkte, diğerini (bir klasör olan) yeşil renkte vurgulayarak alırım.

Bu renkler ne anlama geliyor ve tüm renkler hakkında bir el kitabı var mı?

Yanıtlar:


391
  • Mavi : Dizin
  • Yeşil : Yürütülebilir veya tanınan veri dosyası
  • Sky Blue : Sembolik bağlantı dosyası
  • Siyah arka plana sahip sarı : Cihaz
  • Pembe : Grafiksel görüntü dosyası
  • Kırmızı : Arşiv dosyası
  • Siyah arka plana sahip kırmızı : Kırık link

Bilginize:

  • Rengi kapatmak için aşağıdaki satırları yorumlamanız gerekir .bashrc.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • Ayrıca, kendi bash renk anlamlarınızı görmek istiyorsanız, aşağıdaki kodları terminalinize kopyalayın / yapıştırın.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
    {      
      IFS=:     
      for i in $LS_COLORS     
      do        
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
      done       
    } 

    Çıktı:
    alt metin

Not:


28
Yani evalher türü için çıkış renk gösterimi gösteren komut parlak ... teşekkürler!
Russ

2
Saf ekşi;)
Homunculus Reticulli

5
Bu evalbetiğin daha okunabilir bir sürümü burada: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh
Gautam

3
Kırmızı aynı zamanda ölü bir sembolik bağlantıdır.
Thomas Ward

1
normal beyaz metinlerdeki dosyalar ne olacak?
S. ..

98

Değişkene lsbakarak hangi renklerin kullanıldığını bulabilirsiniz $LS_COLORS:

  • Turkuaz: ses dosyaları 1
  • Parlak Kırmızı: Arşivler ve sıkıştırılmış dosyalar 2
  • Mor: görüntüler ve videolar 3

Ek olarak, dosyalar niteliklere göre renklendirilir:

alt metin


  1. aac, au, flac, orta, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. katran, tgz, arj, taz, lzh, lzma, tlz, txz, zip, z, Z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, kavanoz, rar, as, hayvanat bahçesi, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tg, xbm, xpm, xp, tif, tiff, png, svg, svg, mv, mpv, mp, mp mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, ogx.


Tüm bu bilgiler çıktısında bulunur dircolors --print-database, ancak biçimlendirmesi oldukça okunaksızdır.

İşte neler olduğuna dair teknik bir açıklama:

Örnek:

CHR 40;33;01

Renk kodu üç bölümden oluşur:

  • Noktalı virgülten önceki ilk bölüm metin stilini gösterir.

    • 00 = yok, 01 = kalın, 04 = alt çizgi, 05 = yanıp sönme, 07 = geri, 08 = gizlenmiş.
  • İkinci ve üçüncü bölüm, renk ve arka plan rengidir:

    • 30 = siyah, 31 = kırmızı, 32 = yeşil, 33 = sarı, 34 = mavi, 35 = macenta, 36 = mavi, 37 = beyaz.

Her bölüm, soldan başlayarak varsayılarak çıkarılabilir. yani "01" kalın, "01; 31" kalın ve kırmızı anlamına gelir. Talimattan kaçırarak \33[ve onu sonlandırarak terminalinizin renkli yazdırmasını sağlayabilirsiniz m. 33 veya onaltılık 1B, ASCII işareti "ESCAPE" (ASCII karakter kümesinde özel bir karakter). Örnek:

"\33[1;31mHello World\33[m"

"Merhaba Dünya" yı parlak kırmızı renkte yazdırır.

lsArgümanlı komut --color=auto(Ubuntu'da lsbir takma addır ls --color=auto) tüm dosya isimlerinden geçer ve önce Executable, Pipe ve benzeri gibi farklı türlerle eşleşmeye çalışır. Daha sonra * .wav gibi normal ifadeleri eşleştirmeye çalışır ve sonuçta ortaya çıkan dosya adını bash için renk değiştirme talimatlarında içerir.


Teşekkürler! Git topoloji görselleştirme sorusuna bakıyordum ve bazı karakterlerin neden basıldığını merak ediyordum.
pdp

27

Eğer yazarsanız dircolors( echo $LS_COLORSkomut satırından da kullanılabilir) Eğer 1 doğrultusunda filetypes için bolca kodları ve renklerin bir listesini alacak. dircolors --print-databasebir kerede 1 satır gösterir. İşte kısa bir liste (en önemlileri koymak çalıştım). Alt kısımda, her satırın sonundaki farklı kodların neyi temsil ettiği hakkında bir açıklama var:

NORMAL 00 # global varsayılan, her şey bir şey olmalı, ancak.
DOSYA 00 # normal dosya
DIR 01; 34 # dizini
LINK 01; 36 # sembolik bağlantı. (Bunu bir hedef yerine 'hedef' olarak ayarlarsanız
 # sayısal değer, rengin işaret ettiği dosya gibidir.)
FIFO 40; 33 # boru
SOCK 01; 35 # soket
KAPI 01; 35 # kapı
BLK 40; 33; 01 # blok aygıt sürücüsü
CHR 40; 33; 01 # karakter aygıt sürücüsü
ORPHAN 40; 31; 01 # varolmayan dosyaya veya statik olmayan dosyaya sembolik bağlantı
SETUID 37; 41 # dosya setuid (u + s)
SETGID 30; 43 # ayarlanan dosya (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir, yapışkan ve yazılabilir (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir, diğer şekilde yazılabilir (o + w) ve yapışkan değildir
STICKY 37; 44 # Yapışkan bit setiyle (+ t) ve diğer yazılabilir değil
# arşiv veya sıkıştırılmış (parlak kırmızı)
.tar 01; 31
.tgz 01; 31
# resim formatları
.jpg 01; 35
Jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# ses formatı
aac 00; 36
.flac 00; 36
05; 36
  • Özellik kodları: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Metin renk kodları: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Arka plan renk kodları: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Burada bununla oynamak istiyorsanız, bir dosya için rengin nasıl ayarlanacağına bir örnektir:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Bu *.oggve .mp3olacak bold magenta. Ve eğer onu .bashrcdosyanıza koyarsanız kalıcı hale gelecektir.


2
Hey belki başka biri daha iyi bir cevapla gelir. Btw bu beni oyla 15k bitti;)
Rinzwind 14:11

devam et! Orada kendini var ... Tekrar teşekkürler olsa, ben emin renklerin bazı yukarı aramak için / "string" yaptığım
user784637

Tarihleri ​​merak ediyorsanız, bu (mükemmel) cevap birleştirildi . :-)
Stefano Palazzo

@ Rinzwind, böylece pdfdosya için bir renk ayarlamak , işlem kullanmaktır export? Varsayılan LS_COLORS değişkene bir uzantı eklemek mümkün mü ?
Sigur

23

Bu Karthick87'nin cevabını genişletiyor .


Varsayılan ayar ile

  • Renksiz (beyaz) : dosya veya dosya adı olmayan metin (örneğin çıktıdaki izinler ls -l)
  • Koyu mavi : dizin
  • Kalın mavi : sembolik bağlantı
  • Koyu yeşil : yürütülebilir dosya
  • Koyu kırmızı : arşiv dosyası
  • Koyu kırmızı : resim dosyası, video, grafik vb. Veya kapı veya soket
  • Camgöbeği : ses dosyası
  • Siyah arka plana sahip sarı : boru (AKA FIFO)
  • Siyah arka plan ile koyu sarı : blok veya karakter cihazı
  • Siyah arka plan ile koyu kırmızı : yetim sembolik bağlantı veya eksik dosya
  • Kırmızı arka plana sahip renksiz : set-user-ID dosyası
  • Sarı arka plana sahip siyah : set-group-ID dosyası
  • Kırmızı arka plana sahip siyah : yeteneği olan dosya
  • Mavi arka plana sahip beyaz : yapışkan dizin
  • Yeşil arka plana sahip mavi : yazılabilir diğer dizin
  • Yeşil arka plana sahip siyah : yapışkan ve diğer yazılabilir dizin

Renkleri göstermek için komut dosyası

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

Varsayılan ayarlarla çıktı:

gnome-terminal ekran görüntüsü

Kurulumumla çıktı (özel dircolors ve özel Solarized terminal teması):

gnome-terminal ekran görüntüsü

Tanımları aldım dircolors -pve man dir_colorsaralarındaki boşlukları kendi araştırmamla doldurdum.

Renkler ve açıklamalar 14.04 ile 17.10 arasında aynıdır.


rsAnlamını RESET, mharaçlarını MULTIHARDLINK, caaraçlarını CAPABILITYvb. Nasıl bildin ?
Fredrick Gauss,

@ FredrickGauss Cevapta yazdığım gibi, kaçmak için açıklamalar aldım dircolors -p.
wjandrea

dircolors -pdemiyor rs ise 0 # reset "normal" renkli RESET .
Fredrick Gauss,

@ FredrickGauss Açıkça değil, ancak "RESET", "rs" olarak kısaltılabilecek tek renktir ve renk (0) eşleşir.
wjandrea

18

Buradaki cevapların hiçbiri Ubuntu'nun en son sürümlerinde 256 renk seçeneğini içermiyor. Renk yetersizliği yaşıyorum (bazı renkler bana yakın sıkıntı veriyor) bu yüzden siyah üzerindeki varsayılan mavi dizini okumam çok zor. Ardından bunu değiştirmek için yaptığım araştırma.

Tip dircolors -p |lessMevcut renk kodunu görmek için.

Varsayılan .bashrc, yalnızca sistem renk kodundan yararlanmak için değil, aynı zamanda ~ / .dircolors komutundan da yararlanacak şekilde yapılandırılmış olmalıdır, bu nedenle bu komutu kullanarak başlayabilmeniz için dircolors çıktısını .dircolor'a boşaltın. dircolors -p > ~/.dircolors

Alternatif: seebi'nin solarize edilmiş projesinden benzer bir 256 renkli dircolor seç .

Bu colortest betiğini alın ve komutla çalıştırın, colortest -wböylece tüm renkleri aynı anda görebilirsiniz. Bir renk seç. # 208 numaralı portakalı severim. Bunun metin rengi olmasını istiyorum, bu yüzden bu bilgiyi genişletilmiş renk kodlarında kullanarak uygulayabilirim.

Demek bir rengin var, şimdi ne. İlk önce dizgeyi yaratmalıyız.

İlk sayı, büyük olasılıkla 00 olan bir öznitelik kodu olacaktır, ancak yanıp sönmesini istiyorsanız 05 ile gidin:

Bir nitelik kodu seçin: 00 = yok 01 = kalın 04 = alt çizgi 05 = yanıp sönme 07 = geri 08 = gizli

Bir sonraki seçim ;38;5;, metin renginizi 00; 38; 5; ve sonra renginizi ekleyin. 208'i seçtim, böylece alıyorum 00;38;5;208.

Ayrıca üzerine bir arka plan koymak istiyorsanız, en son komut dosyası ve ;48;5;arka plan eki ile 56 ve rengin toplamı elde etmek için 56 ekleyelim 00;38;5;208;48;5;56.

Öyleyse şimdi anladın, onunla ne yapıyorsun?

vim ~/.dircolors ve "00; 38; 5; 208" yukarıda belirlediğimiz dizgiye (benim için DIR olan) değiştirmek istediğiniz bölümü bulun.

Bu hemen uygulanmayacak, config'i yüklemeniz gerekecek. Kullanın dircolors ~/.dircolorsdeğişken senin LS_COLORS ayarlamak için olsun koduna. Bunu terminal oturumunuza yapıştırabilir veya terminalinizi kapatabilir ve yeniden açabilirsiniz. Bunu bir dosyaya bağlayabilir ve bir kabuk betiği olarak çalıştırabilirsiniz.

Aynı işlemi 16 renkle yapabilirsiniz. Özel; 38; 5 veya; 48; 5 ürüne ihtiyacınız yoktur. Sadece sayıları dizgiye at ve sadeliğin tadını çıkar.

Dan ve seebi'ye notları ve kodları için teşekkürler .


Lütfen 256 rengin yalnızca xterm uyumlu terminallerde çalışıp çalışmadığını kontrol edin . Bu yüzden 256 renk benim için Konsole ile çalışmıyor, ancak xterm ve rxvt-unicode ile çalışıyor .
DK Bose

1
Konsole kendi işini yapar. Check out draculatheme.com/konsole veya techoverflow.net/2013/11/08/installing-konsole-solarized-theme güzel bir renk düzeni için.
flickerfly
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.