ลีนุกซ์ส่วนใหญ่กำหนดค่าให้ Bash prompt มีลักษณะดังนี้
username @ hostname: ไดเรกทอรี $
. แต่คุณสามารถกำหนดค่า Bash prompt ให้มีสิ่งที่คุณต้องการและเลือกสีที่คุณต้องการได้
ขั้นตอนตัวอย่างที่นี่ดำเนินการบน Ubuntu 16.04 LTS กระบวนการนี้ควรจะเหมือนกันในลีนุกซ์รุ่นอื่น ๆ แม้ว่า Bash prompt และการตั้งค่าเริ่มต้นในไฟล์. bashrc อาจแตกต่างกันเล็กน้อย
ที่จัดเก็บตัวแปรพร้อมต์
การกำหนดค่า Bash prompt ของคุณถูกเก็บไว้ในไฟล์. bashrc ของบัญชีผู้ใช้ของคุณซึ่งอยู่ที่
~ / .bashrc
. ดังนั้นหากชื่อผู้ใช้ของคุณคือ bob ไฟล์จะอยู่ที่
/home/bob/.bashrc
.
คุณสามารถเปิดไฟล์เพื่อดูตัวแปร Bash ปัจจุบัน เราจะใช้นาโนเป็นโปรแกรมแก้ไขข้อความตัวอย่างของเราแม้ว่าคุณจะใช้ เรา , emacs หรือโปรแกรมแก้ไขข้อความอื่น ๆ ที่คุณพอใจ เปิด Terminal และเรียกใช้:
นาโน ~ / .bashrc
เลื่อนลงไปที่ไฟล์
Ψ1 =
มาตรา. ตัวแปรแรกดูค่อนข้างซับซ้อนเนื่องจากมีข้อมูลสีเราจะอธิบายในภายหลัง ตัวแปรที่สองที่ไม่มีข้อมูลสีอ่านดังนี้:
$ {debian_chroot:+($debian_chroot)} \ u @ \ h: \ w \ $
สิ่งนี้ยังคงซับซ้อนเล็กน้อยเนื่องจากไฟล์
${debian_chroot:+($debian_chroot)}
บิต สิ่งเหล่านี้บอกให้ Bash แจ้งให้คุณทราบหากคุณใช้สภาพแวดล้อม Debian chroot และโดยปกติจะไม่แสดง โดยไม่สนใจสิ่งเหล่านี้นี่คือโครงสร้างเริ่มต้นของตัวแปร Bash prompt:
\ u @ \ h: \ w \ $
\ ยู
ระบุชื่อผู้ใช้ของคุณ
@
ระบุเครื่องหมาย @
\ h
ระบุชื่อโฮสต์ (ชื่อคอมพิวเตอร์)
:
ระบุอักขระ:
\ใน
ระบุไดเร็กทอรีการทำงานและ
\$
ระบุ $ หากคุณเป็นบัญชีผู้ใช้ปกติหรือ # ถ้าคุณเป็นรูท ดังนั้นเมื่อรวมทั้งหมดเข้าด้วยกันคุณจะได้
username @ hostname: working_directory $
.
ในการเปลี่ยน Bash prompt คุณเพียงแค่เพิ่มลบหรือจัดเรียงอักขระพิเศษในตัวแปร PS1 แต่ยังมีตัวแปรอีกมากมายที่คุณสามารถใช้ได้มากกว่าตัวแปรเริ่มต้น
ออกจากโปรแกรมแก้ไขข้อความใน nano ให้กด Ctrl + X เพื่อออก เราจะแสดงวิธีทดสอบตัวแปรก่อนที่จะเขียนตัวแปรใหม่ลงในไฟล์. bashrc ของคุณ
วิธีสร้าง Custom Bash Prompt
การกำหนดค่า Bash prompt ของคุณถูกเก็บไว้ในตัวแปร PS1 ในการบันทึกเนื้อหาของตัวแปร PS1 ลงในตัวแปรใหม่ให้รันคำสั่งต่อไปนี้:
ค่าเริ่มต้น = $ PS1
ตอนนี้คุณสามารถตั้งค่าตัวแปร PS1 เป็นค่าต่างๆเพื่อทดสอบได้ ตัวอย่างเช่นบรรทัดแรกที่นี่จะตั้งค่าพรอมต์ของคุณเป็นพรอมต์ "ผู้ใช้ $" พื้นฐานในขณะที่บรรทัดที่สองจะตั้งค่าพรอมต์ของคุณเป็นพรอมต์ "ผู้ใช้: working_directory $" พื้นฐาน
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
หากคุณต้องการกลับไปที่พรอมต์เริ่มต้นเพียงเรียกใช้คำสั่งต่อไปนี้
PS1 = ค่าเริ่มต้น $
Bash จะถูกคืนค่าเป็นพรอมต์เริ่มต้นเนื่องจากคุณได้บันทึกการตั้งค่าเริ่มต้นไว้ก่อนหน้านี้ โปรดทราบว่าการเปลี่ยนแปลงใด ๆ ที่คุณทำที่นี่เป็นเพียงชั่วคราวสำหรับเซสชัน Bash ปัจจุบันดังนั้นคุณสามารถออกจากระบบและลงชื่อเข้าใช้ใหม่หรือปิดและเปิดหน้าต่างเทอร์มินัลอีกครั้งเพื่อกลับไปที่พรอมต์เริ่มต้นของคุณ แต่บรรทัดด้านบนทำให้สามารถกลับไปที่ Bash prompt เริ่มต้นได้อย่างง่ายดายโดยไม่ต้องออกจากระบบหรือปิดหน้าต่างให้ยุ่งยาก
คุณสามารถเพิ่มอักขระหรือข้อความใด ๆ ให้กับตัวแปร ดังนั้นหากต้องการนำหน้าพรอมต์เริ่มต้นด้วย“ Hello World” คุณสามารถใช้:
PS1 = "สวัสดีชาวโลก \ u @ \ h: \ w \ $"
เมื่อคุณมีพื้นฐานแล้วคุณเพียงแค่ต้องรู้ว่าอักขระพิเศษทั้งหมดคืออะไร คุณอาจไม่สนใจสิ่งเหล่านี้มากมาย แต่นี่คือรายการทั้งหมดที่ปรากฏใน คู่มือการทุบตี :
-
ตัวอักษรกระดิ่ง:
\ ก -
วันที่ในรูปแบบ "วันธรรมดาของเดือน" (เช่น "อ. 26 พ.ค. "):
\ d -
รูปแบบจะถูกส่งไปยัง strftime (3) และผลลัพธ์จะถูกแทรกลงในสตริงพร้อมต์ รูปแบบที่ว่างเปล่าส่งผลให้เกิดการแสดงเวลาเฉพาะของสถานที่ ต้องใช้เครื่องมือจัดฟัน:
\ D{format} -
อักขระหลบหนี:
\คือ -
ชื่อโฮสต์ขึ้นอยู่กับ "." ตัวแรก:
\ h -
ชื่อโฮสต์:
\ H -
จำนวนงานที่จัดการโดยเชลล์ในปัจจุบัน:
\ j -
ชื่อฐานของชื่ออุปกรณ์ปลายทางของเชลล์:
\ l -
ขึ้นบรรทัดใหม่:
\ n -
การคืนรถ:
\ r -
ชื่อของเชลล์ชื่อพื้นฐานของ $ 0 (ส่วนที่อยู่ถัดจากเครื่องหมายทับสุดท้าย):
\ s -
เวลาในรูปแบบ HH: MM: SS แบบ 24 ชั่วโมง:
\ t -
เวลาในรูปแบบ HH: MM: SS 12 ชั่วโมง:
\ T -
เวลาในรูปแบบ 12 ชั่วโมง am / pm:
\@ -
เวลาในรูปแบบ HH: MM แบบ 24 ชั่วโมง:
\ ก -
ชื่อผู้ใช้ของผู้ใช้ปัจจุบัน:
\ ยู -
เวอร์ชันของ Bash (เช่น 2.00):
ev -
การเปิดตัว Bash เวอร์ชัน + patchlevel (เช่น 2.00.0):
EV -
ไดเร็กทอรีการทำงานปัจจุบันโดยมี $ HOME ย่อด้วยเครื่องหมายทิลเดอ (ใช้ตัวแปร $ PROMPT_DIRTRIM):
\ใน -
ชื่อฐานของ $ PWD โดย $ HOME ย่อด้วยเครื่องหมายทิลเดอ:
\ใน -
หมายเลขประวัติของคำสั่งนี้:
\! -
หมายเลขคำสั่งของคำสั่งนี้:
\# -
หาก uid ที่มีประสิทธิภาพคือ 0, # มิฉะนั้น $:
\$ -
อักขระที่มีรหัส ASCII เป็นค่าฐานแปด nnn:
\ nnn -
แบ็กสแลช:
\\ -
เริ่มต้นลำดับของอักขระที่ไม่ได้พิมพ์ สิ่งนี้สามารถใช้เพื่อฝังลำดับการควบคุมเทอร์มินัลลงในพรอมต์:
\[ -
สิ้นสุดลำดับของอักขระที่ไม่ได้พิมพ์:
\]
ดังนั้นหากคุณต้องการเพิ่มวันที่และเวลาลงใน Bash prompt ของคุณและวางไดเร็กทอรีการทำงานไว้ในคำสั่งในบรรทัดที่สองคุณสามารถใช้โครงสร้างต่อไปนี้:
PS1 = "[\d \t] \ u @ \ h \ n \ w \ $"
ไม่จำเป็นต้องใช้วงเล็บเหลี่ยมตรงนี้เลย แต่ช่วยแยกสิ่งที่มองเห็นและทำให้อ่านง่ายขึ้น ดังที่เราได้กล่าวไว้ก่อนหน้านี้คุณสามารถเพิ่มข้อความหรืออักขระปกติลงในตัวแปรที่คุณต้องการได้ดังนั้นอย่าลังเลที่จะใช้สิ่งที่เหมาะกับคุณ
มีเคล็ดลับที่มีประสิทธิภาพอีกอย่างหนึ่งที่คุณควรทราบ: คุณสามารถเพิ่มผลลัพธ์ของคำสั่งใดก็ได้ในพรอมต์ เมื่อใดก็ตามที่พรอมต์ปรากฏขึ้น Bash จะเรียกใช้คำสั่งและกรอกข้อมูลปัจจุบัน ในการดำเนินการนี้ให้ใส่คำสั่งใด ๆ ที่คุณต้องการเรียกใช้ระหว่างสองคำสั่ง
`
อักขระ นั่นไม่ใช่เครื่องหมายอะพอสทรอฟีนั่นคือสำเนียงที่ตายตัวซึ่งปรากฏอยู่เหนือปุ่ม Tab บนแป้นพิมพ์ของคุณ
ตัวอย่างเช่นสมมติว่าคุณต้องการดูเวอร์ชันเคอร์เนลของ Linux ในพรอมต์ คุณสามารถใช้บรรทัดต่อไปนี้:
PS1 = "\ u @ \ h บนʻuname -s -r` \ w \ $"
อีกตัวอย่างหนึ่งสมมติว่าคุณต้องการดูเวลาทำงานและค่าเฉลี่ยการโหลดของระบบตามที่แสดงโดย
เวลาทำงาน
คำสั่ง คุณสามารถใช้โครงสร้างต่อไปนี้ซึ่งทำให้เวลาทำงานในบรรทัดของตัวเองก่อนส่วนที่เหลือของพรอมต์
PS1 = "(ʻuptime`) \ n \ u @ \ h: \ w $"
อย่าลังเลที่จะทดลองกับอักขระพิเศษและคำสั่งต่างๆเพื่อประกอบพรอมต์คำสั่งในอุดมคติของคุณ
วิธีเพิ่มสีให้กับ Bash Prompt ของคุณ
เมื่อคุณทราบข้อความแจ้งที่คุณต้องการแล้วคุณสามารถเพิ่มสีลงไปได้ นี่เป็นเรื่องง่ายมาก แต่มันทำให้ตัวแปรดูยุ่งและซับซ้อนอย่างมากหากคุณไม่เข้าใจสิ่งที่คุณกำลังมองหา
ตัวอย่างเช่นตัวแปรพรอมต์สีเริ่มต้นจากก่อนหน้านี้คือ:
$ {debian_chroot:+($debian_chroot)} \ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
หรือลบบิต debian_chroot อีกครั้ง:
\ [\033[01;32m\] \ u @ \ h \ [\033[00m\]: \ [\033[01;34m\] \ w \ [\033[00m\] \ $
นี่เป็นเพียงไฟล์
\ u @ \ h: \ w $
แปรผันจากก่อนหน้านี้ แต่มีข้อมูลสี จริงๆแล้วเราสามารถแบ่งมันออกเป็นสองสามส่วน:
\[\033[01;32m\]\ u @ \ h\[\033[00m\]:\[\033[01;34m\]\ใน\[\033[00m\]\$
ส่วนแรกคือไฟล์
\ u @ \ h
บิตนำหน้าด้วยข้อมูลสีที่เปลี่ยนเป็นสีเขียว ประการที่สองคือ
:
อักขระนำหน้าด้วยข้อมูลสีที่ลบสีใด ๆ ประการที่สามคือ
\ใน
บิตนำหน้าด้วยข้อมูลสีที่เปลี่ยนเป็นสีน้ำเงิน ประการที่สี่คือ
\$
บิตนำหน้าด้วยข้อมูลสีที่ลบสีใด ๆ
เมื่อคุณเข้าใจวิธีสร้างแท็กสีของคุณเองแล้วคุณสามารถเพิ่มสีใดก็ได้ที่คุณต้องการลงในส่วนใดก็ได้ของ Bash prompt ที่คุณต้องการ
สิ่งที่คุณต้องรู้มีดังนี้: คุณต้องใส่ข้อมูลรหัสสีทั้งหมดระหว่างไฟล์
\[
และ
\] อักขระ
เอส. ภายในแท็กคุณต้องขึ้นต้นด้วยอย่างใดอย่างหนึ่ง
\033[
หรือ
\คือ[
เพื่อระบุให้ Bash ทราบว่าเป็นข้อมูลสี ทั้งสอง
\033[
และ
\คือ[
ทำสิ่งเดียวกัน
\คือ[
สั้นกว่าจึงอาจใช้งานได้สะดวกกว่า แต่เราจะใช้
\033[
ที่นี่ตรงกับสิ่งที่ใช้โดยค่าเริ่มต้น ในตอนท้ายของแท็กคุณต้องลงท้ายด้วย
ม \
เพื่อระบุจุดสิ้นสุดของแท็กสี
สรุปประเด็นนี้ว่าแท็กสีทุกสีจะเป็นอย่างไร ข้อแตกต่างเพียงอย่างเดียวคือข้อมูลที่คุณเพิ่มแทนที่ COLOR เพื่อกำหนดสีจริง:
\[\033[สีม \]
Bash ช่วยให้คุณสามารถเปลี่ยนสีของข้อความเบื้องหน้าเพิ่มแอตทริบิวต์เช่น "ตัวหนา" หรือ "ขีดเส้นใต้" ให้กับข้อความและกำหนดสีพื้นหลัง
นี่คือค่าสำหรับข้อความเบื้องหน้า:
- สีดำ: 30
- สีน้ำเงิน: 34
- สีฟ้า: 36
- สีเขียว: 32
- สีม่วง: 35
- สีแดง: 31
- ขาว: 37
- สีเหลือง: 33
ตัวอย่างเช่นเนื่องจากข้อความสีม่วงเป็นรหัสสี 32 คุณจึงควรใช้
\[\033[
32
ม \]
สำหรับข้อความสีม่วง
คุณยังสามารถระบุแอตทริบิวต์สำหรับข้อความ ต้องเพิ่มแอตทริบิวต์นี้ก่อนหมายเลขสีคั่นด้วยอัฒภาค (;) ข้อความที่มีแอตทริบิวต์เหล่านี้จะมีลักษณะแตกต่างกันในตัวจำลองเทอร์มินัลต่างๆ
นี่คือค่าสำหรับแอตทริบิวต์ข้อความ:
- ข้อความปกติ: 0
- ข้อความตัวหนาหรือเบา: 1 (ขึ้นอยู่กับตัวจำลองเทอร์มินัล)
- ข้อความสลัว: 2
- ข้อความที่ขีดเส้นใต้: 4
- ข้อความกะพริบ: 5 (ใช้ไม่ได้กับตัวเลียนแบบเทอร์มินัลส่วนใหญ่)
- ข้อความที่กลับด้าน: 7 (จะเปลี่ยนสีพื้นหน้าและสีพื้นหลังดังนั้นคุณจะเห็นข้อความสีดำบนพื้นหลังสีขาวหากข้อความปัจจุบันเป็นข้อความสีขาวบนพื้นหลังสีดำ)
- ข้อความที่ซ่อน: 8
คุณไม่จำเป็นต้องใส่แอตทริบิวต์ข้อความปกติ นั่นคือค่าเริ่มต้นอย่างไรก็ตาม
ตัวอย่างเช่นเนื่องจากข้อความสีแดงคือรหัส 31 และข้อความตัวหนาคือรหัส 1 คุณจึงควรใช้
\[\033[
1;31
ม \]
สำหรับข้อความตัวหนาสีแดง
คุณสามารถระบุสีพื้นหลังได้ แต่ไม่สามารถเพิ่มแอตทริบิวต์ให้กับสีพื้นหลังได้
ค่าสีพื้นหลังมีดังนี้
- พื้นหลังสีดำ: 40
- พื้นหลังสีน้ำเงิน: 44
- พื้นหลังสีฟ้า: 46
- พื้นหลังสีเขียว: 42
- พื้นหลังสีม่วง: 45
- พื้นหลังสีแดง: 41
- พื้นหลังสีขาว: 47
- พื้นหลังสีเหลือง: 43
ตัวอย่างเช่นเนื่องจากพื้นหลังสีน้ำเงินคือรหัส 44
\[\033[
44
ม \]
จะระบุพื้นหลังสีน้ำเงิน
คุณสามารถระบุทั้งแท็กสีพื้นหน้าและพื้นหลัง ตัวอย่างเช่น 42 หมายถึงพื้นหลังสีเขียวและ 31 แทนข้อความสีแดง ดังนั้นในการทำให้ข้อความแจ้งเริ่มต้นกลายเป็นข้อความสีแดงบนพื้นหลังสีเขียวคุณควรใช้:
Ψ1 = "\ [\ 033 [42ม \] \ [\ 033 [31ม \] \ u @ \ h: \ w \ $ "
เราเพียงระบุสีพื้นหลังสีเดียวจากนั้นสีข้อความพื้นหน้าสีเดียวที่นี่ซึ่งเริ่มต้นที่จุดเริ่มต้นของพรอมต์และใช้กับข้อความทั้งหมดในพร้อมต์ อย่างไรก็ตามคุณสามารถระบุแท็กสีได้มากเท่าที่คุณต้องการในตัวแปรเพื่อกำหนดสีส่วนต่างๆของพรอมต์ตามที่คุณต้องการ
สีข้อความพื้นหลังและพื้นหน้าจะผ่านพรอมต์ไปเรื่อย ๆ เว้นแต่คุณจะระบุรหัสสี 00 ล้างข้อมูลสี คุณยังสามารถใช้แท็กนี้ภายในตัวแปรเพื่อรีเซ็ตการจัดรูปแบบกลับไปเป็นค่าเริ่มต้นในข้อความแจ้งของคุณ ตัวอย่างเช่นบรรทัดต่อไปนี้จะสิ้นสุดการระบายสีทั้งหมดก่อนไฟล์
\$
ตัวละคร.
Ψ1 = "\ [\ 033 [42ม \] \ [\ 033 [31ม \] \ u @ \ h: \ w \\ [\ 033 [00ม \] \ $ "
วิธีตั้งค่าพรอมต์เริ่มต้นใหม่ของคุณ
เมื่อคุณทดลองสีเสร็จแล้วคุณควรมี Bash prompt ที่คุณชอบในเซสชันปัจจุบัน แต่คุณอาจต้องการทำให้พรอมต์ใหม่นั้นเป็นแบบถาวรเพื่อให้ถูกใช้โดยอัตโนมัติในเซสชัน Bash ทั้งหมดของคุณ
ในการดำเนินการนี้คุณเพียงแค่เปลี่ยนเนื้อหาของตัวแปร PS1 ในไฟล์. bashrc ซึ่งเราได้ดูไปก่อนหน้านี้
เปิดไฟล์. bashrc ในโปรแกรมแก้ไขข้อความที่คุณต้องการดังนี้:
นาโน ~ / .bashrc
เลื่อนลงและค้นหาส่วน PS1 = เพียงแค่แทนที่ตัวแปรเริ่มต้นด้วยตัวแปรที่คุณกำหนดเอง คุณอาจต้องการออกจากไฟล์
${debian_chroot:+($debian_chroot)}
อย่างไรก็ตามบิตเพียงอย่างเดียวมันจะไม่ปรากฏเว้นแต่คุณจะอยู่ในสภาพแวดล้อมแบบ chroot อย่างไรก็ตาม
ป้อนตัวแปร PS1 สีของคุณภายใต้ไฟล์
ถ้า [ "$color_prompt" = yes ]; แล้ว
ไลน์. ป้อนตัวแปรที่ไม่มีสีภายใต้
อื่น
ไลน์.
บันทึกไฟล์และปิดโปรแกรมแก้ไขข้อความของคุณ ตัวอย่างเช่นในการบันทึกไฟล์ในนาโนให้กด Ctrl + O กด Enter จากนั้นกด Ctrl + X เพื่อออก
ในครั้งต่อไปที่คุณเริ่ม Bash shell ใหม่ตัวอย่างเช่นโดยการลงชื่อเข้าใช้ที่เครื่องเทอร์มินัลหรือเปิดหน้าต่างเทอร์มินัลใหม่คุณจะเห็นข้อความแจ้งที่กำหนดเอง