Bash scp失败?

Bash scp failure?

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

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

明明文件夹里有文件,只是returnsscp: No match.就失败了?我很确定这以前曾经工作过。当我尝试时:

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

它工作得很好。这与我试图通过 scp 阻止我传输所有文件的服务器有关吗?

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

也许这样就可以了。

您必须将文字转义传递给 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* .

您需要在远程shell而不是本地[=26]上扩展*(到所有文件) =].

在本地 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/*" .