首页 > 解决方案 > 如何在 ~/ 以外的文件夹中将多个文件从远程 scp 到本地?

问题描述

我正在尝试制作一个 bash 预期脚本,该脚本接受用户、主机、密码和文件名等输入,然后将文件从远程复制到本地。从我目前所读的内容来看,当您假设文件来自〜/时,将多个文件从远程复制到本地工作得很好,即:

scp -r user@host:"file1 file2 file3" .

将 file1、file2 和 file3 从 ~/ 复制到当前工作目录。但是我需要能够将另一个目录作为参数传递,所以我的 bash 脚本看起来像这样(但不起作用,我将解释如何):

eval spawn scp -oStrictHostKeyChecking=no -oCheckHostIP=no -r $user@$host:$dir/"$file1 $file2 $file3" ~/Downloads

这在第一个文件之后不起作用;shell 在第一个文件之后引发“没有这样的文件或目录”错误,我认为这意味着该脚本仅适用于第一个文件的 $dir,然后返回 ~/ 并且当然找不到文件那里。我到处寻找答案,但找不到,一次做一个文件会非常乏味。

标签: bashscp

解决方案


假设您的远程登录 shell 理解Brace Expansion,这应该可以工作

scp $user@$host:$dir/"{$file1,$file2,$file3}" ~/Downloads

推荐阅读