เทอร์มินัลแจ้ง 'บันทึก' คำสั่งบางอย่างบนลูกศรชี้ขึ้น


5

ฉันเพิ่ม shell scripting เล็กน้อยลงในพรอมต์เพื่อความสนุก มันสลับสีของรายการที่มีการสุ่ม ฉันทำอย่างหมดจดเพราะหน้าจอสีเทาน่าเบื่อหลังจากสักครู่ ต่อไปนี้เป็นพรอมต์ของฉันใน. ทุบตีโปรไฟล์:

function next_hue
{
    color1=$((31 + (++color % 7)))   # set 31 to 30 for dark on light
    color1=$((31 + (++color % 7)))
    PS1="\n\e[0:${color}m[\W]\n\e[0:${color}m[\u]-> $reset" # set 1 to 0 for     dark on light
}

สลับสีของพรอมต์ของฉัน เย้!

ปัญหาคือบางครั้งเชลล์จะ "ติดขัด" ตัวอย่างเช่นเชลล์มักเป็นดังนี้:

directory
[username]->

หากฉันเพิ่งรันdocker runคำสั่งและฉันลูกศรขึ้นในประวัติศาสตร์ `การทำงานของนักเทียบท่าจะติดและฉันจบลงด้วยสิ่งนี้:

directory
[username]->docker run

หากฉันเพิ่มคำสั่งใหม่คำสั่งจะวางอยู่บนdocker run:

directory
[username]->docker runcd /some/path

ฉันต้องใช้ctrl-cหรือตัวเลือกอื่น ๆ และฉันไม่สามารถใช้docker-runคำสั่งได้อีกเว้นแต่จะพิมพ์ออกมาหมด สิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้? ฉันได้ดูการกระตุ้นเตือนของฉันสักหน่อยและฉันคิดว่ามันโอเค แต่มันก็สับสนที่จะคิดออกตั้งแต่แรก


คุณโทรnext_hueมาจากที่ไหน
nohillside

ฉันไม่คิดว่าเกี่ยวข้องกับข้อความแจ้งของคุณ มีโอกาสมากขึ้นที่มีบางสิ่งแปลก ๆ ใน ~ / .inputrc ของคุณยุ่งกับประวัติคำสั่ง
jmhindle

คำตอบ:


2

คุณไม่ได้หนีอักขระที่ไม่ใช่การพิมพ์ในพรอมต์ของคุณ ดูบทความนี้และใช้ " \[" และ " \]" รอบ ๆ สีเช่นนี้ (ยังไม่ทดลอง) เช่น ...

PS1="\n\e[0:\[${color}\]m[\W]\n\e[0:\[${color}\]m[\u]-> $reset"

คุณอาจจะต้องพูดเกินจริง อย่างที่ฉันบอกว่านี่ไม่ได้ทดสอบดังนั้นฉันอาจใส่ " \]" ลงในกึ่งกลางของรหัสสี สำหรับพรอมต์ของฉันฉันจะหลบหนีเมื่อฉันเริ่มต้นตัวแปรสี:

PS1_FG="\[$(tput setaf 223)\]"  # Prompt foreground colour (223 = pale orange/brown)

สำหรับสิ่งที่คุ้มค่าฉันขอแนะนำให้ใช้tputเมื่อคุณจัดการกับรหัสควบคุม ทำให้สคริปต์ของคุณพกพาได้ง่ายขึ้นและ (IMHO) ง่ายต่อการอ่าน

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