Bash scp失败?

时间:2017-07-24 03:17:51

标签: bash scp

例如,我正在尝试做一个简单的scp:

scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/* .

如果文件夹中有文件显然只返回scp: No match.,它会失败吗?我很确定以前曾经工作过。当我尝试:

scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/1.txt .

它运作得很好。这是与我试图scp的服务器有关,以防止我传输所有文件?

编辑:已解决。主要问题是我在tcsh而不是bash。

2 个答案:

答案 0 :(得分:2)

您需要在远程shell 上展开*(到所有文件),而不是在本地shell 上展开。

在本地shell上阻止*预扩展的任何常规转义方法都可以:

scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/'*' .
scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/"*" .
scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/\* .

或者您也可以引用整个文件名字符串:

scp tzj21@example.co.uk:'/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/*' .
scp tzj21@example.co.uk:"/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1/*" .

答案 1 :(得分:1)

也许会这样做。

您必须将文字转义传递给scp,以便远程计算机不会将其视为glob。

〔实施例>

scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1\* .
scp tzj21@example.co.uk:/home/tzj21/scratch/McAdam/chains/z0.5/temp_cc1* .