首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从tmux会话内部创建新的tmux会话

从tmux会话内部创建新的tmux会话
EN

Stack Overflow用户
提问于 2013-05-06 20:32:09
回答 5查看 98.8K关注 0票数 120

我正在编写一个shell脚本,它根据会话是否在tmux内以及会话是否存在来创建/附加或切换到给定的会话。

除了需要在tmux会话中创建一个新的tmux会话的情况之外,我已经让所有的事情都运行得很好。

当我的脚本执行tmux new-session -s name时,我得到以下输出:

应小心嵌套

会话,取消将$TMUX设置为force

我实际上并不想嵌套会话,我的目标是创建另一个单独的会话,并从tmux会话中切换到它。

这个是可能的吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-01-22 09:46:43

最快的方法(假设您使用ctrl-b作为命令前缀)是:

代码语言:javascript
运行
复制
ctrl-b :new

创建一个新的会话,然后

代码语言:javascript
运行
复制
ctrl-b s

以交互方式选择并附加到会话。

票数 174
EN

Stack Overflow用户

发布于 2016-01-14 06:15:06

如何创建脚本

此脚本将检查会话是否存在。如果会话不存在,则创建新会话并附加到该会话。如果会话确实存在,则不会发生任何事情,我们会附加到该会话。请随意将`~/development‘替换为项目名称。

$ touch ~/development && chmod +x ~/development

代码语言:javascript
运行
复制
# ~/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内部工作,因为我们正在创建一个新的分离会话。否则你会得到一个嵌套错误。

代码语言:javascript
运行
复制
$ 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中,或者更为人所知。如果我们试图在附加的时候创建一个新的会话,这将导致嵌套错误。

代码语言:javascript
运行
复制
$ tmux new -s bar
> sessions should be nested with care, unset $TMUX to force

为了解决这个问题,我们创建了一个新的分离会话。例如,

代码语言:javascript
运行
复制
$ 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 ( )

注意:默认情况下, PrefixCtrl-b。你可以将Prefix绑定到Ctrl-a,在Mac中你可以将Caps Lock更改为ctrl system preferences > keyboard > modifier keys

在tmux中使用命令模式附加到会话

尝试在不分离的情况下附加到会话将导致错误。

代码语言:javascript
运行
复制
$ tmux attach -t development
> sessions should be nested with care, unset $TMUX to force

改为使用命令模式Prefix :,然后键入attach -t session_name并按enter键。

票数 39
EN

Stack Overflow用户

发布于 2013-05-06 20:51:32

使用这个方法对我来说很有效:

代码语言:javascript
运行
复制
TMUX= tmux new-session -d -s name
tmux switch-client -t name

第一行的TMUX=是必需的,所以tmux不会抛出sessions should be nested with care, unset $TMUX to force消息。

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16398850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档