มาปรับแต่งหน้าตา Prompt ของ Mac OS Terminal ให้ดูดีขึ้นดีกว่า !!

By | กันยายน 26, 2016
โพสท์นี้เกิดจากความคันมือจากการไปดู tutorial ต่างๆ ของฝรั่งเขาแล้วเห็นหน้าตา Terminal หรือ Shell ที่เขาใช้มันดูโก้หรูดู Geeky มาก เลยอยากได้อยากมีกับเขาบ้าง… ด้วยความเป็น Mac OSX ที่ถือว่าเป็นญาติสนิทของ Unix ก็ว่าได้ ดังนั้นการปรับแต่งย่อมไม่ยาก
ดังนี้
** บทความนี้ใช้ได้ทั้ง Unix และ Mac

เปลี่ยนหน้าตา Command Prompt

ลำดับแรกเรามาเปลี่ยนหน้าตา Prompt กันก่อน โดยปกติหน้าตา prompt ของ Mac จะหน้าตาประมาณรูปด้านล่าง พอลอง echo $PS1 ออกมาดูก็จะ output แปลกๆ อันนี้เรียกว่า “prompt escapes”
 
เราสามารถเปลี่ยนรูปแบบ prompt escapes ได้เลยโดยใช้คำสั่ง export PS=”รูปแบบ prompt escapes ที่ต้องการ”
1
$ export PS1="\n\u ~> [\w]\n\$ "

จากตัวอย่าง ผมต้องการให้มีการ ขึ้นบรรทัดใหม่ (\n) เสมอเมื่อคำสั่งแสดงผลเสร็จ และ แสดงชื่อ user (\u) ที่ login จากนั้นก็แสดง path ที่ทำงานอยู่ ณ ปัจจุบันแบบเต็ม โดยให้อยู่ใน “[” “]” ([\w]) หลังจากนั้นก็ขึ้นบรรทัดใหม่และแสดง prompt เพื่อรับคำสั่งต่อไป (\n\$) หน้าตาก็จะได้อย่างรูปด้านล่าง
ตารางด้านล่างเป็น prompt escapes ทั้งหมดที่สามารถกำหนดได้ เราสามารถกำหนด prompt ของเราได้อย่างอิสระ

เปลี่ยนสีให้ Command Prompt

เพื่อให้แน่ใจว่า Terminal เปิดการใช้งาน ANSI colors อยู่หรือไม่ ให้เข้าไปดูที่ Terminal > Preferences… ตรง tab “Text” ให้เราไปเปิด Display ANSI colors ก่อน โดยการเลือกถูกด้านหน้า
สำหรับรูปแบบในการกำหนดสีของฝั่ง Mac และ ฝั่ง Linux จะต่างกันนิดหน่อยนะครับ
รูปแบบกำหนดสี prompt ของ Mac จะเป็น
1
\[\033[COLOR_CODE_HERE\]PROMPT_ESCAPE_OR_TEXT_HERE\[\033[0m\]
ส่วนฝั่ง Linux จะเป็น
1
\e[COLOR_CODE PROMPT_ESCAPE\e[0m
หากลองสังเกตดูจะเห็นว่ามี tag เปิด = \[\033[COLOR_CODE\] และ tag ปิด = \[\033[0m\] ชัดเจน
สำหรับตารางรหัสสีที่สามารถใช้ได้มีดังนี้
** TIP **
  • เราสามารถ แก้ค่า 0; เป็น
    • 1; สำหรับตัวหนา
    • 4; ขีดเส้นใต้
    • 5; ตัวอักษรกระพริบ
    • 7; reverse เอาสีตัวอักษรมาเป็นสีพื้นหลัง
  • เราสามารถกำหนดรูปแบบได้หลากหลายโดยใช้ ; ขั้น เช่น \[\033[1;4;31;33m\] = ตัวอักษรหนาขีดเส้นใต้สีแดงบนพื้นหลังสีเหลือง
หลังจากปรับแต่งรูปแบบและสีกันจนหนำใจแล้วก็อย่าลืม เอาไปเก็บไว้ในไฟล์ .bash_profile กันด้วยนะครับ
หลังจากนั่งมั่วเอาจนเหนื่อย command prompt ของผมก็ออกมาลิเกอย่างที่เห็นนี้แหละครับ อิอิ