Tên của phiên được lưu trữ trong biến tmux#S
, để truy cập nó trong một thiết bị đầu cuối , bạn có thể làm
tmux display-message -p "#S"
Nếu bạn muốn sử dụng nó .tmux.conf
, nó chỉ đơn giản #S
. Lưu ý rằng -p
tùy chọn sẽ in thông báo trên thiết bị xuất chuẩn, nếu không, thông báo sẽ được hiển thị trong tmux dòng trạng thái .
Nếu lệnh trên được gọi bên trong một phiên, nó sẽ trả về tên của phiên. Nếu nó được gọi bên ngoài bất kỳ phiên nào, nó vẫn trả về tên của phiên vẫn đang chạy cuối cùng. Tôi không thể tìm thấy lệnh tmux để kiểm tra, nếu một trong số đó có trong phiên hay không, vì vậy tôi đã phải đưa ra công việc này xung quanh:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
hiển thị tất cả các phiên, nếu một phiên được đính kèm, nó sẽ hiển thị (attached)
ở cuối. Với sed, chúng tôi loại bỏ tất cả đầu ra (tùy chọn -n
) ngoại trừ nơi chúng tôi tìm thấy từ khóa (attached)
, tại dòng này, chúng tôi sẽ cắt bỏ mọi thứ sau một :
, để lại cho chúng tôi tên của phiên. Điều này làm việc cho tôi trong và ngoài một phiên, trái ngược với tmux display-message -p "#S"
.
Tất nhiên điều này chỉ hoạt động nếu không có :
và không có (attached)
trong tên của phiên.
Như nhận xét của Chris Johnsen , một cách để kiểm tra xem một người có ở trong phiên tmux hay không là xem biến môi trường của nó có được đặt không:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
phiên và bản còn lại tôi ngoàitmux
phiên. Khi tôi gõ vào cả hai lệnh đótmux display-message -p "#S"
, cùng một kết quả được in và giá trị trả về của cả hai lệnh là như nhau.