มีวิธีที่จะนำเสนอชื่อเซสชั่นหน้าจอ GNU และชื่อหน้าต่างในการแจ้งของเปลือก (ให้เราบอกว่า Bash ให้โดยกำหนดPS1
)
มีวิธีที่จะนำเสนอชื่อเซสชั่นหน้าจอ GNU และชื่อหน้าต่างในการแจ้งของเปลือก (ให้เราบอกว่า Bash ให้โดยกำหนดPS1
)
คำตอบ:
หน้าจอป้อนตัวแปรสภาพแวดล้อมบางอย่าง (จากscreen
(1) manpage):
STY Alternate socket name.
WINDOW Window number of a window (at creation time).
"เวลาสร้าง" หมายความว่าหากคุณเปลี่ยนหมายเลขหน้าต่าง (โดยใช้number
คำสั่งของหน้าจอ) เชลล์จะไม่ถูกบอกเกี่ยวกับการเปลี่ยนแปลงและ $ WINDOW จะยังคงเหมือนหมายเลขหน้าต่างแรก
คุณสามารถใช้สิ่งที่ชอบ:
PS1='\u@\h(${STY}:${WINDOW}):\w$ '
screen -xr 2466 -X windows
เช่น
Ctrl-a A
หรือไม่ถ้ามันถูกตั้งค่าด้วย?
screen
ได้รับการเรียบเรียงด้วย-Q
(แบบสอบถาม) ตัวเลือกแล้วคุณสามารถเรียกใช้คำสั่งบางอย่างเช่นtitle
และwindows
และมีการแสดงผลข้อมูลที่ stdout อย่างไรโดยไม่ต้องขึ้นบรรทัดใหม่
ฉันมักจะใช้ชื่อเซสชันหน้าจอที่แม่นยำเสมอ จากนั้นฉันสามารถเพิ่ม STY env var ของหน้าจอโดยดึงรหัสตัวเลข (ขอบคุณ dimo414) ไปที่ PS1 ฉันไม่ตกแต่งด้วยเครื่องหมายปีกกาหรืออะไรเพราะฉันไม่ได้อยู่ในเซสชั่นเสมอ ตัวอย่างง่ายๆ:
PS1='\u@\h ${STY#[0-9]*.} \w$ '
ฉันใช้สิ่งนี้:
(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)
ลบหมายเลขกระบวนการจากการ${STY}
รวมหมายเลขหน้าต่าง (ตามที่กล่าวถึง "ณ เวลาสร้าง")
รวมถึงชื่อหน้าต่าง (ตามที่ส่งคืนจากscreen -Q title
)
บันทึก:
screen -Q
รอการกดแป้นกลับ${STY#[0-9]*.}
sed