เปลี่ยนสีของตัวอักษรเฉพาะในชื่อผู้ใช้ใน PS1 ของ bash


9

ฉันต้องการเปลี่ยนสีของตัวอักษรที่ระบุในชื่อผู้ใช้ของฉันถูกแสดงโดย PS1 ในทุบตี

เช่นถ้าฉัน\uเป็นrahulฉันต้องการให้จดหมายhเป็นสีฟ้าและพักเป็นสีขาว

ฉันจะรู้ว่า\uหมายถึงชื่อผู้ใช้และเพิ่มสีสันให้กับทั้ง 'นิติบุคคล' [\033[38;5;15m\]จะกระทำโดยการเพิ่มแท็กเช่น:

ถ้าเป็นไปได้ฉันขอทราบวิธีการเดียวกันได้ไหม

คำตอบ:


13

หากคุณไม่รังเกียจที่จะไม่ใช้การ\uหลบหนีคุณสามารถทำได้ดังนี้:

PS1="\[\e[0;31m\]${USER:0:1}\[\e[m\]${USER:1} "

การดำเนินการนี้จะตั้งค่าพรอมต์ให้เป็นเพียงชื่อผู้ใช้และช่องว่าง อักขระตัวแรกของชื่อผู้ใช้จะเป็นสีแดง สิ่งนี้ทำงานโดยการขยาย$USERตัวแปรสองครั้งด้วยช่วงที่เฉพาะเจาะจง ครั้งแรกที่ช่วงนั้นมีค่าตั้งแต่ 0 ถึง 1 ครั้งที่สองเป็นช่วงจาก 1 (อักขระตัวที่สอง) ไปยังจุดสิ้นสุด

ในการรับพรอมต์อย่างที่คุณขอใช้สิ่งนี้

PS1="${USER:0:2}\[\e[0;34m\]${USER:2:1}\[\e[m\]${USER:3} "

1
คุณสามารถละเว้นความยาวเพื่อพิมพ์ทั้งสตริงที่ขึ้นต้นด้วยoffset : ${USER:1}สำหรับชื่อผู้ใช้ทั้งหมดยกเว้นอักขระตัวแรก ทางออกที่ดี! คุณสามารถแสดงวิธีการเปลี่ยนสีของตัวละครที่สามตามที่ OP ร้องขอได้หรือไม่
ของหวาน

1
หนึ่งสามารถทดสอบสิ่งที่ชอบด้วยecho -eเช่นecho -e "${USER:0:2}\e[0;34m${USER:2:1}\e[m${USER:3} "
ขนม

2
สิ่งนี้ต้องทำงานกับชื่อผู้ใช้ที่แตกต่างหลากหลาย (เช่นเน้นตัวอักษรตัวที่ 3 สำหรับทุกคน) หรือไม่ หากเป็นเพียงสำหรับคุณวิธีการที่ง่ายกว่าก็คือการ hardcode ตัวอักษรชื่อผู้ใช้ของคุณเช่นraแทน${USER:0:2}ฯลฯ
เช่น mont.

@ hardmont การเข้ารหัส hardmont ไม่เคยเป็นวิธีที่ดีที่สุด แต่มักจะยอมรับได้ง่ายกว่ามาก วิธีนี้คุณสามารถวางรหัสในไฟล์กำหนดค่าส่วนกลางหรือแชร์กับผู้อื่น และจะจัดการกับกรณีเมื่อบัญชีของคุณถูกเปลี่ยนชื่อ
เซบาสเตียนสตา

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