dircolors: sửa đổi cài đặt màu thế giới


40

Tôi hiểu lssử dụng dircolorsđể hiển thị đầu ra màu. dircolorscó cơ sở dữ liệu mặc định về màu sắc được liên kết với phần mở rộng tệp, có thể được in bằng lệnh

dircolors --print-database

Từ man dir_colorstôi đọc, cơ sở dữ liệu toàn hệ thống nên được đặt trong /etc/DIR_COLORS. Nhưng tệp này không tồn tại trên hệ thống của tôi (Debian). Làm cách nào tôi có thể sửa đổi cài đặt màu toàn hệ thống dircolors? Lệnh dircolors --print-databaselấy các cài đặt từ đâu, khi không có tệp nào tồn tại.

Tôi biết rằng người dùng có thể có tệp dành riêng cho người dùng ~/.dircolorsvới cài đặt của mình, nhưng điều này không phù hợp với tôi, vì tôi cần thay đổi cài đặt cho mọi người.

Một câu hỏi thứ hai là, liệu có thể sử dụng màu 8 bit cho màu sắc hay không. Thiết bị đầu cuối của tôi là xterm-256color.

Câu trả lời:


36

lslấy nó cài đặt màu từ biến môi trường LS_COLORS. dircolorschỉ đơn thuần là một cách thuận tiện để tạo biến môi trường này. Để biến môi trường này có hiệu lực trên toàn hệ thống, hãy đặt nó vào tệp khởi động của shell của bạn.

Đối với bash, bạn sẽ đặt cái này vào /etc/profile:

# `dircolors` prints out `LS_COLORS='...'; export LS_COLORS`, so eval'ing
# $(dircolors) effectively sets the LS_COLORS environment variable.

eval "$(dircolors /etc/DIR_COLORS)"

Đối với zsh, bạn sẽ đặt nó vào /etc/zshrchoặc sắp xếp zshđể đọc /etc/profilekhi khởi động. Phân phối của bạn có thể đã zshlàm điều đó rồi. Tôi chỉ đưa ra điều này để chỉ ra rằng thiết lập dircolorscho mọi người thực sự phụ thuộc vào vỏ họ sử dụng.

Về dircolorsphần cài đặt của nó từ đâu, khi bạn không chỉ định tệp, nó chỉ sử dụng một số giá trị mặc định dựng sẵn.

Bạn có thể sử dụng xtermmã thoát 256 màu trong tệp dircolors của mình, nhưng lưu ý rằng chúng sẽ chỉ hoạt động cho xtermcác thiết bị đầu cuối tương thích. Họ sẽ không làm việc trên bảng điều khiển văn bản Linux, ví dụ.

Định dạng cho mã thoát 256 màu là 38;5;colorNdành cho màu nền trước và 48;5;colorNmàu nền. Ví dụ:

.mp3  38;5;160                   # Set fg color to color 160      
.flac 48;5;240                   # Set bg color to color 240
.ogg  38;5;160;48;5;240          # Set fg color 160 *and* bg color 240.
.wav  01;04;05;38;5;160;48;5;240 # Pure madness: make bold (01), underlined (04), blink (05), fg color 160, and bg color 240!

1
bạn có thể giải thích làm thế nào tôi có thể sử dụng mã thoát 256 màu không? Giả sử tôi muốn thay đổi cách sau .mp3 00;36để sử dụng color126 từ biểu đồ màu xterm-256, tải lên.wik.wik.org.org / wikipedia / en / 1/15 / XXm_256color_chart.svg
user1968963

1
Chắc chắn, xem chỉnh sửa của tôi.
Matt

8

Lệnh dircolors --print-databaselấy các cài đặt từ đâu, khi không có tệp nào tồn tại.

Theo hướng dẫn , nó sử dụng cơ sở dữ liệu được biên dịch trước trong trường hợp không có tệp.

Nếu tệp được chỉ định, dircolors đọc nó để xác định màu nào sẽ được sử dụng cho loại tệp và phần mở rộng. Mặt khác, một cơ sở dữ liệu được biên dịch trước được sử dụng. Để biết chi tiết về định dạng của các tệp này, hãy chạy ' dircolors --print-database'.

Để thay đổi cài đặt cho mọi người, bạn có thể tạo một /etc/dircolorstệp và thêm các mục sau vào /etc/bashrc:

d=/etc/dircolors
test -r $d && eval "$(dircolors $d)"

7

Linux thiết lập màu nền của bàn điều khiển với các màu:

Tệp dircolors của bạn kiểm soát màu sắc cho các từ xuất hiện thông qua ls trên bảng điều khiển. Tìm .dircolorstệp này để phân phối của bạn, một liên kết để giúp:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/profile.html

Đối với tôi trên Fedora 17, tệp dircolors của tôi là: /etc/DIR_COLORS

Sao chép /etc/DIR_COLORSvào /home/el/.dircolorsthư mục của bạn . Tạo nó nếu nó không tồn tại.

Chỉnh sửa /home/el/.dircolors, tìm văn bản "dir".

Thay đổi điều này:

DIR 01;34   # directory

Về điều này:

DIR 01;36   # directory

Lưu và đóng và khởi động lại vỏ. Các thư mục chuyển từ màu xanh đậm trên màu đen (không thể đọc được) sang màu sáng trên màu đen (có thể đọc được).


2
-1: không có /etc/DIR_COLORStrong bản phân phối của OP, Debian. Và anh ta đã biết ~/.dircolors, đó không phải là câu hỏi
MestreLion
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.