例如,我正在尝试做一个简单的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。
答案 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* .