thay đổi màu nhắc tùy thuộc vào người dùng hoặc root trong zsh


13

trong zsh bạn có thể có một %#trong của bạn PS1(hoặc bất kỳ PROMPTbiến) mà về cơ bản có nghĩa là hiển thị %nếu người dùng hoặc hiển thị #nếu root. Tôi đang tự hỏi nếu có cách nào để ảnh hưởng này để các %hoặc #thay đổi màu sắc tùy thuộc vào việc đó là một người dùng hoặc root (một màu đỏ cho rễ, một màu xanh cho người sử dụng) một cách rõ ràng là chỉ để thay đổi PS1trong thư mục gốc của tôi ~/.zshrcnhưng xem xét đây đã là một biểu tượng đặc biệt Tôi tự hỏi liệu có lẽ không có cách nào tôi có thể sử dụng tương tự PS1cho cả hai ... một cái gì đó cụ thể để %#thích nó là cho zsh (Tôi chắc chắn có những cách hack khác tôi có thể làm như vậy một nếu sau đó tuyên bố).

Câu trả lời:


8

%(!.%{\e[1;31m%}%m%{\e[0m%}.%{\e[0;33m%}%m%{\e[0m%})

Điều đó sẽ làm việc để thay đổi tên máy chủ ( %m) một màu khác (màu đỏ) nếu bạn là root. Tôi không có vỏ zsh để kiểm tra nhưng có vẻ đúng.

Đây là lý do tại sao:

%(x.true.false):: Dựa trên đánh giá của thuật ngữ đầu tiên của ternary, thực hiện các tuyên bố chính xác. '!' là đúng nếu vỏ được đặc quyền. Trong thực tế%# là một phím tắt cho %(!.#.%).

%{\e[1;31m%} %m %{\e[0m%}:: the %{\e[X;Ym%}là chuỗi thoát màu với X là định dạng (đậm, gạch chân, v.v.) và Y là mã màu. Lưu ý bạn cần mở và đóng chuỗi xung quanh thuật ngữ bạn đang tìm cách thay đổi màu nếu không mọi thứ sau thời điểm đó sẽ là bất kỳ màu nào. Tôi đã thêm khoảng trắng ở đây xung quanh cụm từ nhắc nhở%m cho rõ ràng.

http://www.nparikh.org/unix/prompt.php có nhiều tùy chọn và chi tiết hơn xung quanh các bảng màu và các tùy chọn có sẵn khác cho zsh.


6
autoload colors
colors
PS1="%~ %{%(#~$fg[red]~$fg[blue])%}%#%{$fg[default]%} "

%(#kiểm tra xem shell có chạy như root hay không. Thay đổi điều này để %(!kiểm tra xem shell có chạy với các đặc quyền nâng cao hay không (bao gồm những thứ như newgrp, nhưng không đăng nhập với quyền root).

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.