Đây có vẻ là một câu hỏi với vấn đề XY - nó không hỏi đúng điều gì để có được giải pháp mong muốn:
Giả sử đầu ra được tô màu và phần trống của màn hình có màu khác nhau hoặc chứa đầy một ký tự.
Hãy suy nghĩ về cách bạn mong đợi đầu ra để tìm kiếm các trường hợp này:
Một dòng trống ? Dòng chỉ chứa đầy ký tự không gian? Dòng chỉ có một ký tự không gian ? Với một tab? Với một không gian và một tab? Với một tab và một không gian? Vâng, tất cả đều trông khác nhau. !
Hay bạn muốn một dòng trống trông giống như - chỉ là một dòng trống ?
Nếu đó là trường hợp, bạn thực sự không muốn tô màu các luồng đầu ra, và câu trả lời này được áp dụng .
Tôi sẽ đưa ra một cách tiếp cận tương tự với giải pháp của @ StéphaneChazelas, nhưng "nghịch đảo":
Về mặt kỹ thuật, bạn có thể tô màu STDOUT và STDERR, theo từng dòng , bằng cách thêm mã thoát màu phù hợp để bắt đầu và kết thúc dòng trên cả hai luồng.
Bạn sẽ cần phải cẩn thận để đặt lại màu ít nhất là mỗi dòng, vì nếu không, bất kỳ chương trình nào sử dụng màu, như ls
, sẽ làm rối thiết bị đầu cuối của bạn .
Bạn không có nhiều quyền kiểm soát màu đầu ra - vì vậy thật khó để có được đúng nhất.
Nhưng: Bạn có quyền kiểm soát tất cả các màu khác được sử dụng, phải không?
Và bạn chỉ cần một màu trong trường hợp này? Tuyệt quá!
Đặt màu mặc định của thiết bị đầu cuối thành màu STDOUT / STDERR và tô màu phần còn lại như bạn muốn.
Bạn có thể tô màu cho dấu nhắc của bạn - và sử dụng mã nhắc để tô màu các phần khác.
Phải thừa nhận rằng việc tô màu dòng lệnh , nơi bạn chỉnh sửa lệnh của mình, nhưng chắc chắn là có thể. Nhưng đừng cố gắng rằng với bash
nếu bạn có thể sử dụng zsh
, như là đang xử lý kịp thời nó nhiều linh hoạt hơn có - đó là những gì bạn sẽ cần.
Bây giờ, đặt màu nền trước mặc định của bạn thành màu xám và có thể là nền - nhưng cố gắng để màu đó trong suốt / không xác định.
Để đặt màu nền của dòng lệnh, hãy xem ví dụ này từ
Thay đổi màu nền của dòng lệnh trong zsh khi tôi thay đổi chủ đề nhắc :
PROMPT="%{$bg[cyan]%}%{$fg[red]%}%n%{$reset_color%}%{$bg[cyan]%}@%{$fg[red]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%{$bg[cyan]%}%% "
(Phần khó là lấy phần cuối của các ô không sử dụng trong các tình huống khác nhau.)