Konsolda ls bulunan dizinlerin rengini nasıl değiştiririm?


165

Konsolumda dizinlerin rengi o kadar mavi ki koyu bir arka planda okunması zor.

İçin renk tanımlarını nasıl değiştirebilirim ls?

Yanıtlar:


250

Dizin renklerinizi değiştirmek için ~/.bashrcdosyanızı düzenleyicinizle açın

nano ~/.bashrc

ve dosyanın sonunda aşağıdaki girişi yapın:

LS_COLORS=$LS_COLORS:'di=0;35:' ; export LS_COLORS

Bazı güzel renk seçenekleri (bu durumda 0;35mor renkte):

Blue = 34
Green = 32
Light Green = 1;32
Cyan = 36
Red = 31
Purple = 35
Brown = 33
Yellow = 1;33
Bold White = 1;37
Light Grey = 0;37
Black = 30
Dark Grey= 1;30

İlk sayı stildir (1 = kalın), ardından noktalı virgül ve ardından rengin gerçek sayısı, olası stiller (efektler):

0   = default colour
1   = bold
4   = underlined
5   = flashing text (disabled on some terminals)
7   = reverse field (exchange foreground and background color)
8   = concealed (invisible)

Olası arka planlar:

40  = black background
41  = red background
42  = green background
43  = orange background
44  = blue background
45  = purple background
46  = cyan background
47  = grey background
100 = dark grey background
101 = light red background
102 = light green background
103 = yellow background
104 = light blue background
105 = light purple background
106 = turquoise background
107 = white background

Mümkün olan tüm renkler:

31  = red
32  = green
33  = orange
34  = blue
35  = purple
36  = cyan
37  = grey
90  = dark grey
91  = light red
92  = light green
93  = yellow
94  = light blue
95  = light purple
96  = turquoise
97  = white

Bunlar bile birleştirilebilir, öyle ki bir parametre:

di=1;4;31;42

LS_COLORS değişkeninizde dizinlerin yeşil arka plana sahip kalın altı çizili kırmızı metinlerle görünmesini sağlar!

Terminalinizde tüm bu renkleri ve stilleri test etmek için şunlardan birini kullanabilirsiniz:

for i in 00{2..8} {0{3,4,9},10}{0..7}
do echo -e "$i \e[0;${i}mSubdermatoglyphic text\e[00m  \e[1;${i}mSubdermatoglyphic text\e[00m"
done

for i in 00{2..8} {0{3,4,9},10}{0..7}
do for j in 0 1
   do echo -e "$j;$i \e[$j;${i}mSubdermatoglyphic text\e[00m"
   done
done

Ls komutunu kullanırken her bir tür ile tanımlayarak diğer dosya türlerini de değiştirebilirsiniz:

bd = (BLOCK, BLK)   Block device (buffered) special file
cd = (CHAR, CHR)    Character device (unbuffered) special file
di = (DIR)  Directory
do = (DOOR) [Door][1]
ex = (EXEC) Executable file (ie. has 'x' set in permissions)
fi = (FILE) Normal file
ln = (SYMLINK, LINK, LNK)   Symbolic link. If you set this to ‘target’ instead of a numerical value, the color is as for the file pointed to.
mi = (MISSING)  Non-existent file pointed to by a symbolic link (visible when you type ls -l)
no = (NORMAL, NORM) Normal (non-filename) text. Global default, although everything should be something
or = (ORPHAN)   Symbolic link pointing to an orphaned non-existent file
ow = (OTHER_WRITABLE)   Directory that is other-writable (o+w) and not sticky
pi = (FIFO, PIPE)   Named pipe (fifo file)
sg = (SETGID)   File that is setgid (g+s)
so = (SOCK) Socket file
st = (STICKY)   Directory with the sticky bit set (+t) and not other-writable
su = (SETUID)   File that is setuid (u+s)
tw = (STICKY_OTHER_WRITABLE)    Directory that is sticky and other-writable (+t,o+w)
*.extension =   Every file using this extension e.g. *.rpm = files with the ending .rpm

Bigsoft'ta daha eksiksiz bir liste var - LS_COLORS Konfigürasyonu .

Bazı dağıtımlarda, arkaplan rengini ow"( OTHER_WRITABLE) varsayılanı okunamayan" olan arka plan rengini , örneğin yeşil zemin üzerine koyu mavi olmayan bir metne değiştirmek isteyebilirsiniz .

Dosyanızın LS_COLORS="$LS_COLORS:di=1;33"sonunda, örneğin .bashrcsiyah arka plan üzerine güzel, okunaklı, koyu bir turuncu metin almak için kullanabilirsiniz.

.Bashrc dosyanızı değiştirdikten sonra, değişiklikleri uygulamak için kabuğunuzu yeniden başlatmanız veya çalıştırmanız gerekir source ~/.bashrc.

Not: Örneğin, iki nokta üst üste ile daha fazla komut birleştirebilirsiniz.

LS_COLORS=$LS_COLORS:'di=1;33:ln=36' ; export LS_COLORS; ls

Kaynak:


3
Bu iyi çalışıyor, teşekkürler. Ben şahsen daha iyi buldum LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORShangi dizinde mavi arka plan üzerinde koyu beyaz dizinleri gösterir.
isapir

2
Bu benim için çalışmıyor gibi görünüyor. Üzerine yazan bir yerde başka bir yapılandırma dosyası var gibi görünüyor .bashrc- bazı renkler çalışıyor, diğerleri farklı görünüyor. Klasörler mavi yerine örneğin yeşil, ancak dosyalar doğru görünüyor. Ne olabilirdi?
Nearoo

1
bash veya sh kullanıp kullanmadığınızı ve ana klasörünüzdeki .profile dosyanızı kontrol edin. ve küresel/etc/bash.bashrc
rubo77

5
Muhtemelen diğer yazılabilir ve yapışkan diğer yazılabilir kirleri değiştirmek istersiniz. Gibi bir şey daha deneyinLS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
Charles L.

2
ls için işe yaradı, ancak cmd komut satırındaki # işaretinden önce bulunduğum dizinin rengini nasıl değiştiririm?
Gaia

31

Çok basit. Bu üç satırı ~ / .bashrc dosyasına ekleyin.

$ vi ~/.bashrc
export LS_OPTIONS='--color=auto'
eval "$(dircolors -b)"
alias ls='ls $LS_OPTIONS'

Değişiklikleri çalışan bir bash oturumunda uygulamak istiyorsanız, şunu çalıştırın:

source ~/.bashrc

4
Bu benim için çalışan tek şey.
solalito,

Benim için işe yaradı, ancak source ~/.bashrcher giriş yaptığımda kaçmam gerekiyor. Bunu düzeltmenin bir yolu var mı?
Miguel,

@Miguel: echo $SHELLcmd isteminden yazdığınızda ne alıyorsunuz ? Eminim öyle değildir /bin/bash. Etkininizi bulabilir .profileya da sonunda .loginekleyebilirsiniz source $HOME/.bashrc. İyi şanslar.
Mart’ta


3

Hegazi'nin cevabına ek olarak, dircolors komutunu kullanarak dizin rengini ve diğer birçok rengi kontrol edebilirsiniz. İyi belgelendirilmiş bir yapılandırma dosyası oluşturabilirsiniz.

Giriş dizininizde aşağıdaki gibi bir .dircolor dosyası oluşturabilirsiniz:

dircolors -p > ~/.dircolors

Sonra ~ / .bashrc dosyanıza satırları ekleyin

eval "`dircolors -b ~/.dircolors`"
alias ls='ls --color=auto'

Bu bash için bir $ LS_COLORS değişkeni yaratacaktır. Csh için -c bayrağı belirlenir. Ayrıca ls komutunu renkli olarak görüntülemek için işaretler.

Dizinin rengini (veya diğer renkler için dahil olan diğer dosya türlerinden herhangi birini) değiştirmek için ~ / .dircolor dosya rengindeki DIR özniteliğinin değerini düzenleyin. Ayrıca, belirli dosyaların renklerini değiştirebilir veya kendinizinkini tanımlayabilirsiniz.


2

Bu --color=autoseçenek benim için Mac'imde iTerm2 kullanarak çalışmıyor. -GSeçenek olsa çalışır. Aşağıdaki takma adı benim dizime koydum ~/.profileve şimdi dizinler renkli ve sonunda bir iz /bırakıyor:

alias ls='ls -F -G'

Bunun nedeni BSD'nin kullandığı ve coreutils'in olmadığı :)
Meeh

0

Sık kullanılan seçeneklerle ls komutunu benim yaklaşımım:

aşağıdaki satırları ~ / .alias adlı bir dosyaya ekleyin.

alias ll='ls -lhF --color=auto'
alias llt='ls -lht --color=auto'
alias lla='ls -alF --color=auto'
alias la='ls -A --color=auto'
alias l='ls -CF --color=auto'
alias ls="ls --color=auto"

~ / .bashrc içine aşağıdaki satırları ekleyin

if [ -f ~/.alias ]; then
    . ~/.alias
fi

4
Yalnızca eklemem gerekiyor --color=autoiçin lstakma - devralır ile diğer takma adlar ayarı
Stuart Cardall
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.