Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

เชี่ยวชาญ Bash: ปรับแต่งสีเทอร์มินัลและ Prompt ให้เหมาะกับประสบการณ์ Linux ที่กำหนดเอง

วันนี้ 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 นี่คือความหมายของตัวอักษรพิเศษแต่ละตัว:

  1. \u: username ของผู้ใช้ปัจจุบัน
  2. \h: hostname จนถึงจุดแรก (.) ใน Fully-Qualified Domain Name
  3. \W: basename ของ current working directory โดย $HOME ย่อด้วย tilde (~)
  4. \$: หากผู้ใช้ปัจจุบันเป็น 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 ของคุณ หากคุณมีคำถามหรือข้อเสนอแนะเกี่ยวกับโพสต์นี้ รู้สึกสบายใจใช้แบบฟอร์มความคิดเห็นด้านล่างเพื่อติดต่อเรา เราคาดหวังจะได้ยินจากคุณ!