我正在编写一个shell脚本,它根据会话是否在tmux内以及会话是否存在来创建/附加或切换到给定的会话。
除了需要在tmux会话中创建一个新的tmux会话的情况之外,我已经让所有的事情都运行得很好。
当我的脚本执行tmux new-session -s name时,我得到以下输出:
应小心嵌套
会话,取消将$TMUX设置为force
我实际上并不想嵌套会话,我的目标是创建另一个单独的会话,并从tmux会话中切换到它。
这个是可能的吗?
发布于 2014-01-22 09:46:43
最快的方法(假设您使用ctrl-b作为命令前缀)是:
ctrl-b :new创建一个新的会话,然后
ctrl-b s以交互方式选择并附加到会话。
发布于 2016-01-14 06:15:06
如何创建脚本
此脚本将检查会话是否存在。如果会话不存在,则创建新会话并附加到该会话。如果会话确实存在,则不会发生任何事情,我们会附加到该会话。请随意将`~/development‘替换为项目名称。
$ touch ~/development && chmod +x ~/development
# ~/development
tmux has-session -t development
if [ $? != 0 ]
then
tmux new-session -s development
fi
tmux attach -t development 来自终端的新会话
让我们创建两个分离的会话,列出它们,附加到一个会话,然后在tmux中循环会话。
tmux new -s name -d在tmux内部工作,因为我们正在创建一个新的分离会话。否则你会得到一个嵌套错误。
$ tmux new -s development -d
$ tmux new -s foo -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
$ tmux attach -t
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]从tmux中创建新会话
我们现在位于目标会话的attached中,或者更为人所知。如果我们试图在附加的时候创建一个新的会话,这将导致嵌套错误。
$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force为了解决这个问题,我们创建了一个新的分离会话。例如,
$ tmux new -s bar -d
$ tmux ls
> development: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54] (attached)
> foo: 1 windows (created Wed Jan 13 11:31:38 2016) [204x54]
> bar: 1 windows (created Wed Jan 13 17:19:35 2016) [204x54]周期(交换机)会话
下一个session的上一个
Prefix ( ) 注意:默认情况下, Prefix为Ctrl-b。你可以将Prefix绑定到Ctrl-a,在Mac中你可以将Caps Lock更改为ctrl system preferences > keyboard > modifier keys
在tmux中使用命令模式附加到会话
尝试在不分离的情况下附加到会话将导致错误。
$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force改为使用命令模式Prefix :,然后键入attach -t session_name并按enter键。
发布于 2013-05-06 20:51:32
使用这个方法对我来说很有效:
TMUX= tmux new-session -d -s name
tmux switch-client -t name第一行的TMUX=是必需的,所以tmux不会抛出sessions should be nested with care, unset $TMUX to force消息。
https://stackoverflow.com/questions/16398850
复制相似问题