Empêche le panneau / window de se fermer lorsque la command est terminée – tmux

Dans mon file tmux.conf , je l'ai configuré pour ouvrir les windows, les nommer, les panneaux de configuration, etc ..

Cependant, un problème est que si l'un des volets lance une command, disons ls , le volet se ferme une fois la command terminée (instantanément). Y a-t-il un moyen d'empêcher ce comportement? Ou le faire tomber dans un shell normal après la fin d'une command?

Je suppose que j'ai besoin de lancer une command shell -> execute quand le volet se lance, mais je serai damné si je peux comprendre comment. J'ai googlé un peu pour ce problème, mais sont arrivés à court.

Vous avez plusieurs options.

  1. Au lieu d'exécuter ls dans votre window, exécutez un shell, puis envoyez les frappes shell pour exécuter:

     tmux start-server tmux new-session -d -s session tmux new-window -t session:1 tmux send-keys -t session:1 ls Cm 
  2. Vous pouvez déjouer une séquence de commands de manière à vous laisser avec un shell bash après l'exécution de vos autres commands:

     tmux start-server tmux new-session -d tmux new-window 'ls;bash -i' 
  3. Voir la réponse de jasonwryan pour plus de détails sur l'option rest remain-on-exit pour garder les windows en vie après la sortie de leur process afin que vous puissiez examiner la sortie.

  4. Si la sortie d'une command valait la peine d'être vue une fois, il pourrait être utile de la rafraîchir. Si vous surveillez la sortie de quelque chose que vous pouvez watch pour get périodiquement de nouvelles sorties. Cela devrait jouer bien avec les volets dans tmux :

     tmux start-server tmux new-session -d tmux new-window 'watch -n 60 ls' 

Vous pouvez utiliser l'option remain-on-exit :

set-remain-on-exit [on | de]
Définissez l'option de window Reste à la sortie pour toutes les windows créées pour la première fois dans cette session. Lorsque cette option est remplie, les windows dans lesquelles le programme en cours d'exécution est sorti ne se ferment pas, au lieu de restr ouvertes mais inactives. Utilisez la command respawn-window pour réactiver une telle window ou la command kill-window pour la détruire.

Pour simplifier le process de réapparition, vous pouvez le lier à une key:

 bind-key R respawn-window 

Cela garantira que vous n'êtes pas laissé avec des windows mortes lorsque les programmes se terminent.