【发布时间】:2015-11-11 23:51:42
【问题描述】:
我正在尝试远程登录到 shell 并在 shell 上执行一堆命令。 但为了使其更具可读性,我想将我的代码放在多行中。我该怎么做?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
【问题讨论】:
标签: bash shell ssh remote-access
我正在尝试远程登录到 shell 并在 shell 上执行一堆命令。 但为了使其更具可读性,我想将我的代码放在多行中。我该怎么做?
ssh -o <Option> -x -l <user> <host> " $long_command1; $long_command2; .... "
谢谢!
【问题讨论】:
标签: bash shell ssh remote-access
ssh 实际上只是将一个字符串传递给远程主机。在那里,这个字符串被提供给一个应该解释它的 shell(用户的登录 shell,通常类似于 bash)。因此,无论您要执行什么,都需要该远程登录 shell 可以解释,这就是您必须遵守的全部规则。
您确实可以在命令字符串中使用换行符:
ssh alfe@sweethome "
ls /home/alfe/whatever
ping foreignhost
date
rm foobar
"
【讨论】:
您可以使用bash 的Here Documents 功能。
就像:
ssh <remote-host> bash <<EOF
echo first command
echo second command
EOF
EOF 标志着输入的结束。
更多信息:使用man bash 并搜索Here Documents。
编辑:唯一需要注意的是,使用变量可能很棘手,您必须转义 $ 以保护它们在远程主机而不是本地 shell 上进行评估。喜欢\$HOSTNAME。否则适用于从 bash 运行并使用 stdin 的所有内容。
【讨论】:
bash 的情况下也可以工作,只需“HereDocing”到 ssh。
你可以像下面的例子那样做。
ssh -o <Option> -x -l <user> <host> '
pwd
whoami
ls
echo "$PATH"
'
【讨论】: