Zsh 上本地端口转发的语法是否错误?
Is the syntax for local port forwarding wrong on Zsh?
我正在尝试在我的 .zshrc
文件上设置一个函数,以创建一种简单的方法来进行本地端口转发。我的目标是在我大学的集群上启动一个 Jupyter 服务器,然后使用本地端口转发来访问它。我的 .zshrc
文件中有以下内容:
function jptt(){
# Forwards port into port and listens to it
ssh -N -f -L :localhost: rgr6291@klc0201.ci.northwestern.edu
}
但是,每当我尝试使用它时,例如 jptt 8888 8888
,我都会收到以下错误:
Bad local forwarding specification '8888ocalhost:8888'
我是否以错误的方式处理字符串或参数?我不明白为什么它无法执行命令。提前致谢!
在zsh
中,您可以将历史风格的扩展运算符添加到变量扩展的末尾。 :localhost
被视为扩展 :l
,后跟文本 localhost
。为防止这种解释,请使用显式大括号来分隔参数扩展。
ssh -N -f -L :localhost: rgr6291@klc0201.ci.northwestern.edu
您还可以引用参数扩展以在句法上将 :
与扩展分开:
ssh -N -f -L "":localhost: rgr6291@klc0201.ci.northwestern.edu
:l
,顺便说一句,导致扩展被转换为小写。例如,
% x=FOO
% echo $x
FOO
% echo $x:l
foo
使用大括号,运算符会进入大括号内,紧跟在参数名称之后。
% echo ${x}:l
FOO:l
% echo ${x:l}
foo
我正在尝试在我的 .zshrc
文件上设置一个函数,以创建一种简单的方法来进行本地端口转发。我的目标是在我大学的集群上启动一个 Jupyter 服务器,然后使用本地端口转发来访问它。我的 .zshrc
文件中有以下内容:
function jptt(){
# Forwards port into port and listens to it
ssh -N -f -L :localhost: rgr6291@klc0201.ci.northwestern.edu
}
但是,每当我尝试使用它时,例如 jptt 8888 8888
,我都会收到以下错误:
Bad local forwarding specification '8888ocalhost:8888'
我是否以错误的方式处理字符串或参数?我不明白为什么它无法执行命令。提前致谢!
在zsh
中,您可以将历史风格的扩展运算符添加到变量扩展的末尾。 :localhost
被视为扩展 :l
,后跟文本 localhost
。为防止这种解释,请使用显式大括号来分隔参数扩展。
ssh -N -f -L :localhost: rgr6291@klc0201.ci.northwestern.edu
您还可以引用参数扩展以在句法上将 :
与扩展分开:
ssh -N -f -L "":localhost: rgr6291@klc0201.ci.northwestern.edu
:l
,顺便说一句,导致扩展被转换为小写。例如,
% x=FOO
% echo $x
FOO
% echo $x:l
foo
使用大括号,运算符会进入大括号内,紧跟在参数名称之后。
% echo ${x}:l
FOO:l
% echo ${x:l}
foo