以下命令sftp
使用一行发送一个命令:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home"
如何sftp
使用一根线发送多条线。有没有办法插入回车符或其他东西来实现这一点,例如:
sftp -o PasswordAuthentication=no user@host" <<<"lcd /home\n cd /myhome\n get file"
这个想法是不使用sftp -b
加载列出命令的外部文件的选项。
答案1
从您使用的here-string ( <<<
)语法来看,我猜您的shell是bash
,因此您还可以使用带有反斜杠转义字符的字符串( $''
):
sftp -o PasswordAuthentication=no user@host <<< $'lcd /home\n cd /myhome\n get file'
便携式替代方案是此处文档:
sftp -o PasswordAuthentication=no user@host <<END
lcd /home
cd /myhome
get file
END
答案2
使用该-b/--batchfile
选项进行正确的错误处理:
printf '%s\n' 'lcd /home' 'cd /myhome' 'get file' | sftp -b - user@host
答案3
是的,你可以使用echo -e
echo -e "lcd /home\ncd /myhome\nget file" | sftp user@host
答案4
Mybru,你可以像这样通过管道传输你的命令:
echo '
lcd /home
cd /myhome
get file
' | sftp -o PasswordAuthentication=no user@host