สีจริงในพรอมต์ทุบตี?


4

เป็นไปได้หรือไม่ที่จะใช้สีจริงใน bash prompt ฉันใช้ iTerm2 บน MacOS ซึ่งรองรับสีจริง แต่ไม่แน่ใจว่าฉันจะใช้สีจริงเพื่อแจ้ง bash

ในขณะที่ฉันกำลังใช้ tput af <number> ใน bash prompt ของฉันเพื่อให้ได้สี


อาจขึ้นอยู่กับเทอร์มินัลใดที่ iTerm2 อ้างว่าเลียนแบบและเทอร์มินัลเหล่านั้นสามารถจัดการกับสี 24 บิต นอกจากนี้ยังอาจขึ้นอยู่กับสิ่งที่ฐานข้อมูล termcap หรือ terminfo บอกว่าสำหรับเทอร์มินัลเหล่านั้น
Spiff

คำตอบ:


1

ดูเหมือนว่าจะเป็นไปได้ เช่น:

export PS1="\[$(printf "\x1b[48;2;15;100;50m\]A nice dark green [rgb(15,100,50)]:\[\x1b[0m")\] "

export PS1="\[$(printf "\x1b[38;2;255;100;250m\]A lovely shade of pink [rgb(255,100,250)]:\[\x1b[0m")\] "

อาจมีวิธีที่ดีกว่าการโทรออกไปที่ $ (printf ... ) ฉันหวังว่าจะมี แต่ฉันไม่รู้ กุญแจสำคัญคือการห่อสิ่งที่ 'เมตา' ทั้งหมด (แต่ไม่ใช่เนื้อหาจริง) ใน \[ และ \] เพื่อป้องกันไม่ให้เชลล์นับเป็นส่วนหนึ่งของความยาวพรอมต์เพื่อให้เล่นได้อย่างดีเมื่อถูกวาดใหม่ (เช่นเมื่อขี่จักรยานผ่านประวัติศาสตร์)

ตัวเลขสามตัวสุดท้ายในแต่ละรายการ \x1b[...m expression แสดงค่าสีแดงสีเขียวและสีน้ำเงินที่ต้องการ (จาก 0 ถึง 255)

หมายเลขแรกตั้งพื้นหลัง (48) หรือพื้นหน้า (38) ฉันไม่รู้ว่าหมายเลขอื่นทำอะไร แต่เล่นกับมันเพิ่มในอีก \x1b[38;4m ดูเหมือนว่าจะตั้งค่าข้อความที่ขีดเส้นใต้

คุณอาจรวบรวมเพิ่มเติมจากส่วนสำคัญนี้: https://gist.github.com/XVilka/8346728

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