Nama sesi disimpan dalam variabel tmux#S
, untuk mengaksesnya di terminal , Anda bisa melakukannya
tmux display-message -p "#S"
Jika Anda ingin menggunakannya .tmux.conf
, sederhana saja #S
. Perhatikan bahwa -p
opsi akan mencetak pesan pada stdout, jika tidak pesan ditampilkan di baris status tmux .
Jika perintah di atas disebut di dalam sesi, itu mengembalikan nama sesi. Jika dipanggil di luar sesi apa pun, masih mengembalikan nama sesi yang masih berjalan terakhir. Saya tidak dapat menemukan perintah tmux untuk memeriksa, apakah ada di dalam sesi atau tidak, jadi saya harus membuat pekerjaan ini:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
menunjukkan semua sesi, jika ada yang terpasang, itu menunjukkan (attached)
di akhir. Dengan sed, kami menekan semua output (opsi -n
) kecuali di mana kami menemukan kata kunci (attached)
, pada baris ini kami memotong setiap setelah :
, yang membuat kami dengan nama sesi. Ini berfungsi untuk saya di dalam dan di luar sesi, bukan tmux display-message -p "#S"
.
Tentu saja ini hanya berfungsi jika tidak ada :
dan tidak ada (attached)
dalam nama sesi.
Seperti dikomentari oleh Chris Johnsen , cara untuk memeriksa apakah ada di dalam sesi tmux adalah untuk melihat apakah variabel lingkungannya diatur:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"
tmux
sesi dan yang lain saya di luartmux
sesi. Ketika saya mengetikkan keduanya perintahtmux display-message -p "#S"
, hasil yang sama dicetak dan nilai kembali dari kedua perintah itu sama.