命令完成时防止窗格/窗口关闭 - tmux

命令完成时防止窗格/窗口关闭 - tmux

在我的tmux.conf文件中,我将其配置为打开窗口、命名窗口、设置窗格等。

然而,我遇到的一个问题是,如果其中一个窗格启动一个命令,比如说ls,那么该窗格会在命令完成后(立即)自行关闭。有什么办法可以防止这种行为吗?或者在命令完成后让它回到正常的 shell?

我假设我需要在窗格启动时启动一个 shell -> 执行命令,但如果我能弄清楚如何做,我就该死了。我用谷歌搜索了一些这个问题,但没有找到答案。

答案1

你有几个选择。

  1. 不要在窗口中运行,而是ls运行 shell,然后发送 shell 击键来执行:

    tmux start-server  
    tmux new-session -d -s session  
    tmux new-window -t session:1  
    tmux send-keys -t session:1 ls C-m
    
  2. 您可以运行一系列命令,以便在运行其他命令后留下 bash shell:

    tmux start-server  
    tmux new-session -d
    tmux new-window 'ls;bash -i'
    
  3. 杰森乌赖恩的回答有关在进程退出后使窗格保持活动状态的选项的详细信息remain-on-exit,以便您可以查看输出。

  4. 如果某个命令的输出值得一看,那么它可能值得刷新。如果您正在监视某些内容的输出,您可以watch定期获取新的输出。这应该可以很好地与以下窗格配合使用tmux

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

答案2

您可以使用以下remain-on-exit选项:

退出时保持 [on |离开]
当其中运行的程序退出时,设置了此标志的窗口不会被销毁。可以使用 respawn-window 命令重新激活窗口。

为了简化重生过程,您可能需要将其绑定到一个键:

bind-key R respawn-window

这将确保程序退出时不会留下死窗口。

答案3

send-keys这是使用@Caleb推荐的方法的扩展示例

#!/bin/sh
tmux start-server
tmux new-session -d -n 'mywindowname'
tmux send-keys -t mywindowname 'cd notes' Enter 'vim whiteboard/tasks.md' Enter
tmux new-window -d -n 'secondwindowname' # this -d prevents focus from changing to the new window
tmux -2 attach-session -d

答案4

&& bash也许在你的命令后面添加就足够了

我的例子:

tmux new-session -d 'ls && echo && bash' \; split-window -d 'vi' \; attach

相关内容