วิธีปรับแต่ง (และ Colorize) Bash Prompt ของคุณ
ลีนุกซ์ส่วนใหญ่จะตั้งค่าพรอมต์ของ Bash ให้ดูเหมือน ชื่อผู้ใช้ @ ชื่อโฮสต์: ไดเรกทอรี $
. แต่คุณสามารถกำหนดค่าพรอมต์ Bash เพื่อเก็บสิ่งที่คุณต้องการและเลือกสีที่คุณชอบ.
ขั้นตอนตัวอย่างที่นี่ดำเนินการกับ Ubuntu 16.04 LTS กระบวนการควรเหมือนกันในลีนุกซ์รุ่นอื่น ๆ , แม้ว่า Bash prompt และการตั้งค่าเริ่มต้นในไฟล์. bashrc อาจจะแตกต่างกันเล็กน้อย.
ตำแหน่งที่เก็บตัวแปรพร้อมท์
การกำหนดค่าพรอมต์ Bash ของคุณจะถูกเก็บไว้ในไฟล์. bashrc ของบัญชีผู้ใช้ของคุณซึ่งอยู่ที่ ~ / .bashrc
. ดังนั้นหากชื่อผู้ใช้ของคุณเป็น bob ไฟล์จะอยู่ที่ /home/bob/.bashrc
.
คุณสามารถเปิดไฟล์เพื่อดูตัวแปร Bash ปัจจุบัน เราจะใช้นาโนเป็นตัวแก้ไขข้อความตัวอย่างของเราแม้ว่าคุณสามารถใช้ vi, emacs หรือโปรแกรมแก้ไขข้อความอื่น ๆ ที่คุณคุ้นเคย เปิด Terminal และเรียกใช้:
นาโน ~ / .bashrc
เลื่อนลงไปที่ PS1 =
มาตรา. ตัวแปรแรกดูค่อนข้างซับซ้อนเพราะมันมีข้อมูลสีเราจะอธิบายในภายหลัง ตัวแปรที่สองที่ไม่มีข้อมูลสีจะอ่านดังนี้:
$ debian_chroot: + ($ debian_chroot) \ ยู @ \ H: w \ \ $
นี้ยังคงซับซ้อนเล็กน้อยเนื่องจาก $ debian_chroot: + ($ debian_chroot)
เกร็ด สิ่งเหล่านี้เพียงบอก Bash เพื่อแจ้งให้คุณทราบว่าคุณกำลังใช้สภาพแวดล้อม Debian chroot และปกติจะไม่ปรากฏ ไม่สนใจสิ่งเหล่านี้นี่คือโครงสร้างเริ่มต้นของตัวแปร Bash prompt:
\ ยู @ \ H: w \ \ $
\ยู
ระบุชื่อผู้ใช้ของคุณ, แอท
หมายถึงเครื่องหมาย @, \ ชั่วโมง
ระบุชื่อโฮสต์ (ชื่อคอมพิวเตอร์), :
บ่งชี้อักขระ:, w \
ระบุไดเรกทอรีทำงานและ \ $
ระบุ $ ถ้าคุณเป็นบัญชีผู้ใช้ปกติหรือ # ถ้าคุณรูท ดังนั้นเมื่อรวมทั้งหมดเข้าด้วยกันคุณจะได้รับ ชื่อผู้ใช้ @ ชื่อโฮสต์: working_directory $
.
ในการเปลี่ยนพรอมต์ Bash ของคุณคุณต้องเพิ่มลบหรือจัดเรียงอักขระพิเศษใหม่ในตัวแปร PS1 แต่มีตัวแปรอีกมากมายที่คุณสามารถใช้ได้มากกว่าตัวแปรเริ่มต้น.
ปล่อยให้เท็กซ์เอดิเตอร์สำหรับ now-in nano กด Ctrl + X เพื่อออก เราจะแสดงวิธีการทดสอบตัวแปรก่อนที่จะเขียนใหม่ลงในไฟล์. bashrc ของคุณ.
วิธีสร้าง Custom Bash Prompt
การกำหนดค่าพรอมต์ Bash ของคุณจะถูกเก็บไว้ในตัวแปร PS1 หากต้องการบันทึกเนื้อหาของตัวแปร PS1 ลงในตัวแปรใหม่ให้รันคำสั่งต่อไปนี้:
default = $ PS1
ตอนนี้คุณสามารถตั้งค่าตัวแปร PS1 ให้เป็นค่าที่ต่างกันเพื่อทำการทดสอบ ตัวอย่างเช่นบรรทัดแรกที่นี่จะตั้งค่าพรอมต์ของคุณให้เป็นพรอมต์“ ผู้ใช้ $” พื้นฐานในขณะที่บรรทัดที่สองจะตั้งค่าพรอมต์ของคุณให้เป็น "ผู้ใช้: working_directory $" พื้นฐาน.
PS1 = "\ u \ $" PS1 = "\ u: \ w \ $"
หากคุณต้องการกลับไปที่พรอมต์เริ่มต้นของคุณเพียงเรียกใช้คำสั่งต่อไปนี้.
PS1 = $ เริ่มต้น
Bash จะถูกกู้คืนเป็นพรอมต์เริ่มต้นด้วยความจริงที่ว่าคุณบันทึกการตั้งค่าเริ่มต้นไว้ก่อนหน้านี้ โปรดทราบว่าการเปลี่ยนแปลงใด ๆ ที่คุณทำที่นี่เป็นเพียงชั่วคราวสำหรับเซสชัน Bash ปัจจุบันดังนั้นคุณสามารถออกจากระบบและลงชื่อกลับเข้าใช้หรือปิดและเปิดหน้าต่างเทอร์มินัลใหม่เพื่อกลับไปที่พรอมต์เริ่มต้นของคุณ แต่บรรทัดข้างต้นทำให้สามารถกลับไปที่ค่าเริ่มต้น Bash prompt ได้อย่างง่ายดายโดยไม่ต้องยุ่งยากในการออกจากระบบหรือปิดหน้าต่าง.
คุณสามารถเพิ่มตัวละครหรือข้อความใด ๆ ให้กับตัวแปร ดังนั้นเพื่อนำหน้าพรอมต์เริ่มต้นด้วย“ Hello World” คุณสามารถใช้:
PS1 = "สวัสดีชาวโลก \ u @ \ h: \ w \ $"
ตอนนี้คุณมีพื้นฐานไม่เพียงพอคุณเพียงแค่ต้องรู้ว่าอักขระพิเศษทั้งหมดคืออะไร คุณอาจไม่สนใจสิ่งเหล่านี้มากมาย แต่นี่เป็นรายการแบบเต็มตามที่ปรากฏในคู่มือ Bash:
- ตัวละครระฆัง:
\ a
- วันที่ในรูปแบบ“ วันทำงานเดือนวันที่” (เช่น“ วันที่ 26 พฤษภาคม”):
\ d
- รูปแบบถูกส่งผ่านไปยัง strftime (3) และผลลัพธ์ถูกแทรกลงในสตริงพร้อมท์ รูปแบบที่ว่างเปล่าส่งผลให้เกิดการแทนเวลาเฉพาะสถานที่ ต้องใส่เครื่องมือจัดฟัน:
\ D รูปแบบ
- ตัวละครหนี:
\ E
- ชื่อโฮสต์จนถึงแรก '.':
\ ชั่วโมง
- ชื่อโฮสต์:
\ H
- จำนวนงานที่จัดการโดยเชลล์ในปัจจุบัน:
\ J
- ชื่อฐานของชื่ออุปกรณ์ปลายทางของเชลล์:
\ ลิตร
- บรรทัดใหม่:
\ n
- ผลตอบแทนการขนส่ง:
\ r
- ชื่อของเชลล์ชื่อฐานของ $ 0 (ส่วนหลังสแลชสุดท้าย):
\ s
- เวลาในรูปแบบ HH: 24 ชั่วโมง: MM: SS:
\ t
- เวลาในรูปแบบ HH: MM: SS เป็นเวลา 12 ชั่วโมง:
\ T
- เวลาในรูปแบบ 12 ชั่วโมง am / pm:
\ @
- เวลาในรูปแบบ HH: 24 ชั่วโมง MM:
\ a
- ชื่อผู้ใช้ของผู้ใช้ปัจจุบัน:
\ยู
- รุ่นของ Bash (เช่น 2.00):
\ วี
- การเปิดตัวของ Bash เวอร์ชัน + patchlevel (เช่น 2.00.0):
\ V
- ไดเร็กทอรีการทำงานปัจจุบันที่มี $ HOME ตัวย่อพร้อมด้วยเครื่องหมายตัวหนอน (ใช้ตัวแปร $ PROMPT_DIRTRIM):
w \
- ชื่อฐานของ $ PWD โดยมี $ HOME ตัวย่อพร้อมเครื่องหมายตัวหนอน:
\ W
- หมายเลขประวัติของคำสั่งนี้:
\!
- หมายเลขคำสั่งของคำสั่งนี้:
\ #
- หาก uid ที่มีประสิทธิภาพคือ 0, #, มิฉะนั้น $:
\ $
- อักขระที่มีรหัส ASCII คือค่าฐานแปด nnn:
\ nnn
- แบ็กสแลช:
\\
- เริ่มต้นลำดับของอักขระที่ไม่พิมพ์ สิ่งนี้สามารถใช้เพื่อฝังลำดับการควบคุมเทอร์มินัลลงในพร้อมท์:
\ [
- สิ้นสุดลำดับของอักขระที่ไม่ได้พิมพ์:
\]
ดังนั้นหากคุณต้องการเพิ่มวันที่และเวลาใน Bash prompt และใส่ไดเร็กตอรี่ที่ทำงานบนบรรทัดที่สอง, คุณสามารถใช้โครงสร้างต่อไปนี้:
PS1 = "[\ d \ t] \ u @ \ h \ n \ w \ $"
วงเล็บเหลี่ยมที่นี่ไม่จำเป็นเลย แต่ช่วยแบ่งสิ่งออกเป็นภาพและทำให้อ่านง่ายขึ้น ตามที่กล่าวไว้ก่อนหน้านี้คุณสามารถเพิ่มข้อความหรืออักขระปกติลงในตัวแปรที่คุณชอบดังนั้นอย่าลังเลที่จะใช้สิ่งที่เหมาะกับคุณ.
มีเคล็ดลับที่มีประสิทธิภาพมากกว่าที่คุณควรทราบเกี่ยวกับ: คุณสามารถเพิ่มผลลัพธ์ของคำสั่งใด ๆ ลงในพรอมต์ เมื่อใดก็ตามที่พรอมต์ปรากฏ Bash จะเรียกใช้คำสั่งและกรอกข้อมูลปัจจุบัน หากต้องการทำสิ่งนี้เพียงแค่รวมคำสั่งที่คุณต้องการเรียกใช้ระหว่างสองคำสั่ง '
ตัวละคร นั่นไม่ใช่เครื่องหมายอะโพสโทรฟี - นั่นคือสำเนียงหลุมศพซึ่งปรากฏอยู่เหนือปุ่ม Tab บนแป้นพิมพ์ของคุณ.
ตัวอย่างเช่นสมมติว่าคุณต้องการดูเวอร์ชันเคอร์เนล Linux ในพรอมต์ คุณสามารถใช้บรรทัดดังต่อไปนี้:
PS1 = "\ u @ \ h บน 'uname -s -r' \ w \ $"
เป็นอีกตัวอย่างหนึ่งสมมติว่าคุณต้องการดูสถานะการออนไลน์และโหลดเฉลี่ยตามที่แสดงโดย uptime
คำสั่ง คุณสามารถใช้สิ่งก่อสร้างต่อไปนี้ซึ่งกำหนดเวลาทำงานในบรรทัดของตัวเองก่อนส่วนที่เหลือของพรอมต์.
PS1 = "('เวลาทำงาน') \ n \ u @ \ h: \ w $"
อย่าลังเลที่จะทดสอบกับอักขระพิเศษและคำสั่งต่าง ๆ เพื่อรวบรวมพรอมต์คำสั่งในอุดมคติของคุณ.
วิธีเพิ่มสีให้กับ Bash Prompt ของคุณ
เมื่อคุณพบข้อความแจ้งที่คุณต้องการคุณสามารถเพิ่มสีลงไปได้ นี่มันง่ายมาก แต่มันทำให้ตัวแปรดูยุ่งเหยิงและซับซ้อนมากหากคุณไม่เข้าใจสิ่งที่คุณกำลังดู.
ตัวอย่างเช่นตัวแปรพรอมต์สีเริ่มต้นจากก่อนหน้าคือ:
$ debian_chroot: + ($ debian_chroot) \ [\ 033 [01; 32m \] \ ยู @ \ ชั่วโมง \ [\ 033 [00M \]: \ [\ 033 [01; 34m \] w \ \ [\ 033 [00M \] \ $
หรือลบบิต debian_chroot อีกครั้ง:
\ [\ 033 [01; 32m \] \ ยู @ \ ชั่วโมง \ [\ 033 [00M \]: \ [\ 033 [01; 34m \] w \ \ [\ 033 [00M \] \ $
นี่เป็นเพียงแค่ \ ยู @ \ H: \ $ W
ตัวแปรจากก่อนหน้านี้ แต่มีข้อมูลสี จริงๆแล้วเราสามารถแบ่งมันออกเป็นสองสามส่วน:
\ [\ 033 [01; 32m \]\ ยู @ \ ชั่วโมง \ [\ 033 [00M \]: \ [\ 033 [01; 34m \]w \ \ [\ 033 [00M \]\ $
ส่วนแรกคือ \ ยู @ \ ชั่วโมง
บิตนำหน้าด้วยข้อมูลสีที่เปลี่ยนเป็นสีเขียว ประการที่สองคือ :
อักขระนำหน้าด้วยข้อมูลสีที่ลบสีใด ๆ ที่สามคือ w \
บิตนำหน้าด้วยข้อมูลสีที่เปลี่ยนเป็นสีน้ำเงิน ที่สี่คือ \ $
บิตนำหน้าด้วยข้อมูลสีที่ลบสีใด ๆ.
เมื่อคุณเข้าใจวิธีสร้างแท็กสีของคุณเองคุณสามารถเพิ่มสีใดก็ได้ที่คุณชอบลงในส่วนใดก็ได้ของ Bash ที่คุณต้องการ.
นี่คือสิ่งที่คุณต้องรู้: คุณต้องรวมข้อมูลรหัสสีทั้งหมดระหว่าง \ [
และ ตัวอักษร \]
s ภายในแท็กคุณต้องเริ่มต้นด้วย \ 033 [
หรือ \ E [
เพื่อระบุถึง Bash ว่านี่คือข้อมูลสี ทั้งสอง \ 033 [
และ \ E [
ทำสิ่งเดียวกัน. \ E [
สั้นกว่าดังนั้นอาจใช้งานได้สะดวกกว่า แต่เราจะใช้ \ 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 หมายถึงข้อความสีแดง ดังนั้นหากต้องการให้พรอมต์เริ่มต้นกลายเป็นข้อความสีแดงบนพื้นหลังสีเขียวคุณต้องใช้:
PS1 = "\ [\ 033 [42ม. \] \ [\ 033 [วันที่ 31m \] \ u @ \ h: \ w \ $ "
เราเพียงระบุสีพื้นหลังเดียวจากนั้นเลือกสีพื้นหน้าเดียวที่นี่ซึ่งเริ่มต้นที่จุดเริ่มต้นของพรอมต์และใช้กับข้อความทั้งหมดในพรอมต์ อย่างไรก็ตามคุณสามารถระบุแท็กสีได้มากเท่าที่คุณต้องการในตัวแปรเพื่อเปลี่ยนสีส่วนต่าง ๆ ของพรอมต์ของคุณตามที่คุณต้องการ.
สีพื้นหลังและพื้นหน้าของข้อความจะยังคงผ่านไปตามพรอมต์เว้นแต่คุณจะระบุรหัสสี 00 ให้ล้างข้อมูลสี คุณยังสามารถใช้แท็กนี้ภายในตัวแปรเพื่อรีเซ็ตการจัดรูปแบบกลับเป็นค่าเริ่มต้นที่ใดที่หนึ่งในพรอมต์ของคุณ ตัวอย่างเช่นบรรทัดต่อไปนี้จะสิ้นสุดการระบายสีทั้งหมดก่อน \ $
ตัวละคร.
PS1 = "\ [\ 033 [42ม. \] \ [\ 033 [วันที่ 31ม. \] \ ยู @ \ H: \ W \\ [\ 033 [00m \] \ $ "
วิธีตั้งค่าพรอมต์เริ่มต้นใหม่ของคุณ
เมื่อคุณทดลองใช้สีเสร็จแล้วคุณควรมี Bash prompt ที่คุณชื่นชอบในเซสชันปัจจุบัน แต่คุณอาจต้องการให้พรอมต์ใหม่นั้นถาวรดังนั้นมันจะถูกใช้โดยอัตโนมัติในเซสชัน Bash ทั้งหมดของคุณ.
ในการทำเช่นนี้คุณเพียงแค่ต้องเปลี่ยนเนื้อหาของตัวแปร PS1 ในไฟล์. bashrc ซึ่งเราได้ดูไปก่อนหน้านี้.
เปิดไฟล์. bashrc ในโปรแกรมแก้ไขข้อความที่ต้องการเช่น:
นาโน ~ / .bashrc
เลื่อนลงและค้นหาส่วน PS1 = เพียงแค่แทนที่ตัวแปรเริ่มต้นด้วยตัวแปรที่คุณกำหนดเอง คุณอาจต้องการออกจาก $ debian_chroot: + ($ debian_chroot)
บิตเพียงอย่างเดียวอย่างไรก็ตามจะไม่ปรากฏเว้นแต่ว่าคุณอยู่ในสภาพแวดล้อม chroot.
ป้อนตัวแปร PS1 สีของคุณภายใต้ ถ้า ["$ color_prompt" = ใช่]; แล้วก็
เส้น ป้อนตัวแปรที่ไม่มีสีภายใต้ อื่น
เส้น.
บันทึกไฟล์และปิดโปรแกรมแก้ไขข้อความของคุณ ตัวอย่างเช่นในการบันทึกไฟล์ในนาโนกด Ctrl + O กด Enter แล้วกด Ctrl + X เพื่อออก.
ครั้งต่อไปที่คุณเริ่มต้น Bash shell ใหม่ตัวอย่างเช่นโดยการลงชื่อเข้าใช้ที่เทอร์มินัลหรือโดยการเปิดหน้าต่างเทอร์มินัลใหม่คุณจะเห็นพรอมต์ที่คุณกำหนดเอง.