cp 命令未复制到正确的目录?

cp 命令未复制到正确的目录?

对于我的课程,我们将所有作业和作业都放在只读文件夹中,因此我想在 ssh 登录时将所有这些文件(它们不是很大)复制到我的个人文件夹中。到目前为止,我有时能够让脚本复制文件,但其他时候(总是如果我再次运行它来更新我的文件),它会将所有内容放入另一个同名但带有 ? 的目录中。在最后。我贴了一个 --verbose ,上面写着类似的东西

`/homes/USERNAME/PUBLIC_FOLDER/project_descriptions' -> `/homes/USERNAME/PRIVATE_FOLDER/publicCP\r/project_descriptions'

我不知道为什么它要添加一个 \r 。唯一没有文件的目录是“projects”,并且每次都复制得很好。我尝试过 -r、-R、-rf 和 -RF 但无济于事。最糟糕的是,我什至无法使用第二个 publicCP 目录中的文件,因为 WinSCP (我用它在 chrome 中打开 pdf)说

System Error.  Code: 123.
The filename, directory name, or volume label syntax is incorrect

我想这是预料之中的,因为它显示两个 publicCP 的名称完全相同。我对此完全不知所措,谷歌没有帮助,因为它不识别标点符号,当然“-r”告诉它不要搜索任何带有“r”的内容。

我还尝试过 cd'ing 进入私有文件夹并复制没有完整路径的所有内容,但这也不起作用。

答案1

需要删除行尾的回车符,notepad++ 添加了它们,因为它认为这是正确的,但 linux 不喜欢它。

答案2

因为你在上课...

这里有几个可以从命令行获取帮助的地方。

手册页:

man cp man ssh

信息页面:

info cp info ssh

需要注意的几个术语:

cp -r切换到递归复制目录。

“双引号” 用于可能包含空格的目录路径/名称。

“/路径/到我的文件/此处/file.text”

为了帮助解决问题:

确保脚本以“shebang”#! /bin/bash或 bash 以外的其他 shell 开头。

在添加到脚本之前,使用命令行让命令正确。

验证脚本的模式...

ls -la-- 查看模式。

sudo chmod a+x /path/file.sh——改变模式。

相关内容