当使用我拼凑的一个小鱼功能(不是这里的开发人员,所以请温柔......?)访问一些经常需要的 ssh 主机时,我看到一个奇怪的效果:括号粘贴模式被激活SSH 会话。
这是脚本:
function mssh
set hosts host1 host2 host3 hostn
set domain mydomain.com
set user myusername
set number (count $hosts)
set numlength (string length $number)
echo
echo "Hosts:"
echo
for i in (seq $number)
if test (string length "$i") -lt "$numlength"
echo \t" "$i")" $hosts[$i]
else
echo \t$i")" $hosts[$i]
end
end
echo
while read --nchars $numlength -l response --prompt-str="Please select: "; or return 1
if test "$response" -le "$number" 2>/dev/null
ssh $user@$hosts[$response].$domain
break
else
echo "Invalid selection"
continue
end
end
end
有了这个,只是为了上下文,我基本上是在尝试重现这个 zsh 脚本的功能(我从某个地方得到的):
#!/bin/zsh
hosts=(host1 host2 host3)
domain="mydomain.com"
user="username"
PS3='Select: '
select host in ${hosts[@]}
do
if [ "$host" = "" ]; then
echo "Invalid selection."
else
ssh ${user}@${host}.${domain}
break
fi
done
但正如我在开头提到的,我自己的脚本在使用它时似乎有些错误,它会为 ssh 会话打开鱼括号粘贴模式,并且我粘贴的所有内容都包含在波浪字符 ( ) 中~paste example~
。
它发生在 iTermin2和macOS 终端客户端中。
zsh 脚本不会发生这种情况(或者当我直接调用 ssh 时)。
欢迎任何关于我哪里出错的指示。提前致谢。
https://github.com/fish-shell/fish-shell/issues/8285
Fish 打开括号粘贴模式
read
(因为您可以在其中粘贴内容)。