我决定尝试 tmux:一直在阅读文档和谷歌搜索,试图找到一种方法让两个用户共享一个会话,每个用户都有不同的光标。
但是,为套接字授予 777 权限,或创建一个组,chgrp
调用套接字并将两个用户添加到其中,似乎让同一个套接字用于仅使用一个游标共享会话:两个用户都可以写入,但始终在相同的光标位置。
现在,两个用户都通过 ssh 在同一个家庭服务器中,他们的想法是能够拥有:
什么我目前做的是使用两个会话(不共享)和script -f
和tail -f
组合还挺读取对方的击键工作,但我认为有可能是这样使用TMUX共享能力的办法。
有没有办法让这个想法在彼此的终端中使用写支持?
什么是更好的方法来做到这一点?
我刚刚决定尝试 zsh(通过 oh-my-zsh),现在我正在precmd
尝试模拟一个两行提示,该提示不仅仅在最后一行中有正确的提示。
所以我克隆了默认主题,并受到这篇文章的启发(我也用它来学习很多东西),我做这样的事情(我稍后会添加颜色):
function precmd {
local cwd="${(%):-[%~]}"
local who_where="${(%):-%n@%m}"
local git_info=${(%)$(git_prompt_info)}
local right_prompt=" $git_info [$who_where]"
local left_prompt="${(r:(($COLUMNS - ${#${right_prompt}})):: :)cwd}"
echo "$left_prompt$right_prompt"
}
Run Code Online (Sandbox Code Playgroud)
它有效。但我不禁想知道:每次调用 precmd 时,zsh 是否都定义了所有这些变量?
我一直在搜索与 zsh 相关的闭包、范围和命名空间,希望将本地变量作为数据附加到 precmd,因此不需要每次都重新定义变量,但我什么也没找到。有什么方法可以做我正在尝试的事情,还是应该放弃它?
作为旁注,并且仅当它相关时,“加载函数”是什么意思?
我想用长命令整理一些脚本,例如:
{ somecheck || somecomand "reallyreallyreallyreallyreallyreallylongstring" } &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
变成这样:
{ somecheck || \
somecomand "reallyreally" \
"reallyreally" \
"reallyreally" \
"longstring" \
} &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
但我担心分词。为了避免这种情况,我正在考虑:
{ somecheck || \
somecomand "$(echo \
"reallyreally" \
"reallyreally" \
"reallyreally" \
"longstring" \
)" \
} &> /dev/null &
Run Code Online (Sandbox Code Playgroud)
有没有人知道在 bash/zsh 中处理多行字符串的其他方法?我在谷歌搜索这个信息时遇到了麻烦,我认为这意味着至少三个进程(脚本、后台块和命令替换子shell);也许有更好的方法?
提前致谢!
shell ×2
zsh ×2
bash ×1
command-line ×1
console ×1
function ×1
shell-script ×1
ssh ×1
terminal ×1
tmux ×1