在多行上编写 SSH 命令

Write SSH command over multiple lines

我正在尝试远程登录 shell 并在 shell 上执行一系列命令。 但为了使其更具可读性,我想将我的代码放在多行上。我应该怎么做?

ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; ....  "

谢谢!

您可以使用 bashHere 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"
'