150

名前付きの tmux セッションが存在する場合にアタッチする方法を見つけようとしtmux sessionています。そうでない場合は、指定された名前で新しいセッションを作成します。

現在、探しているものを部分的に達成できるいくつかのコマンドを知っていtmuxますが、それらを組み合わせて探しているものを取得する方法は明確ではありません。

  • tmux attach自動的に存在するセッションに接続しますが、セッションが存在しない場合はエラーになります
  • tmux new新しいセッションを作成しますが、毎回そうするので、自分の中に残すことはできません.tmux.conf
  • tmux has-sessionセッションが存在するかどうかをテストします - しかし、それを他のコマンドと組み合わせる方法がわかりません

したがって、セッションにログインする必要があるたびに手動で作成するのではなく、tmux スクリプトを作成して、これが自動的に行われるようにしたいと考えています。

新しい tmux セッションを作成する (特定のセッション名が存在しない場合)、またはセッション名にアタッチする (存在する場合) ように自動スクリプトを作成するにはどうすればよいですか?

4

7 に答える 7

168

私はそれを理解しました(そしてそれを私に指摘してもらいました)。

tmux attach || tmux new
于 2010-08-08T01:31:10.983 に答える
89

または、追加することもできます

new-session

あなたに.tmux.conf-サーバーの起動時にデフォルトのセッションを作成します。

次にtmux attach、現在のセッション (実行中のサーバー) にアタッチするか、新しいセッションを作成 (サーバーを起動し、構成ファイルを読み取り、new-sessionコマンドを発行) してそれにアタッチします。

于 2011-01-17T20:49:08.730 に答える
86

Petr Viktorinjkoelker、およびpjinczからのコメントで指摘されているように、次のコマンドを使用して、mySession存在する場合はアタッチし、存在しない場合は作成できます。

 tmux new -A -s mySession

からman tmux:

new-session[-AdDEP] [-cstart-directory] [-Fformat] [-nwindow-name] [-ssession-name] [-tgroup-name] [-xwidth] [-yheight] [shell-command]

(別名: new)

name で新しいセッションを作成しますsession-name

[...]

-Aフラグは、既に存在するかのnew-sessionように動作します。この場合、は のように動作します。attach-sessionsession-name-D-dattach-session

new-session-Atmux-1.8 からサポートされています。

于 2018-03-06T15:52:57.030 に答える
15

起動時にプロジェクトベースの構成を含めるようにアレックスの提案を適応させて、私は以下を使い始めました:

# ~/bin/tmux-myproject shell script
# The Project name is also used as a session name (usually shorter)
PROJECT_NAME="myproject"
PROJECT_DIR="~/myproject"

tmux has-session -t $PROJECT_NAME 2>/dev/null
if [ "$?" -eq 1 ] ; then
    echo "No Session found.  Creating and configuring."
    pushd $PROJECT_DIR
    tmux new-session -d -s $PROJECT_NAME
    tmux source-file ~/bin/tmux-${PROJECT_NAME}.conf
    popd
else
    echo "Session found.  Connecting."
fi
tmux attach-session -t $PROJECT_NAME

tmux-myproject.confウィンドウとペインを作成し、エディターを起動するための一連のスタートアップ tmux コマンドはどこにありますか。

于 2012-08-16T19:12:25.717 に答える
14

1 つのセッションを使用するには Rampion の回答で十分ですが、このスクリプトを使用すると、複数のセッションをセットアップできます。

SESSIONS="work play"

function has-session {
    tmux has-session -t $1 2>/dev/null
}

function except 
{
    if [ "$?" -eq 1 ] ; then
        $1
    fi
}

# Configure your sessions here
function session-work
{
    tmux new-session -d -s work
    tmux neww -k -t work:1
}

function session-play
{
    tmux new-session -d -s play
    tmux neww -k -t play:1
}

#
#MAIN 
for x in $SESSIONS
do
    echo $x
    has-session $x
    except session-$x
done

ノート:

-k  --> new-window will not be created if already exists
-d  --> start session or window, but don't attach to it yet
-s  --> name the session
-t  --> specify a target location in the form session:window.pane 
于 2011-08-29T14:46:58.937 に答える
9

必要に応じてエイリアスを使用して新しいセッションを作成し、デフォルトのセッションがすでに存在する場合はそれに接続します。

alias tmuxre='tmux new-session -t default || tmux new-session -s default'

これをサーバーの.loginに追加しました。

私がこのようにする理由は、同じ実際のセッションに接続したくないので、同じウィンドウのグループを使用する新しいセッションが必要だからです。

これも実行中と同様screen -xRRです。

于 2011-10-17T20:45:34.170 に答える