現在のシェルを開くとtmuxを起動します。私のシェルの設定は次のとおりです。
[[ $TMUX == "" ]] && tmux new-session
私のシェルを起動し、接続されていない(最初の)セッションがある場合はtmuxを接続する方法はありますか?シェルがすでに接続されている場合は、セッションに接続したくありません。
答え1
適切な形式を使用して出力を解析すると、必要なものが得られるtmux list-session
と思います。
if [ -z "$TMUX" ]; then
attach_session=$(tmux 2> /dev/null ls -F \
'#{session_attached} #{?#{==:#{session_last_attached},},1,#{session_last_attached}} #{session_id}' |
awk '/^0/ { if ($2 > t) { t = $2; s = $3 } }; END { if (s) printf "%s", s }')
if [ -n "$attach_session" ]; then
tmux attach -t "$attach_session"
else
tmux
fi
fi
ここでは、tmux ls
セッションごとに接続されたクライアントの数、最後の接続時間(以前に接続されていない場合は1、例:以降tmux new -d
)、およびセッションIDを提供します。 AWKスクリプトはこの情報を使用して、現在接続されていないクライアントの最新の接続セッションを見つけ、そのIDを印刷します。次に、そのセッションに接続したり、サーバーが起動しなかったり、既存のすべてのセッションを接続したりするなど、そのセッションが見つからない場合は、新しいセッションを作成します。