วันนี้ Bash เป็นเชลล์เริ่มต้นในการแจกจ่าย Linux สมัยใหม่เกือบทุกตัว (ถ้าไม่ใช่ทั้งหมด) อย่างไรก็ตาม คุณอาจสังเกตว่าสีข้อความในเทอร์มินัลและเนื้อหาของ prompt อาจแตกต่างกันจาก distro หนึ่งไปอีก distro
แนะนำอ่าน: 5 Open Source Shells ที่ใช้บ่อยที่สุดสำหรับ Linux
กรณีที่คุณเคยสงสัยว่าจะปรับแต่งอย่างไรเพื่อการเข้าถึงที่ดีขึ้น หรือแค่โผล่ใจ ให้อ่านต่อ – ในบทความนี้เราจะอธิบายวิธีการทำได้
ตัวแปรสภาพแวดล้อม PS1 ของ Bash
พรอมต์คำสั่งและลักษณะเทอร์มินัลถูกควบคุมโดยตัวแปรสภาพแวดล้อมที่เรียกว่า PS1 ตาม man page ของ Bash PS1 แทน primary prompt string ซึ่งแสดงเมื่อเชลล์พร้อมอ่านคำสั่ง
เนื้อหาที่อนุญาตใน PS1 ประกอบด้วยตัวอักษรพิเศษหลายตัวที่หนีbackslash ซึ่งความหมายแสดงในส่วน PROMPTING ของ man page
เพื่อสาธิต ให้แสดงเนื้อหาปัจจุบันของ PS1 ในระบบของเรา (อาจแตกต่างในกรณีของคุณ):
$ echo $PS1 [\u@\h \W]\$
เราจะอธิบายวิธีปรับแต่ง PS1 ตามความต้องการของเรา
การปรับแต่งรูปแบบ PS1
ตามส่วน PROMPTING ใน man page นี่คือความหมายของตัวอักษรพิเศษแต่ละตัว:
\u:username ของผู้ใช้ปัจจุบัน\h:hostname จนถึงจุดแรก (.) ใน Fully-Qualified Domain Name\W:basename ของ current working directory โดย $HOME ย่อด้วย tilde (~)\$:หากผู้ใช้ปัจจุบันเป็น root แสดง # มิฉะนั้น $
ตัวอย่าง เราอาจพิจารณาเพิ่ม \! หากต้องการแสดงหมายเลขประวัติของคำสั่งปัจจุบัน หรือ \H หากต้องการแสดง FQDN แทนชื่อเซิร์ฟเวอร์สั้น
ในตัวอย่างต่อไปเราจะนำทั้งสองเข้าสู่สภาพแวดล้อมปัจจุบันโดยรันคำสั่งนี้:
PS1="[\u@\H \W \!]$"
เมื่อกด Enter คุณจะเห็นว่าเนื้อหา prompt เปลี่ยนไป ตามที่แสดงด้านล่าง เปรียบเทียบ prompt ก่อนและหลังรันคำสั่งข้างต้น:
ตอนนี้ไปอีกขั้น ปรับสีของ user และ hostname ใน command prompt – ทั้งข้อความและพื้นหลังรอบๆ
จริงๆ แล้วเราสามารถปรับแต่ง 3 ด้านของ prompt ได้:
| Text Format | Foreground (text) color | Background color |
| 0: normal text | 30: Black | 40: Black |
| 1: bold | 31: Red | 41: Red |
| 4: Underlined text | 32: Green | 42: Green |
| 33: Yellow | 43: Yellow | |
| 34: Blue | 44: Blue | |
| 35: Purple | 45: Purple | |
| 36: Cyan | 46: Cyan | |
| 37: White | 47: White |
เราจะใช้ตัวอักษรพิเศษ \e ที่จุดเริ่มต้นและ m ที่ท้าย เพื่อบ่งชี้ว่าสิ่งที่ตามมาเป็นลำดับสี
ในลำดับนี้ ค่า 3 ค่า (background, format, และ foreground) ถูกคั่นด้วยเครื่องหมายจุลภาค (หากไม่ให้ค่า จะถือเป็นค่าเริ่มต้น)
แนะนำอ่าน: เรียนรู้ Bash Shell Scripting ใน Linux
นอกจากนี้ เนื่องจากช่วงค่าแตกต่างกัน ไม่ว่าจะระบุอันไหนก่อน (background, format, หรือ foreground) ก็ไม่สำคัญ
ตัวอย่าง PS1 ต่อไปนี้จะทำให้ prompt ปรากฏในข้อความ สีเหลือง ขีดเส้นใต้ พร้อมพื้นหลัง สีแดง:
PS1="\e[41;4;33m[\u@\h \W]$ "
แม้จะดูดี แต่การปรับแต่งนี้จะคงอยู่แค่เซสชันผู้ใช้ปัจจุบัน หากคุณปิดเทอร์มินัลหรือออกจากเซสชัน การเปลี่ยนแปลงจะหายไป
เพื่อทำให้การเปลี่ยนแปลงนี้ถาวร คุณต้องเพิ่มบรรทัดต่อไปนี้ลงใน ~/.bashrc หรือ ~/.bash_profile ขึ้นอยู่กับ distro ของคุณ:
PS1="\e[41;4;33m[\u@\h \W]$ "
ลองเล่นกับสีต่างๆ เพื่อหาสิ่งที่เหมาะกับคุณที่สุด
สรุป
ในบทความนี้เราอธิบายวิธีปรับแต่งสีและเนื้อหาของ Bash prompt ของคุณ หากคุณมีคำถามหรือข้อเสนอแนะเกี่ยวกับโพสต์นี้ รู้สึกสบายใจใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเรา เราคาดหวังจะได้ยินจากคุณ!