ชื่อของเซสชันถูกเก็บไว้ในตัวแปรtmux#S
เพื่อเข้าถึงในเทอร์มินัลคุณสามารถทำได้
tmux display-message -p "#S"
หากคุณต้องการที่จะใช้ในก็เพียง.tmux.conf
#S
โปรดทราบว่า-p
ตัวเลือกจะพิมพ์ข้อความใน stdout มิฉะนั้นข้อความจะปรากฏในบรรทัดสถานะtmux
ถ้าคำสั่งดังกล่าวเรียกว่าภายในเซสชั่นก็จะส่งกลับชื่อของเซสชั่น หากถูกเรียกนอกเซสชันใด ๆ ก็ยังคงส่งคืนชื่อของเซสชันที่ยังทำงานล่าสุดอยู่ ฉันไม่พบคำสั่งtmuxเพื่อตรวจสอบหากมีในเซสชั่นหรือไม่ดังนั้นฉันจึงต้องมากับงานนี้:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
แสดงทุกเซสชันหากมีการเชื่อมต่อจะแสดง(attached)
ที่ส่วนท้าย ด้วยsedเราจะระงับเอาต์พุตทั้งหมด (ตัวเลือก-n
) ยกเว้นตำแหน่งที่เราค้นหาคำสำคัญ(attached)
ที่บรรทัดนี้เราตัดคำว่า everyhing หลังจาก a :
ซึ่งทำให้เรามีชื่อของเซสชัน tmux display-message -p "#S"
งานนี้สำหรับฉันภายในและภายนอกเซสชั่นเมื่อเทียบกับ
หลักสูตรนี้ใช้ได้เฉพาะในกรณีที่ไม่มี:
และไม่มี(attached)
ในชื่อของเซสชัน
ตามที่คอมเมนต์โดยChris Johnsenวิธีการตรวจสอบว่ามีอยู่ในเซสชั่นtmuxคือการดูว่าตัวแปรสภาพแวดล้อมของการตั้งค่า:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
เซสชั่นและอื่น ๆ ที่ฉันอยู่นอกtmux
เซสชั่น เมื่อฉันพิมพ์ทั้งสองคำสั่งtmux display-message -p "#S"
ผลลัพธ์เดียวกันจะถูกพิมพ์และค่าส่งคืนของทั้งสองคำสั่งจะเหมือนกัน