J'écris un script shell qui crée / attache ou bascule vers une session donnée, selon que l'on est à l'intérieur de tmux et que la session existe.
Tout fonctionne très bien, à l'exception du cas nécessitant la création d'une nouvelle session tmux à partir d'une session tmux.
Lorsque mon script s'exécute tmux new-session -s name
, j'obtiens la sortie suivante:
les sessions doivent être imbriquées avec soin, désactivez $ TMUX pour forcer
Je ne veux pas vraiment imbriquer les sessions, mon objectif est de créer une autre session séparée et d'y basculer depuis une session tmux .
Est-ce possible?
Réponses:
Le moyen le plus rapide (en supposant que vous l'utilisez
ctrl-b
comme préfixe de commande) est:Pour créer une nouvelle session, alors
pour sélectionner et joindre interactivement à la session.
la source
ctrl-b $
Ctrl-b :new -s <name>
pour donner un nom à la nouvelle session.Comment créer le script
Ce script vérifiera si une session existe. Si la session n'existe pas, créez une nouvelle session et attachez-la. Si la session existe, rien ne se passe et nous nous attachons à cette session. N'hésitez pas à remplacer `~ / development 'par le nom du projet.
$ touch ~/development && chmod +x ~/development
Nouvelle session depuis le terminal
Créons deux sessions détachées, listons-les, attachons-nous à une, puis depuis tmux, parcourons les sessions.
tmux new -s name -d
fonctionne depuis l'intérieur de tmux car nous créons une nouvelle session détachée. Sinon, vous obtiendrez une erreur d'imbrication.Nouvelle session depuis tmux
Nous sommes maintenant à l'intérieur ou mieux connus comme attachés à notre session cible. Si nous essayons de créer une nouvelle session en étant attaché, cela entraînera une erreur d'imbrication.
Pour résoudre ce problème, nous créons une nouvelle session détachée. par exemple,
Cycle (commutateur) de sessions
Prefix
(
session précédentePrefix
)
prochaine sessionremarque:
Prefix
estCtrl-b
par défaut. Vous pouvez vous lierPrefix
àCtrl-a
et dans Mac OSX, vous pouvez changer le verrouillage des majuscules en ctrlsystem preferences > keyboard > modifier keys
Joindre à une session en utilisant le mode commande à l'intérieur de tmux
Toute tentative de connexion à une session sans se détacher entraînera une erreur.
Utilisez plutôt le mode commande
Prefix
:
puis tapezattach -t session_name
et appuyez sur Entrée.la source
L'utilisation de cela fonctionne pour moi:
Le
TMUX=
sur la première ligne est requis pour que tmux ne lance pas desessions should be nested with care, unset $TMUX to force
message.la source
TMUX=`tmux new-session -d -s name`
Toutes les commandes que vous pouvez lancer au sein de votre terminal, comme
tmux new -s sessionName
peuvent être lancées de l'intérieurtmux
en appuyant sur la touche de déclenchement (ex:)ctrl-b
puis:
puis la commande sans le démarragetmux
partie de .En conséquence,
ctrl-b :
suivi denew -s sessionName
fera exactement ce que vous voulez et donnez un nom à votre session. Il passe également automatiquement à la nouvelle session.la source
Vous pouvez essayer d'
unset TMUX
abord, cela fonctionne pour moi.la source
sur les conseils de user2354696, j'utilise les raccourcis clavier suivants pour créer une nouvelle session ou "cloner" une session existante
la source