首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在建立mosh连接时运行复杂的命令?

如何在建立mosh连接时运行复杂的命令?
EN

Stack Overflow用户
提问于 2014-04-10 00:35:04
回答 3查看 2.9K关注 0票数 7

通过ssh,我可以做到这一点:

代码语言:javascript
复制
ssh REMOTE -t 'tmux a || tmux'

用苔藓我能做的就是:

代码语言:javascript
复制
mosh REMOTE -- tmux a

但这行不通:

代码语言:javascript
复制
mosh REMOTE -- tmux a || tmux

这也不是:(不管是单引号还是双引号,我都试过了)

代码语言:javascript
复制
mosh REMOTE -- 'tmux a || tmux'

所以,我的问题是:我该怎么做这份工作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-10 05:51:36

那么,我似乎必须显式地使用shell来执行命令:

代码语言:javascript
复制
mosh REMOTE -- sh -c 'tmux a || tmux'

编辑

一种更好的方法不是执行tmux a || tmux,而是将new-session添加到~/.tmux.conf中,然后只运行tmux。这样事情就容易多了。我现在可以这样做了:

代码语言:javascript
复制
mosh REMOTE -- tmux

太棒了!

票数 18
EN

Stack Overflow用户

发布于 2015-04-02 15:21:52

可能有比上面给出的例子更复杂的命令。我想要创建一个命令,如果一个现有的tmux会话已经存在但还没有附加,它就重新连接到一个tmux会话上,如果没有可用的命令,则创建一个新的命令。

看看this example,我会做这样的事情:

代码语言:javascript
复制
function tmosh() {
    mosh $1 -- (tmux ls | grep -vq attached && tmux at -t $( tmux ls | grep -vm1 attached | cut -d: -f1 ) ) || tmux new
}

但是,根据上面最初的问题,这是行不通的。

到目前为止,我的解决方案是在主机服务器上有一个包装器脚本:

代码语言:javascript
复制
tmux-reattach-if-exists

其中简单地包括:

代码语言:javascript
复制
(tmux ls | grep -vq attached && tmux at -t $( tmux ls | grep -vm1 attached | cut -d: -f1 )) || tmux new

然后,我从mosh调用客户机上的脚本,如下所示:

代码语言:javascript
复制
function tmosh() {
    mosh $1 -- tmux-reattach-if-exists
}

如果有一个解决方案可以直接通过.tmux.conf实现这一点,那将是很棒的,但我似乎无法解决这个问题。

票数 3
EN

Stack Overflow用户

发布于 2021-01-29 07:41:46

把这个放在你的.bashrc末尾

代码语言:javascript
复制
s1="`ps $PPID|grep mosh|awk '{print $5}'`"
s2=mosh-server
if [[ "$s1" == "$s2" ]]; then source .moshrc; fi

如果由mosh-server调用,bash将执行它在$HOME/.moshrc中找到的任何内容--所以只需将命令放在主目录中名为.moshrc的文件中即可。

因为mosh调用登录shell,所以您应该有一个行

代码语言:javascript
复制
source .bashrc

在您的.bash_profile中,或者将上面的行放在.bash_profile中。

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

https://stackoverflow.com/questions/22976504

复制
相关文章

相似问题

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