J'écris un script. Je veux vraiment savoir ça. J'espère que l'exécutable tmux pourra me le dire.
je trouve
tmux rename <newname>
peut renommer la session en cours. Mais je ne trouve pas de commande pour récupérer son propre nom.
Avec tmux 1.2 (et versions ultérieures), vous pouvez utiliser l' -p
option de display-message
sortie d'un message vers stdout (au lieu de l'afficher sur un client attaché):
tmux display-message -p '#S'
#S
est formaté comme nom de session (voir la description de l' status-left
option dans la page de manuel).
Je suis surpris que, après près de 5 ans, personne n'ait signalé qu'aucune de ces réponses n'est adéquate. Bien que les deux fonctionnent correctement tant que le TTY actuel est attaché à la seule session tmux sur l'hôte, ces réponses tombent à plat si:
Dans le premier cas, les deux réponses rapportent ici le nom de la session jointe (indépendamment du fait que le terminal actuel soit régi par cette session). Dans ce dernier cas, le résultat est probablement indéterminé ou donnera lieu à plusieurs réponses.
La bonne question devrait être: "Quel est le nom de la session tmux à laquelle ma session de terminal actuelle est attachée?"
Pour qu'il réponde à cette question, exécutez:
Cela fonctionne quel que soit le nombre de sessions tmux (attachées ou non) et que la session de terminal en cours fasse ou non partie d'une session tmux.
la source
tmux list-panes -a -F '#{pane_tty} #{session_name}'
pour répertorier les volets de chaque session. Je ne sais pas à quel point c'est nouveau-a
, alors YMMV.TMUX
la variable d'environnement avant l'exécutiontmux display-message -p '#S'
pour une configuration de bureau typique.Extended / corriger la réponse de tim-peuples selon le commentaire de don_crissti sur Pourquoi est - ce
grep -v
ne fonctionne pas comme prévu? .Commande "$ (tty)" dans la réponse de tim-peuples
ne fonctionnerait pas dans ce contexte comme prévu. Il évalue une chaîne «pas un tty».
Le remplacer par une variable résout ce problème.
De plus, en l'absence de sessions tmux, le code d'origine produirait
Message d'erreur «aucun serveur exécuté sur / tmp / tmux-1000 / default» .
Ajouter
2>/dev/null
et le code s'exécuterait sans imprimer le message d'erreur.Le code modifié se lit comme suit:
la source
tty
.Au lieu de cela, j'ai trouvé que cela fonctionnait correctement pour moi:
la source
Pas idéal, mais vous pouvez extraire le nom de la session jointe avec
awk
:Le format personnalisé est un peu plus facile à analyser que le format par défaut.
la source