it-swarm-tr.com

Ls’deki farklı renkler ne anlama geliyor?

Ubuntu'nun ls komutundaki farklı renkler ne anlama geliyor? Örneğin, klasörlerimden birine ls komutunu yazdığımda, dosyalardan birini açık yeşil renkte, diğerini (bir klasördür) yeşil renkte vurgulayarak alıyorum.

Bu renkler ne anlama geliyor ve tüm renkler hakkında herhangi bir kılavuz var mı?

355
Rafid
  • Mavi : Dizin
  • Yeşil : Yürütülebilir veya tanınan veri dosyası
  • Sky Blue : Sembolik bağlantı dosyası
  • Siyah arka plana sahip sarı : Aygıt
  • Pembe : Grafik resim dosyası
  • Kırmızı : Arşiv dosyası
  • Siyah arkaplanlı kırmızı : Kırık link

Bilginize:

  • Rengi kapatmak için, aşağıdaki satırları _.bashrc_ içinde yorumlamanız gerekir.

    _# 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 text

Not:

384
karthick87

_$LS_COLORS_ değişkenine bakarak ls'ın hangi renkleri kullandığını bulabilirsiniz:

  • Turkuaz: ses dosyaları1
  • Parlak Kırmızı: Arşivler ve sıkıştırılmış dosyalar2
  • Mor: resimler ve videolar3

Ek olarak, dosyalar niteliklere göre renklendirilir:

alt text


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

  2. katran, tz, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, ağ, Hayvanat bahçesi, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tg, xbm, xpm, tf, tiff, pv, 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 _dircolors --print-database_ çıktısında bulunur, 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. Ve terminalinizi _\33[_ komutuyla çıkarıp ve m ile sonlandırarak renkli yazdırmasını sağlarsınız. Onaltılık sayıdaki 33 veya 1B, ASCII işareti "ESCAPE" (ASCII karakter kümesinde özel bir karakterdir). Örnek:

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

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

ls komutu, _--color=auto_ (Ubuntu'da, ls argümanı ile) __ komutu, _ls --color=auto_ için bir takma addır, tüm dosya adlarından geçer ve önce farklı türlerle eşleşmeye çalışır, Executable , Boru ve benzeri. 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.

97
Stefano Palazzo

dircolors (_echo $LS_COLORS_ ayrıca çalışır) komut satırından yazarsanız, 1 satırdaki birçok dosya türü için kodların ve renklerin bir listesini alırsınız. _dircolors --print-database_, bir kerede 1 satır gösterir. İşte kısa bir liste (en önemlileri koymak çalıştım). En altta, 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 şeyler olmalı. 
 FILE 00 # normal dosya 
 DIR 01; 34 # dizini 
 LINK 01; 36 # sembolik bağlantı . (Bunu 
 # Sayısal bir değer yerine 'hedef' olarak ayarlarsanız, renk, işaret ettiği dosyaya benzer.) 
 FIFO 40; 33 # pipe 
 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 bir dosyaya veya statik olmayan bir dosyaya sembolik bağlantı 
 SETUID 37; 41 # dosya setuid (u + s) 
 SETGID 30; 43 # setgid (g + s) 
 STICKY_OTHER_WRITABLE 30; 42 # dir, yapışkan ve yazılabilir (+ t, o + w) 
 OTHER_WRITABLE 34; 42 # dir o + w) ve yapışkan değil 
 STICKY 37; 44 # yapışkan bit seti (+ t) ve diğer yazılabilir olmayan 
 # arşiv veya sıkıştırılmış (parlak kırmızı) 
 .tar 01; 31 
. tgz 01; 31 
 # resim formatı 
. jpg 01; 35 
. jpeg 01; 35 
. gif 01; 35 
. Bmp 01; 35 
 # Ses formatı 
. Aac 00; 36 
. Flac 00; 36 
. Ogg 00; 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, _*.ogg_ ve _.mp3_ - _bold Magenta_ olarak ayarlar. Ve eğer onu _.bashrc_ dosyasına koyarsanız kalıcı hale gelecektir.

27
Rinzwind

Bu genişler Karthick87'nin cevabı .


Varsayılan ayar ile

  • Renksiz (beyaz) : dosya veya dosya adı olmayan metin (örneğin, ls -l çıktısındaki izinler)
  • Koyu mavi : dizin
  • Kalın mavi : sembolik bağlantı
  • Koyu yeşil : yürütülebilir dosya
  • Koyu kırmızı : arşiv dosyası
  • Kalın Macenta : resim dosyası, video, grafik vb. veya kapı veya soket
  • Mavi : ses dosyası
  • Siyah arka plana sahip sarı : boru (AKA FIFO)
  • Siyah arka plana sahip koyu sarı : aygıtı engelle veya karakter aygıtı
  • Siyah arkaplanlı koyu kırmızı : Yetim symlink 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 : özelliğine sahip dosya
  • Mavi arka plana sahip beyaz : yapışkan dizin
  • Yeşil arka plana sahip mavi : diğer yazılabilir 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 screenshot

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

gnome-terminal screenshot

dircolors -p ve man dir_colors 'dan açıklamaları aldım ve boşlukları kendi araştırmamla doldurdum.

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

22
wjandrea

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.

Geçerli renk kodunuzu görmek için dircolors -p |less yazın.

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 dircolors çıktısını .dircolor'a dökerek bu komutu kullanarak başlayabilirsiniz. dircolors -p > ~/.dircolors

Alternatif: seebi'nin solarized projesinden benzer bir 256 renk dircolor seç.

Bu en düşük komut dosyasını alın ve tüm renkleri bir kerede görebilmeniz için colortest -w komutuyla çalıştırın. 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

Sonraki seçim, metin renginizi 00; 38; 5; olarak belirtmek için bu özellik koduna ;38;5; ekleyin. ve sonra renginizi ekleyin. 208'i seçtim, böylece 00;38;5;208 alacağım.

Üzerine bir arka plan da koymak istiyorsanız, en son komut dosyasıyla bir başka renk seçin (diyelim 56) ve arka plan için ;48;5; ekleyin ve arka plan için 56 [toplamın 00;38;5;208;48;5;56 dizesini olması için 56 ekleyin. .

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

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

Bu hemen uygulanmayacak, config'i yüklemeniz gerekecek. LS_COLORS değişkeninizi ayarlamak için alma kodunda dircolors ~/.dircolors kullanın. Bunu terminal oturumunuza yapıştırabilir veya terminalinizi kapatabilir ve yeniden açabilirsiniz. Bunu bir dosyaya bağlayıp Shell komut dosyası olarak da ç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 'e notları ve kodları için teşekkürler.

18
flickerfly