การทำให้พร้อมท์ Linux shell แสดงค่าส่งคืนล่าสุด


12

ขณะนี้ฉันอยู่บนเครื่อง Linux และ shell prompt แสดงค่าตอบแทนสุดท้ายและจำนวนคำสั่งที่เรียกใช้งาน (ภาพรวมด้วยตัวเลขเหล่านี้แสดงเป็นสีม่วง)

คอมพิวเตอร์ของฉันไม่มีสิ่งนี้ฉันจะกำหนดค่าได้อย่างไร
ฉันใช้ Xubunto หากต้องการรายละเอียดเพิ่มเติมให้ฉันรู้ - ฉันไม่ได้เป็นผู้ใช้ลีนุกซ์มาก (ฉันไม่รู้ว่ามีอะไรเกี่ยวข้องที่นี่)

ตัวอย่าง


นี่มันคลุมเครือเกินไปที่จะตอบ คำสั่งเหล่านี้ที่คุณกำลังดำเนินการคืออะไร? คอมพิวเตอร์ของคุณ (OS) ที่ไม่มีสิ่งนี้คืออะไร?
Chris Ting

ฉันบอกว่าระบบปฏิบัติการของฉันคือ Xubuntu และนี่ไม่เกี่ยวข้องกับคำสั่งเฉพาะใด ๆ มันเป็นสิ่งที่แสดงให้เห็นเสมอ
Eran

คำตอบ:


10

ดูเหมือนว่าbashเป็น Xubuntu ของเปลือกเริ่มต้น

แก้ไข.bashrcหรือ.bash_profile(ขึ้นอยู่กับการกำหนดค่าระบบของคุณ) PS1=และมองหาเส้นที่เริ่มต้นด้วย บรรทัดนี้ชุดของคุณพรอมต์

ในการเพิ่มค่าส่งคืนของคำสั่งสุดท้ายให้เพิ่มรายการต่อไปนี้ในบรรทัดนั้น:

`echo -n $?`

ดังนั้นดูเหมือนว่าเช่นต่อไปนี้ (พรอมต์ปัจจุบันของฉันง่าย):

PS1='\u in \w (`echo -n $?`)\n -> \$ '

มันจะมีลักษณะเช่นนี้โดย_เป็นเคอร์เซอร์:

danielbeck in ~ (0)
 -> $ _

หรือคุณสามารถใช้ตัวแปรสภาพแวดล้อมPROMPT_COMMANDเพื่อเพิ่มโค้ดส่งคืนให้กับพรอมต์ของคุณ:

export PROMPT_COMMAND='RET=$?; echo -n "($RET) "'

สิ่งนี้จะเพิ่มเช่น(0)ก่อนหน้าข้อความแจ้งเตือนที่ไม่ได้แก้ไขของคุณ


คุณจะได้รับ "เคาน์เตอร์" โดยการเพิ่ม\#การรับคำของคุณ: มันเป็นจำนวนคำสั่ง มีประโยชน์มากกว่าอาจเป็นหมายเลขประวัติซึ่งไม่ได้เริ่มต้นที่ 1 แต่ให้คุณรันคำสั่งใด ๆ โดยป้อนเครื่องหมายอัศเจรีย์ตามด้วยหมายเลขประวัติของคำสั่ง:

984 $ foo
-bash: foo: command not found
985 $ !984
foo
-bash: foo: command not found
986 $ _

หลังจากเล่นเพิ่มเติม:

PS1='`RET=$?; if [ $RET != 0 ] ; then echo "rc $?"; fi`\n\u in `pwd`\n#\# !\! \$ '

นี่จะแสดงค่าที่ส่งคืนหากไม่ใช่ศูนย์ในบรรทัดของตัวเอง หมายเลขคำสั่งและหมายเลขประวัติอยู่บนบรรทัดเดียวกับคำสั่งที่คุณจะป้อน:

danielbeck in /Users/danielbeck/Downloads
#1 !984 $ foo
-bash: foo: command not found
rc 127
danielbeck in /Users/danielbeck
#2 !985 $ _

5

ตัวแปร$?มีรหัสออกสำหรับโปรแกรมที่รันล่าสุด

ninth:~ sakkaku$ echo Hello World
Hello World
ninth:~ sakkaku$ echo $?
0
ninth:~ sakkaku$ cat asdasd
cat: asdasd: No such file or directory
ninth:~ sakkaku$ echo $?
1

ฉันคิดว่าคุณสามารถรับ "จำนวนคำสั่งที่ดำเนินการ" โดยใช้ตัวเพิ่ม

ninth:~ sakkaku$ echo $[numcommands++]
0
ninth:~ sakkaku$ echo $[numcommands++]
1
ninth:~ sakkaku$ echo $[numcommands++]
2
ninth:~ sakkaku$ echo $[numcommands++]
3

จากนั้นคุณจะต้องแก้ไขตัวแปร PS1 / PS2 ใน. bashrc ของคุณเพื่อเปลี่ยนพรอมต์ นี้ดูเหมือนว่าเป็นคำแนะนำที่ดี (ยกเว้นว่ามันจะแนะนำการปรับเปลี่ยน / etc / bashrc ผมก็จะทำ ~ / .bashrc)


1
ขอบคุณฉันจะลองใหม่ภายหลังเมื่อฉันอยู่ที่คอมพิวเตอร์ของฉันเองและจะดูว่ามันจะไปอย่างไร
Eran

1

ถ้าคุณใช้ zsh ก็จะยิ่งง่ายขึ้น โครงสร้างนี้: %(?..%F{red}%?%f)หมายถึงแสดงคำสั่งสุดท้ายระดับ errorlevel เป็นสีแดงถ้ามันไม่เป็นศูนย์ (ปกติ) แต่ถ้ามันไม่แสดงปกติ %(1j.[%j].)หมายถึงการสร้างแสดงจำนวนของงานพื้นหลังปัจจุบันในวงเล็บเหลี่ยม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.