เปลี่ยนสีของพรอมต์ขึ้นอยู่กับผู้ใช้หรือรูทใน zsh


13

ใน zsh คุณสามารถมี%#ในPS1(หรือPROMPTตัวแปรอะไรก็ได้) ซึ่งโดยทั่วไปหมายถึงแสดง%ว่าผู้ใช้หรือแสดง#ถ้ารูต ฉันสงสัยว่ามีวิธีใดที่จะส่งผลกระทบต่อสิ่งนี้%หรือไม่หรือ#เปลี่ยนสีขึ้นอยู่กับว่าเป็นผู้ใช้หรือรูท (สีแดงสำหรับรูต, สีฟ้าสำหรับผู้ใช้) วิธีที่ชัดเจนคือการเปลี่ยนPS1ในรูทของฉัน~/.zshrcแต่พิจารณา นี่เป็นสัญลักษณ์พิเศษแล้วฉันสงสัยว่าอาจจะไม่มีวิธีที่ฉันสามารถใช้แบบเดียวกันPS1สำหรับทั้งสองได้ ... สิ่งที่เฉพาะเจาะจงสำหรับ%#มันสำหรับ zsh (ฉันแน่ใจว่ามีแฮ็กอื่น ๆ ที่ฉันสามารถทำได้เช่นกัน ถ้างบแล้ว)

คำตอบ:


8

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

ที่ควรจะเปลี่ยนชื่อโฮสต์ ( %m) สีที่แตกต่าง (สีแดง) ถ้าคุณเป็นรูต ฉันไม่มีเชลล์ zsh เพื่อทดสอบ แต่ดูเหมือนว่าถูกต้อง

นี่คือเหตุผล:

%(x.true.false):: จากการประเมินผลของภาคแรกของภาคเรียนที่สามให้ดำเนินการคำสั่งที่ถูกต้อง '!' เป็นจริงถ้าเชลล์มีสิทธิพิเศษ ในความเป็นจริงเป็นทางลัดสำหรับ%#%(!.#.%)

%{\e[1;31m%} %m %{\e[0m%}:: the %{\e[X;Ym%}เป็นลำดับหนีสีด้วย X เป็นการจัดรูปแบบ (ตัวหนาขีดเส้นใต้ ฯลฯ ) และ Y เป็นรหัสสี หมายเหตุคุณต้องเปิดและปิดลำดับรอบคำที่คุณต้องการเปลี่ยนสีมิฉะนั้นทุกอย่างหลังจากจุดนั้นจะเป็นสีอะไรก็ได้ ฉันได้เพิ่มช่องว่างที่นี่รอบคำที่พร้อมท์%mเพื่อความชัดเจน

http://www.nparikh.org/unix/prompt.phpมีตัวเลือกและรายละเอียดเพิ่มเติมเกี่ยวกับตารางสีและตัวเลือกอื่น ๆ สำหรับ zsh


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

%(#ทดสอบว่าเชลล์รันเป็นรูทหรือไม่ การเปลี่ยนสิ่งนี้เพื่อ%(!ทดสอบว่าเชลล์กำลังทำงานด้วยสิทธิ์ระดับสูง (ซึ่งครอบคลุมสิ่งต่าง ๆ เช่นnewgrpแต่ไม่เข้าสู่ระบบในฐานะรูท)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.