ในเชลล์ bash พรอมต์คำสั่งคือข้อความที่แสดงเมื่อคุณได้รับพร้อมท์ให้ป้อนข้อมูล ในระบบส่วนใหญ่จะมีลักษณะดังนี้:
ในพรอมต์คุณสามารถมีข้อมูลก่อนที่คุณจะเรียกใช้คำสั่งใด ๆ ตัวอย่างเช่นพรอมต์ด้านบนแสดงให้คุณเห็นดังต่อไปนี้
- คุณเป็นใคร (ผู้ใช้ชื่อ ผู้ใช้ )
- คุณอยู่ที่ไหน (คอมพิวเตอร์ชื่อ myhost )
- ไดเรกทอรีทำงานของคุณคืออะไร ( ~ ซึ่งเป็นตัวย่อสำหรับไดเรกทอรีบ้านของคุณ)
บางทีที่สำคัญที่สุดคือเครื่องหมายดอลลาร์ (" $ ") ซึ่งเป็นอักขระพิเศษที่ระบุว่าคุณเข้าสู่ระบบในฐานะผู้ใช้ที่ไม่ใช่รูท หากคุณเข้าสู่ระบบในฐานะรูทตัวละครนี้จะเป็นเครื่องหมายปอนด์ (" # ") แทน
สตริงที่แทนพรอมต์จะถูกเก็บไว้ในตัวแปรสภาพแวดล้อมพิเศษชื่อ PS1 สำหรับพรอมต์ข้างต้นค่าของมันจะเป็นดังนี้
"\ [ป้องกันอีเมล] \ h: \ W \ $"
สตริงนี้มีสี่อักขระพิเศษ: \ u, \ h, \ W, \ $ เหล่านี้คือลำดับอักขระที่ใช้ Escape ซึ่งจะถูกแทนที่ด้วยค่าจริงทุกครั้งที่มีการแจ้งเตือน
ตัวละครพิเศษ
ลำดับอักขระพิเศษที่แสดงในตารางด้านล่างสามารถใช้ในพรอมต์ของ bash shell
ลำดับตัวละคร | แปลเป็น |
---|---|
\ a | อักขระ "สัญญาณเตือน" ทริกเกอร์เสียงบี๊บหรือแฟลชหน้าจอ |
\ d | วันที่ปัจจุบันซึ่งแสดงในรูปแบบ วันธรรมดาเดือนวันที่ (เช่น วันพุธ 13 พฤษภาคม ) |
\ D { รูปแบบ } | วันที่และเวลาปัจจุบันที่แสดงตามรูปแบบที่ตีความโดย strftime หากไม่ระบุรูปแบบ \ D {} จะแสดงเวลา AM / PM 12 ชั่วโมงปัจจุบัน (เช่น 07:23:01 PM ) |
\ E | อักขระเลี่ยง (ASCII 27) |
\ e [ หมายเลข m | หมายถึงการเริ่มต้นของลำดับที่จะแสดงสีโดยที่ number คือตัวเลขหรือคู่ของตัวเลขซึ่งระบุสีและสไตล์ที่จะใช้ ดูรายการสีและคู่ของตัวเลขด้านล่าง |
\ E [เมตร | แสดงถึงจุดสิ้นสุดของลำดับที่จะแสดงเป็นสี |
\ ชั่วโมง | ชื่อโฮสต์ของเครื่องสูงสุด " . " ตัวอย่างเช่นหากชื่อโฮสต์ของระบบคือ myhost.mydomain, \ h แสดง myhost |
\ H | ชื่อโฮสต์แบบเต็มของเครื่อง |
\ J | จำนวนงานที่จัดการโดยเชลล์ |
\ ลิตร | ตัวระบุอุปกรณ์ปลายทางของเชลล์โดยทั่วไปจะเป็นตัวเลขหลักเดียว |
\ n | ขึ้นบรรทัดใหม่ |
\ r | การคืนสินค้า |
\ s | ชื่อของเชลล์ (ชื่อฐานของกระบวนการที่เริ่มต้นเซสชัน bash ปัจจุบัน) |
\ t | เวลาปัจจุบันแสดงเป็นรูปแบบ HH: MM: SS 24 ชั่วโมง (เช่น 19:23:01 ) |
\ T | เวลาปัจจุบันแสดงในรูปแบบ HH: MM: SS แบบ 12 ชั่วโมง (เช่น 07:23:01 ) |
\ @ | เวลาปัจจุบันแสดงในรูปแบบ HH: MM: SS AM / PM 12 ชั่วโมง (เช่น 07:23:01 PM ) |
\ a | เวลาปัจจุบันในรูปแบบ HH: 24 ชั่วโมง MM (เช่น 19:23 ) |
\ยู | ชื่อผู้ใช้ของผู้ใช้ปัจจุบัน |
\ วี | หมายเลขเวอร์ชัน Bash (เช่น 4.3 ) |
\ V | รุ่น Bash และหมายเลขโปรแกรมแก้ไข (เช่น 4.3.30 ) |
w \ | ไดเรกทอรีปัจจุบัน โฮมไดเร็กตอรี่ของผู้ใช้นั้นย่อมาจาก tilde (" ~ ") ตัวอย่างเช่น / usr / bin, ~ หรือ ~ / Documents |
\ W | ชื่อฐานของไดเรกทอรีทำงานปัจจุบัน (เช่น bin, ~ หรือ เอกสาร ) |
\! | หมายเลขประวัติของคำสั่งปัจจุบัน |
\ # | หมายเลขคำสั่งของคำสั่งปัจจุบัน (หมายเลขคำสั่งเหมือนกับหมายเลขประวัติ แต่จะรีเซ็ตเป็นศูนย์เมื่อคุณเริ่มเซสชัน bash ใหม่) |
\ nnn | อักขระ ASCII ที่มีค่าฐานแปดคือ nnn |
\\ | แบ็กสแลช |
\ [ | ทำเครื่องหมายจุดเริ่มต้นของลำดับของอักขระที่ไม่ได้พิมพ์เช่นรหัสควบคุมเทอร์มินัล |
\] | ทำเครื่องหมายจุดสิ้นสุดของลำดับที่ไม่พิมพ์ |
\ $ | พิมพ์ # ถ้า UID เป็นศูนย์ (superuser) หรือ $ ถ้ามากกว่าศูนย์ (คนอื่น) |
การเปลี่ยนพรอมต์สำหรับเซสชันปัจจุบัน
คุณสามารถตั้งค่าตัวแปรสภาพแวดล้อม PS1 ได้ เช่นเดียวกับตัวแปรอื่น ๆ ใน bash โดยมีรูปแบบข้อความสั่ง NAME = VALUE ดังนั้นในการตั้งค่าพรอมต์มาตรฐานคุณสามารถพิมพ์ดังต่อไปนี้ที่บรรทัดคำสั่ง
PS1 = "\ [ป้องกันอีเมล] \ h: \ W \ $"
…และข้อความแจ้งของคุณจะเปลี่ยนทันที สังเกตุช่องว่างสุดท้ายหลังเครื่องหมายดอลลาร์ในสตริงสำหรับช่องว่างเพิ่มเติมหลังจากพรอมต์ของคุณซึ่งทำให้ง่ายต่อการแยกความแตกต่างคำสั่งที่คุณพิมพ์จากพรอมต์ พื้นที่เพิ่มเติมไม่จำเป็น แต่ขอแนะนำ
โปรดสังเกตว่าในคำสั่งไม่มีช่องว่างระหว่าง PS1, = และสตริง
การเปลี่ยนพรอมต์สำหรับเซสชันในอนาคตทั้งหมด
หากคุณต้องการเปลี่ยนพรอมต์สำหรับเซสชันใหม่ทุกครั้งคุณต้องแก้ไขไฟล์ bash startup ของคุณ ทุกครั้งที่คุณเริ่มต้นเซสชันเทอร์มินัลไฟล์ต่อไปนี้หากมีอยู่จะถูกอ่านและเรียกใช้งานเป็นสคริปต์:
/ etc / profile ~ / .bash_profile ~ / .bash_login
~ / .profile
ไฟล์แรก / etc / profile เป็นสคริปต์เริ่มต้นสำหรับผู้ใช้ในระบบที่เริ่มเซสชัน bash ในการเปลี่ยนพรอมต์สำหรับผู้ใช้ทุกคนคุณต้องแก้ไขไฟล์นี้และคุณต้องมีสิทธิ์ผู้ใช้ขั้นสูงในการทำเช่นนั้น
sudo vi / etc / profile
ตัวอย่างเช่นคำสั่งดังกล่าวจะแจ้งให้คุณใส่รหัสผ่านของคุณและหากคุณอยู่ในรายการ sudoers ให้เปิดไฟล์ universal bash startup เป็น superuser โดยใช้เครื่องมือแก้ไข vi
อีกสามไฟล์จะถูกค้นหาตามลำดับที่แสดงไว้ด้านบนและดำเนินการหลังจาก / etc / profile ไฟล์ทั้งสามนี้อยู่ในโฮมไดเร็กตอรี่ของคุณ, ดังนั้นไฟล์เหล่านั้นจะถูกเรียกใช้งานสำหรับคุณเท่านั้น พวกเขาอาจกำหนด PS1 ในที่เดียวมากกว่าหนึ่งแห่งดังนั้นคุณควรอ่านไฟล์อย่างละเอียดเพื่อดูว่าพวกเขามีการกำหนดค่าในระบบของคุณอย่างไร ตัวอย่างเช่นระบบจำนวนมากจะใช้ค่า PS1 ที่แตกต่างกันขึ้นอยู่กับว่าเทอร์มินัลของคุณรองรับสีหรือไม่
ไฟล์ใดไฟล์หนึ่งในสามไฟล์นี้อาจมีอยู่และใช้สำหรับเซสชัน bash ของคุณ แต่หากมีมากกว่าหนึ่งไฟล์ไฟล์เหล่านั้นจะถูกดำเนินการตามลำดับที่แสดงไว้
หากคุณไม่ต้องการลบหรือเปลี่ยนบรรทัดในไฟล์เริ่มต้นคุณสามารถเพิ่มคำสั่ง PS1 = ใหม่ไปยังจุดสิ้นสุดของไฟล์ใดไฟล์หนึ่งเพื่อใช้พรอมต์แบบกำหนดเอง
เพิ่มสีให้กับพรอมต์ของคุณ
หากคุณใช้เทอร์มินัลที่รองรับสี (และคุณอาจเป็น) คุณสามารถเพิ่มสีให้กับพรอมต์ของคุณ เพิ่มสีโดยใช้ลำดับอักขระพิเศษที่เป็นไปตามรูปแบบนี้:
\ e [ หมายเลข m | เริ่มต้นส่วนที่มีสี ค่าตัวเลขคือหมายเลขพิเศษหรือคู่ของตัวเลขซึ่งระบุสี |
\ E [เมตร | หมายถึงจุดจบของส่วนสี รีเซ็ตเป็นสีเริ่มต้น |
ตัวอย่างเช่นสตริงแจ้ง:
PS1 = "\ e [1; 35m นี่คือสีม่วงสดใส \ e [0; 35m ... และนี่คือสีม่วงเข้ม \ e [m"
จะสร้างพรอมต์ที่มีลักษณะดังนี้:
นี่คือรายการสีที่คุณสามารถใช้ได้และหมายเลขที่ระบุ:
จำนวน (s) | สี / รูปแบบ | จำนวน (s) | สี / รูปแบบ |
---|---|---|---|
0; 30 | สีดำ | 1; 30 | เทาเข้ม |
0; 31 | สีแดง | 1; 31 | แดงสด |
0; 32 | สีเขียว | 1; 32 | สีเขียวสดใส |
0; 33 | สีน้ำตาล | 1; 33 | สีเหลือง |
0; 34 | สีน้ำเงิน | 1; 34 | สีฟ้าสดใส |
0; 35 | สีม่วง | 1; 35 | สีม่วงสดใส |
0; 36 | สีฟ้า | 1; 36 | ฟ้าสดใส |
0; 37 | สีเทา | 1; 37 | ขาว |
4; 30 | ขีดเส้นใต้สีดำ | 40 | พื้นหลัง: สีเทาเข้ม |
4; 31 | สีแดงขีดเส้นใต้ | 41 | พื้นหลัง: สีแดง |
4; 32 | เขียวขีดเส้นใต้ | 42 | พื้นหลัง: สีเขียว |
4; 33 | สีน้ำตาลขีดเส้นใต้ | 43 | พื้นหลัง: สีเหลือง |
4; 34 | สีน้ำเงินขีดเส้นใต้ | 44 | พื้นหลัง: สีน้ำเงิน |
4; 35 | สีม่วงขีดเส้นใต้ | 45 | พื้นหลัง: สีม่วง |
4; 36 | สีฟ้าขีดเส้นใต้ | 46 | พื้นหลัง: สีฟ้า |
4; 37 | สีเทาขีดเส้นใต้ | 47 | พื้นหลัง: สีเทา |
นี่คือตัวอย่างและสิ่งที่พวกเขาดูเหมือน:
PS1 = "\ e [0; 31mRed \ e [0; 32mGreen \ e [0; 33mBrown \ e [0; 34mBlue \ e [0; 35mPurple \ e [0; 36mCray \ e [m"
PS1 = "ขีดเส้นใต้: \ e [4; 31mRed \ e [4; 32mGreen \ e [4; 33mBrown \ e [4; 34mBlue \ e [4; 35mPurple \ e [4; 36mCyan \ e [4; 37mGray \ e [4; m"
PS1 = "\ e [44m \ e [1; 35mBright purple บนพื้นหลังสีฟ้า \ e [m"