scp 别名用于删除冒号/特殊字符

scp 别名用于删除冒号/特殊字符

最近,Windows 10 添加了 bash shell,作为其 Linux Subsystems for Windows 计划的一部分。这通常很棒,但我遇到了一个有趣的问题:Windows 文件系统不允许在文件名中使用冒号/其他特殊字符。因此,当我尝试scp这样的事情时:

scp user@remote:/path/to/file-2016-09-07_08:45:45.txt .

scp 抛出无效参数错误。解决这个问题的一种方法是指定一个不带特殊字符的新文件名,但是当尝试执行类似的操作时,这很麻烦

scp user@remote:/path/to/file-2016-09-07* .

因为所有文件都会抛出无效参数错误。_例如,我可以在 .bashrc 文件中放置一些代码来接受任何 scp 参数并将每个有问题的字符替换为 吗?相当于

 scp user@remote:/path/to/file-2016-09-07_08:45:45 file-2016-09-07_08_45_45.txt

但便携式可与*?

答案1

您可以对名称进行参数替换——如果您将其放在变量中的话。但是 shell 不会“看到”远程文件系统上scp可能“看到”的通配符扩展,因此 shell 别名不起作用。

根据描述,您可以编写一个脚本来执行您所要求的操作,例如,

  • 用于ssh获取远程文件名列表,以及
  • 循环中...
  • 形成本地文件名,并且
  • 使用 scp 复制实际的远程/本地文件。

答案2

您还可以考虑在原始文件名中使用替代 Unicode 字符,从而允许复制而不会出现任何命名问题。

相关内容