Có hai thư mục được hiển thị bởi 'ls'. Thông thường thư mục bất cứ nơi nào có màu xanh trên nền đen. Nhưng cái đầu tiên là màu xanh trên màu xanh lá cây và không thể đọc được. Tại sao lại thế này? Làm thế nào để làm cho nó có màu xanh trên nền đen, hoặc ít nhất là một cái gì đó sáng trên một cái gì đó tối?
Đây là trên Ubuntu 12.04, sử dụng bash trong Gnome Terminal. Trong Konsole, màu xanh hơi đậm hơn và có thể đọc được, mặc dù có thể tốt hơn.
Ngoài các tệp màu dựa trên loại của chúng (màu ngọc lam cho tệp âm thanh, màu đỏ sáng cho Lưu trữ và tệp nén và màu tím cho hình ảnh và video), ls
cũng tô màu các tệp và thư mục dựa trên thuộc tính của chúng:
o+w, +t
).o+w, -t
).Stephano Palazzo tại Hỏi Ubunt đã tạo ra bức tranh rất hướng dẫn này qua các màu thuộc tính khác nhau:
Như terdon chỉ ra, cài đặt màu có thể được sửa đổi thông qua dircolors
. Có thể truy cập danh sách các cài đặt màu khác nhau bằng dircolors --print-database
.
Mỗi dòng đầu ra, chẳng hạn như BLK 40;33;01
, có dạng:
[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR]
TARGET
chỉ ra mục tiêu cho quy tắc tô màu
TEXT_STYLE
biểu thị kiểu văn bản:
00
= không01
= đậm04
= gạch dưới05
= nháy mắt07
= đảo ngược,08
= che giấuFOREGROUND_COLOR
chỉ ra màu nền trước:
30
= đen31
= đỏ32
= xanh33
= màu vàng34
= màu xanh,35
= Đỏ tươi36
= lục lam37
= trắngBACKGROUND_COLOR
cho biết màu nền:
40
= đen41
= đỏ42
= xanh43
= màu vàng44
= màu xanh,45
= Đỏ tươi46
= lục lam47
= trắngCác trường có thể được bỏ qua bắt đầu từ bên phải, vì vậy, ví dụ .tar 01;31
có nghĩa là đậm và đỏ.
XTerm và hầu hết các trình giả lập thiết bị đầu cuối hiện đại khác hỗ trợ 256 màu.
Mã màu tiền cảnh 256 màu của XTerm có dạng:
38;5;[FOREGROUND_COLOR]
Mã màu nền 256 màu của XTerm có dạng:
48;5;[BACKGROUND_COLOR]
cả hai FOREGROUND_COLOR
và BACKGROUND_COLOR
là một số trong phạm vi 0-255. Danh sách đầy đủ các mã màu cho chế độ 16 và 256 được hiển thị trong ảnh chụp màn hình bên dưới:
Màu sắc của ls
có thể đại diện cho các quyền, mặc định cho một số hệ thống là hiển thị các thư mục nơi mọi người đều có quyền ghi với nền màu xanh lá cây:
Bạn có thể thay đổi màu sắc bằng cách chỉnh sửa biến $LS_COLORS
Bằng cách sử dụng dircolors
(từ man ls
):
Using color to distinguish file types is disabled both by default and
with --color=never. With --color=auto, ls emits color codes only when
standard output is connected to a terminal. The LS_COLORS environment
variable can change the settings. Use the dircolors command to set it.
Cú pháp được thừa nhận là loại gây phiền nhiễu ở đây nhưng bạn có thể thay đổi màu này bằng cách tạo một tệp có màu bạn muốn và lưu nó dưới dạng ~/.dircolors
:
dircolors -p > ~/.dircolors
Lệnh đó sẽ in mặc định thành ~/.dircolors
. Sau đó, bạn sẽ cần chỉnh sửa tệp đó và thay đổi dòng này:
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
Ví dụ: để làm cho văn bản màu đen trên nền đỏ (xem tại đây để biết danh sách mã màu):
OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky
Bạn không cần phải có tất cả các giá trị mặc định, bạn cũng có thể chỉ cần tạo một tệp với một dòng duy nhất, xác định lại chỉ là tệp bạn muốn thay đổi. Dù sao, một khi bạn đã tạo tệp, tải nó bằng:
eval "$(dircolors ~/.dircolors)";
Và đây là hành động:
Để điều đó tự động xảy ra, hãy thêm lệnh eval
ở trên vào tệp ~/.bashrc
Của bạn.
Mặc dù tất cả các câu trả lời kỹ thuật là đúng, tôi sẽ coi đó là một cảnh báo không chính thức, rằng bạn đã bỏ quyền một chút để hào phóng hoặc sao chép criss + cross ... (hầu hết chúng ta đều làm, để mọi thứ hoạt động ban đầu, eh ?)
Làm thế nào để làm cho nó có màu xanh trên nền đen, ...?
Một tuyên bố tốt nhất để lấy lại các quyền mà bạn rất muốn, là tuyên bố này:
chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/
Hiểu rõ nhất những gì nó làm, nếu bạn hiểu mục đích của chữ hoa + X thực thi đặc biệt, tức là xem Wikipedia
Nó chỉ thực sự hữu ích khi được sử dụng với '+' và thường kết hợp với tùy chọn -R để cấp cho nhóm hoặc quyền truy cập khác vào cây thư mục lớn mà không đặt quyền thực thi trên các tệp thông thường (như tệp văn bản), điều này thường xảy ra nếu bạn vừa sử dụng "chmod -R a + rx ...
Tôi đã có cùng một câu hỏi, câu trả lời của terdon có hay không nhưng tôi nghĩ có sự nhầm lẫn giữa dirname và dircolors?
Dù sao, sau một số nghiên cứu sâu hơn tôi có thể thay đổi màu sắc, vì vậy tôi đang chia sẻ giải pháp của mình ở đây. Nó có thể hữu ích cho một số người một ngày nào đó!
Vì vậy, 3 bước đơn giản:
Đầu tiên, như terdon đã nói, sao chép các màu mặc định vào một tệp
dircolors -p > ~/.dircolors
Sau đó sửa đổi tập tin này. Bạn có thể tìm thấy một số giá trị cho màu sắc bên trong, nhưng tôi đã tìm thấy nhiều hơn tại đây :)
Và cuối cùng, thêm dòng sau vào tệp ~/.bashrc
Để màu được tự động tải khi bạn mở thiết bị đầu cuối:
eval 'dircolors ~/.dircolors' > /dev/null
Võngà :)
Để nhanh chóng khắc phục sự cố, (làm cho các tệp có thể ghi khác có màu vàng trên nobg):
LS_COLORS+=':ow=01;33'
Thay thế 33
bởi 34
cho màu xanh trên nobg. Thậm chí đơn giản hơn, để làm cho nó nofg trên nobg:
LS_COLORS+=:ow=
Để thay đổi vĩnh viễn, hãy thêm nó vào .profile của bạn:
echo "export LS_COLORS+=':ow=01;33'" >> ~/.profile
Để xem các quy tắc không liên quan đến tiện ích mở rộng của LS_COLORS:
echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
sed
đặt mỗi quy tắc trên một dòng và grep
xóa các quy tắc bắt đầu bằng *.'.
Để khám phá các màu ls
trên thiết bị đầu cuối của bạn, hãy xem xét sử dụng
C="$LS_COLORS"
function sc () {
echo "$LS_COLORS" | sed 's/:/\n/g' | grep -v '\*.'
}
function t () {
ls /mnt # Or the path to your example directory.
}
Sau đó
LS_COLORS="$C:ow=38;5;250;48;5;025";t
Như đã nêu trong một câu trả lời khác (của Thomas Nyman), 38;5;
là tiền tố cho 256 màu tiền cảnh và 48;5;
cho nền 256 màu hạn. Mặc dù vậy, 256 màu không được hỗ trợ bởi tất cả các thiết bị đầu cuối.
Xem thêm - Các màu khác nhau có ý nghĩa gì trong ls? - trên AskUbfox.
Để khắc phục điều này, hãy thử tham số ow cho LS_COLORS
Ví dụ:
~LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.Zip=33:*.tgz=33'
~ls -l
Bây giờ bạn thêm ow (OTHER_WRITABLE
) Lựa chọn
~export LS_COLORS='fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.Zip=33:*.tgz=33:ow=0'
~ls -l
Chà, điều này có nghĩa là thư mục này có quyền nếu bạn chạy nó:
nó sẽ loại bỏ bgcolor :)
Bạn có thể thay đổi tông màu xanh lục trong PuTTY để làm cho văn bản có thể đọc được.
Mở PuTTY và đi đến Window\Colors, chọn "ANSI Green", đặt nó thành màu xanh đậm hơn (R: 0 G: 70 B: 0).