在多行上编写 SSH 命令
Write SSH command over multiple lines
我正在尝试远程登录 shell 并在 shell 上执行一系列命令。
但为了使其更具可读性,我想将我的代码放在多行上。我应该怎么做?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
您可以使用 bash
的 Here Documents
功能。
就像:
ssh <remote-host> bash <<EOF
echo first command
echo second command
EOF
EOF 标记输入结束。
有关更多信息:使用 man bash
并搜索 Here Documents
。
编辑:唯一需要注意的是,使用变量可能很棘手,您必须转义 $
以保护它们在远程主机而不是本地 shell 上进行计算。喜欢$HOSTNAME
。否则适用于 bash 中 运行 的所有内容并使用 stdin
.
ssh
实际上只是将字符串传递给远程主机。这个字符串被提供给一个shell,它应该解释它(用户的登录名shell,通常类似于bash
)。因此,无论您想执行什么,都需要该远程登录可以解释 shell,这是您必须遵守的全部规则。
您确实可以在命令字符串中使用换行符:
ssh alfe@sweethome "
ls /home/alfe/whatever
ping foreignhost
date
rm foobar
"
你可以像下面的例子那样做。
ssh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'
我正在尝试远程登录 shell 并在 shell 上执行一系列命令。 但为了使其更具可读性,我想将我的代码放在多行上。我应该怎么做?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
您可以使用 bash
的 Here Documents
功能。
就像:
ssh <remote-host> bash <<EOF
echo first command
echo second command
EOF
EOF 标记输入结束。
有关更多信息:使用 man bash
并搜索 Here Documents
。
编辑:唯一需要注意的是,使用变量可能很棘手,您必须转义 $
以保护它们在远程主机而不是本地 shell 上进行计算。喜欢$HOSTNAME
。否则适用于 bash 中 运行 的所有内容并使用 stdin
.
ssh
实际上只是将字符串传递给远程主机。这个字符串被提供给一个shell,它应该解释它(用户的登录名shell,通常类似于bash
)。因此,无论您想执行什么,都需要该远程登录可以解释 shell,这是您必须遵守的全部规则。
您确实可以在命令字符串中使用换行符:
ssh alfe@sweethome "
ls /home/alfe/whatever
ping foreignhost
date
rm foobar
"
你可以像下面的例子那样做。
ssh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'