Làm cách nào để thay đổi màu cho các thư mục có ls trong bảng điều khiển?


166

Trên bảng điều khiển của tôi, màu sắc cho các thư mục là một màu xanh lam, rất khó đọc trên nền tối.

Làm thế nào tôi có thể thay đổi định nghĩa màu cho ls?

Câu trả lời:


250

Để thay đổi màu thư mục của bạn, hãy mở ~/.bashrctệp của bạn bằng trình chỉnh sửa của bạn

nano ~/.bashrc

và thực hiện các mục sau ở cuối tập tin:

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

Một số lựa chọn màu sắc đẹp (trong trường hợp 0;35này là màu tím) là:

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

Số đầu tiên là kiểu (1 = đậm), theo sau là dấu chấm phẩy và sau đó là số thực tế của màu, các kiểu có thể (hiệu ứng) là:

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)

Các nền tảng có thể:

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

Tất cả các màu có thể:

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

Chúng thậm chí có thể được kết hợp, sao cho một tham số như:

di=1;4;31;42

trong biến LS_COLORS của bạn sẽ làm cho các thư mục xuất hiện trong văn bản màu đỏ được gạch chân đậm với nền màu xanh lá cây!

Để kiểm tra tất cả các màu sắc và kiểu dáng trong thiết bị đầu cuối của bạn, bạn có thể sử dụng một trong:

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

Bạn cũng có thể thay đổi các loại tệp khác khi sử dụng lệnh ls bằng cách xác định từng loại với:

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

Một danh sách đầy đủ hơn có sẵn tại Bigsoft - Định cấu hình LS_COLORS .

Trên một số bản phân phối, bạn cũng có thể muốn thay đổi màu nền cho ow"( OTHER_WRITABLE) có mặc định là không thể đọc được", ví dụ như văn bản màu xanh không đậm trên nền màu xanh lá cây.

Bạn có thể sử dụng ví dụ LS_COLORS="$LS_COLORS:di=1;33"ở cuối .bashrctập tin của bạn , để có được một văn bản màu cam đậm dễ đọc trên nền đen.

Sau khi bạn thay đổi tệp .bashrc, để thay đổi có hiệu lực, bạn sẽ phải khởi động lại trình bao của mình hoặc chạy source ~/.bashrc.

Lưu ý: Bạn có thể kết hợp nhiều lệnh hơn với dấu hai chấm , ví dụ:

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

Nguồn:


3
Điều này hoạt động tốt, cảm ơn. Cá nhân tôi thấy tốt hơn để thiết lập LS_COLORS=$LS_COLORS:'di=1;44:' ; export LS_COLORScác thư mục hiển thị màu trắng đậm trên nền màu xanh.
isapir

2
Điều này dường như không làm việc cho tôi. Dường như có một tệp cấu hình khác ở đâu đó ghi đè lên .bashrc- một số màu hoạt động, một số màu khác trông khác. Các thư mục có màu xanh lá cây thay vì màu xanh lam, nhưng các tệp trông chính xác. Nó có thể là gì?
Nearoo

1
kiểm tra xem bạn đang sử dụng bash hay sh, đồng thời kiểm tra tệp .profile của bạn trong thư mục chính của bạn. và toàn cầu/etc/bash.bashrc
rubo77

5
Bạn có thể muốn sửa đổi các dir khác có thể ghi và dính khác. Hãy thử một cái gì đó giống nhưLS_COLORS=$LS_COLORS:'tw=01;35:ow=01;35:' ; export LS_COLORS
Charles L.

2
đã làm việc cho ls, nhưng làm cách nào để thay đổi màu của thư mục tôi đang ở, trước dấu nhắc # trong cmd?
Gaia

31

Rất đơn giản. Thêm ba dòng này vào ~ / .bashrc

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

Nếu bạn muốn áp dụng các thay đổi trong phiên bash đang chạy, hãy chạy:

source ~/.bashrc

4
Đây là điều duy nhất làm việc cho tôi.
solalito

Nó hoạt động với tôi nhưng tôi cần chạy source ~/.bashrcmỗi lần đăng nhập. Có cách nào khắc phục vấn đề này không?
Miguel

@Miguel: bạn nhận được gì khi gõ echo $SHELLtừ dấu nhắc cmd? Tôi cá là KHÔNG /bin/bash. Bạn có thể tìm thấy hoạt động của bạn .profilehoặc .loginvà thêm source $HOME/.bashrcvào cuối. Chúc may mắn.
shellter

4

LS_COLORS

Đây là một bộ sưu tập các phần mở rộng: ánh xạ màu, phù hợp để sử dụng làm biến môi trường LS COLORS của bạn.


1
thú vị nhưng tôi không thể làm việc này trong ksh.
Herman Toothrot 17/8/2016

4

Hơn nữa với câu trả lời của Hegazi, bạn thực sự có thể kiểm soát màu thư mục và rất nhiều màu khác bằng cách sử dụng lệnh dircolors. Bạn có thể tạo một tập tin cấu hình được ghi lại tốt.

Bạn có thể tạo một tệp .dircolor trong thư mục chính của bạn như sau:

dircolors -p > ~/.dircolors

Sau đó, trong tệp ~ / .bashrc của bạn thêm dòng

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

Điều này sẽ tạo ra biến $ LS_COLORS cho bash. Cờ -c sẽ đặt nếu cho csh. Nó cũng gắn cờ lệnh ls để hiển thị màu.

Chỉnh sửa giá trị của thuộc tính DIR như trên trong màu tệp ~ / .dircolor để thay đổi màu của thư mục (hoặc bất kỳ loại tệp nào được bao gồm cho các màu khác). Bạn cũng có thể thay đổi màu sắc của các tệp cụ thể hoặc xác định màu của riêng bạn.


2

Các --color=autotùy chọn không làm việc cho tôi sử dụng iTerm2 trên máy Mac của tôi. Các -Gtùy chọn hoạt động mặc dù. Tôi đặt các bí danh sau trong các thư mục của tôi ~/.profilevà bây giờ được tô màu và có thêm một dấu vết /:

alias ls='ls -F -G'

Đó là vì đó là BSD utils chứ không phải coreutils :)
Meeh

0

Cách tiếp cận của tôi đối với lệnh ls với các tùy chọn thường được sử dụng:

thêm các dòng sau vào một tệp có tên ~ / .alias

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"

thêm các dòng sau vào ~ / .bashrc

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

4
bạn chỉ cần thêm --color=autovào lsbí danh - các bí danh khác với kế thừa cài đặt
Stuart Cardall
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.