ทำให้คำสั่ง OS X Terminal ฉันพิมพ์ BOLD


11

ฉันต้องการสร้างคำสั่งที่ฉันพิมพ์ (อินพุต) ในเทอร์มินัลโดดเด่นจากเอาต์พุตทั้งหมด

ตัวอย่างเช่น:

imac: ~ มือปราบ $ chmod -R gw myfolder
imac: ~ มือปราบ $ cd myfolder
imac: มือปราบ myfolder $ ls -l
รวม 0
drwxr-xr-x 9 ผู้ดูแลระบบราก 306 20 เมษายน 2010 ถัง
drwxr-xr-x 7 ผู้ดูแลระบบ 238 เม.ย. 20 2010 รวม
drwxr-xr-x 73 root ผู้ดูแลระบบ 2482 18 พฤษภาคม 17:16 lib
drwxr-xr-x 6 ผู้ดูแลระบบราก 204 Apr 20 2010 ผู้ชาย
imac: มือปราบ myfolder $ echo Go Giants!
ไปไจแอนต์!

แต่ฉันจะยอมรับสีหรือแม้แต่ไฮไลต์ทั้งบรรทัด ...

ฉันแน่ใจว่ามีวิธีการทำเช่นนี้ แต่ไม่ชัดเจนสำหรับฉัน ...

ขอบคุณ!

คำตอบ:


9

แก้ไขของคุณ~/.bash_profileหรือ~/.bashrc(ดูความคิดเห็นของ Gilles ด้านล่าง) และเพิ่มบรรทัดต่อไปนี้:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${OFF}\u@\h:\w \$${BOLD}"
PS2="> ${BOLD}"
trap 'echo -ne "${OFF}" > $(tty)' DEBUG

ย้าย${BOLD}ไปรอบ ๆ เพื่อทำให้ส่วนหนึ่งของพรอมต์เป็นตัวหนา หากไม่ควรให้สีพร้อมท์คุณจำเป็นต้องใส่${OFF}คำนำหน้าPS1มิฉะนั้นบรรทัดว่าง (การกด Enter โดยไม่ต้องเขียนอะไร) จะทำให้พรอมต์ต่อไปนี้เป็นตัวหนา (เครดิตถึง @Jay ขอบคุณอีกครั้ง!)

สิ่งนี้จะเพิ่มแทร็บดีบั๊กเพื่อปิดรูปแบบตัวหนาดังนั้นจึงค่อนข้างแฮ็ค เครดิต (ทำงานได้โดยไม่มีกลุ่ม tty บน OS X)

นี่เป็นบิตของแฮ็คดังนั้นคุณต้องยอมรับความเสี่ยงเอง

การตั้งค่าPS1/ PS2พรอมต์ของคุณเป็นตัวหนาเท่านั้นจะทำได้ง่ายขึ้น

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "

1
ไม่ใช่~/.bash_profileแต่~/.bashrc(หรือทั้งสองอย่างหากคุณไม่ได้มา.bashrcจาก.bash_profile) การตั้งค่าเหล่านี้จะต้องตั้งค่าสำหรับอินสแตนซ์การโต้ตอบของ bash แต่ละครั้งและ.bash_profileอ่านได้โดยเชลล์การเข้าสู่ระบบเท่านั้น
Gilles 'หยุดชั่วร้าย'

ขอขอบคุณจะแก้ไขคำตอบของฉัน ฉันไม่มีbashrcดังนั้นฉันจึงใช้สิ่งที่อยู่ที่นั่น
Daniel Beck

2
ฉันคิดออกวาง $ {OFF} ที่ด้านหน้า: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay

1
@ Daniel: ~/.bashrcไม่ควรมีการขีดเส้นใต้ใน
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

1
หากฉันใช้ลูกศรขึ้นสี่ครั้งในแถวเพื่อดูประวัติคำสั่งดังนั้นอักขระ 3 ตัวแรกของคำสั่งเก่าจะกลายเป็นส่วนหนึ่งของพรอมต์และไม่มีวิธีลบออก ฉันไม่สามารถลบด้วยปุ่ม Backspace
Jay

2

ฉันมีปัญหาเล็กน้อยกับการแก้ปัญหาที่นี่ในขณะที่ใช้ El Capitan (โดยเฉพาะใน iTerm2 แต่ใน Terminal เก่าธรรมดาเช่นกัน) ฉันมีข้อผิดพลาดสองประเภท:

  1. ความสามารถในการลบ bash prompt ของฉันทั้งหมดเพียงแค่กด space แล้วถอยกลับ
  2. ตัวละครที่ไม่ต้องการค้นหาวิธีการของพวกเขาในการส่งออกทุบตีของฉันเช่นการป้อนข้อมูลpwdจะส่งผลให้

    \[\]/Users/home/Directory

    หรือใน

    \e[0m/Users/home/Directory

ฉันเสนอวิธีแก้ไขปัญหาต่อไปนี้ซึ่งเหมือนกันมากขึ้น

    BOLD="\033[1m"
    OFF="\033[m"
    PS1="${OFF}\u@\h :${BOLD}"
    PS2="> ${BOLD}"
    trap 'echo -ne "${OFF}" > $(tty)' DEBUG

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