โฮมเพจ » ทำอย่างไร » วิธีปรับแต่ง (และ Colorize) Bash Prompt ของคุณ

    วิธีปรับแต่ง (และ 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 ใหม่ตัวอย่างเช่นโดยการลงชื่อเข้าใช้ที่เทอร์มินัลหรือโดยการเปิดหน้าต่างเทอร์มินัลใหม่คุณจะเห็นพรอมต์ที่คุณกำหนดเอง.