Linux ทุบตีสีที่ทับซ้อนกันของเส้น


0

ปัญหา

ฉันมีสคริปต์ ps1และใช้งานได้ดี (ฉันกำลังใช้\[$(tput setaf x)\]) แต่เมื่อฉันใช้ printf กับสีฉันมี 2 สถานการณ์:

เส้นที่ทับซ้อนกัน

printf $(tput setaf 2)HI!$(tput sgr0)

ซึ่งพิมพ์HI!ด้วยสีเขียว แต่จะทำให้การตัดขาด

การพิมพ์ \ [\]

printf \[$(tput setaf 2)\]HI!\[$(tput sgr0)\]

พิมพ์ไหน \[\]HI!\[\]

บันทึก

ฉันพยายามใช้echoโดยไม่ประสบความสำเร็จ


อาจซ้ำซ้อนของsuperuser.com/questions/301353/…
grawity

ฉันลองใช้\ 001และ\ 002หรือ\ x01และ\ x02และพวกเขาก็ใช้ไม่ได้เช่นกัน
เซจิฮิระโอะ

ตอนนี้มันพิมพ์HI!ด้วยสัญลักษณ์หัก 2 อัน
เซจิฮิระโอะ

คำตอบ:


0

วิธีแก้ปัญหาที่ฉันพบคือเปลี่ยน ps1 ของฉันจาก:

RESET="\[$(tput sgr0)\]"
GREEN="\[$(tput setaf 2)\]"

export PS1="${GREEN} MY PS1 ${RESET}"

ไปที่:

RESET="$(tput sgr0)"
GREEN="$(tput setaf 2)"

export PS1="\[${GREEN}\] MY PS1 \[${RESET}\]"

สำหรับสิ่งที่เกิดขึ้นเบื้องหลังฉันยังไม่รู้ :(

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