通过ssh,我可以做到这一点:
ssh REMOTE -t 'tmux a || tmux'用苔藓我能做的就是:
mosh REMOTE -- tmux a但这行不通:
mosh REMOTE -- tmux a || tmux这也不是:(不管是单引号还是双引号,我都试过了)
mosh REMOTE -- 'tmux a || tmux'所以,我的问题是:我该怎么做这份工作?
发布于 2014-04-10 05:51:36
那么,我似乎必须显式地使用shell来执行命令:
mosh REMOTE -- sh -c 'tmux a || tmux'编辑
一种更好的方法不是执行tmux a || tmux,而是将new-session添加到~/.tmux.conf中,然后只运行tmux。这样事情就容易多了。我现在可以这样做了:
mosh REMOTE -- tmux太棒了!
发布于 2015-04-02 15:21:52
可能有比上面给出的例子更复杂的命令。我想要创建一个命令,如果一个现有的tmux会话已经存在但还没有附加,它就重新连接到一个tmux会话上,如果没有可用的命令,则创建一个新的命令。
看看this example,我会做这样的事情:
function tmosh() {
mosh $1 -- (tmux ls | grep -vq attached && tmux at -t $( tmux ls | grep -vm1 attached | cut -d: -f1 ) ) || tmux new
}但是,根据上面最初的问题,这是行不通的。
到目前为止,我的解决方案是在主机服务器上有一个包装器脚本:
tmux-reattach-if-exists其中简单地包括:
(tmux ls | grep -vq attached && tmux at -t $( tmux ls | grep -vm1 attached | cut -d: -f1 )) || tmux new然后,我从mosh调用客户机上的脚本,如下所示:
function tmosh() {
mosh $1 -- tmux-reattach-if-exists
}如果有一个解决方案可以直接通过.tmux.conf实现这一点,那将是很棒的,但我似乎无法解决这个问题。
发布于 2021-01-29 07:41:46
把这个放在你的.bashrc末尾
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,所以您应该有一个行
source .bashrc在您的.bash_profile中,或者将上面的行放在.bash_profile中。
https://stackoverflow.com/questions/22976504
复制相似问题