Frage

Ich versuche, herauszufinden, wie zu einem tmux session zu befestigen, wenn eine benannte tmux Sitzung vorhanden ist, wenn ich nicht einen neuen mit dem angegebenen Namen erstellt werden soll.

Zur Zeit weiß ich von einigen tmux Befehlen, die zum Teil kann erreichen, was ich suche, aber es ist nicht klar, wie sie miteinander zu kombinieren, um zu bekommen, was ich suche:

  • tmux attach Attaches auf eine automatisch vorhandene Sitzung - aber Fehler, wenn keine Sitzung existiert
  • tmux new erstellt eine neue Sitzung - aber es tut so jedes Mal, so dass ich es nicht in meinem .tmux.conf verlassen
  • tmux has-session prüft, ob eine Sitzung vorhanden ist - aber ich weiß nicht, wie es zu nähen zusammen mit den anderen Befehlen

So würde Ich mag einen tmux Skript erstellen, so dass diese automatisch geschieht, anstatt zu manuell erstellen es jedes Mal muß ich in eine Sitzung protokollieren.

Wie kann ich einen automatischen Skript schreiben, um eine neue tmux Sitzung (wenn eine bestimmte Sitzung Name doesnt exist) oder heften sich an einem Sitzungsnamen erstellen (falls vorhanden)?

War es hilfreich?

Lösung

Alternativ können Sie fügen

new-session

Ihre .tmux.conf -., Dass eine Standardsitzung auf Serverstart erstellen

Dann tmux attach wird entweder auf die aktuelle Sitzung anhängen (laufenden Server, das ist), oder eine neue Sitzung erstellen (den Server starten, die Konfigurationsdatei lesen, geben Sie den Befehl new-session) und dem befestigen.

Andere Tipps

Habe ich es aus ( und hatte darauf hingewiesen, mir ).

tmux attach || tmux new

Wie bereits ausgeführt in den Kommentaren von Petr Viktorin , jkoelker und man tmux :

  

new-session [-AdDEP] [-c start-directory ] [-F format ] [-n window-name ] [-s session-name ] [-t group-name ] [-x width ] [-y height ] [ shell-command ]

     

(alias: new )

     Erstellen

eine neue Sitzung mit dem Namen session-name.

     

[...]

     

Die -A Flagge Marken new-session verhalten sich wie attach-session , wenn session-name bereits vorhanden ist; in diesem Fall -D verhält sich wie -d auf attach-session .

new-session hat unterstützt -A seit tmux-1.8 .

Obwohl ich rampion Antwort ist ausreichend für die Verwendung von 1-Sitzung, dieses Skript können Sie Setup mehrere Sitzungen finden:

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

Hinweis:

-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 

Die Anpassung Alex Vorschlag Projekt basierte Konfiguration beim Start sind, begann ich folgendes mit:

# ~/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

wo tmux-myproject.conf ist meine Startreihe tmux Befehle meine Fenster und Scheiben zu schaffen, wie auch meine Redakteure starten.

Ich verwende einen Alias ??eine neue Sitzung zu erstellen, wenn nötig, und zu meiner Standardsitzung anhängen, wenn sie bereits vorhanden ist:

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

Ich habe das mein .login auf meinem Server.

Der Grund, warum ich es tun diese Art und Weise ist, weil ich nicht auf den gleichen aktuellen Sitzung anhängen will, ich will eine neue Sitzung, die die gleiche Gruppe von Fenstern verwendet.

Dies ist auch ähnlich screen -xRR ausgeführt wird.

Für diejenigen, die die gleiche Sache in fish zu tun:

tmux attach -t mysesh; or tmux new -s mysesh
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top