มีวิธีที่จะนำเสนอชื่อเซสชั่นหน้าจอ 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