我刚刚开始在Imac macOS HighSierra上工作,当尝试复制某些文件时,我不断收到错误消息:
我刚刚建立了一个test
目录来澄清问题:
目录test
包含:
file1.txt file2.txt folder1
在父目录中使用以下命令:
cp -R test/ .
我收到此错误:
cp: illegal option -- ?
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
根据cp的手册页,-R参数表示:
如果source_file指定目录,则cp复制该目录以及此时连接的整个子树。如果source_file以/结尾,则 目录被复制,而不是目录本身。
关于为什么会出现错误的任何建议?
我有bash版本3.2.57(1)-发行版
---- UPDATE ---
根据对此问题的评论,我提供了一些其他信息:
which cp
返回/bin/cp
echo cp -R test/ .
返回cp -R test/ .
set | grep cp
不返回任何内容cp --version
和cp --help
返回cp: illegal option -- ?
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
man cp
返回了手册页,但是除了BSD February 23, 2005 BSD
----更新----
在所有出色的评论之后,我找到了此问题并进行了修复。 type cp
返回cp is aliased to cp -I
。
我已经创建了cp
的别名,以便在复制将覆盖现有文件(cp -I
参数)的文件之前提示标准错误输出。可以在Macbook上与-R
结合使用此别名,但是在我的Imac上却找不到。
现在命令cp -R test/ .
的行为符合我的预期。
答案 0 :(得分:1)
对于Mac OS,请按以下示例更改cp命令
Ex 1。
"copy:schemas": "cp --parents schematics/*/schema.json ../../dist/my-lib/",
为
"copy:schemas": "find schematics -type f -name 'schema.json' -exec rsync -R {} ../../dist/my-lib/ \\;",
Ex 2。
copy:files": "cp --parents -p schematics/*/files/** ../../dist/my-lib/",
为
"copy:files": "find schematics/*/files/** -exec rsync -R {} ../../dist/my-lib/ \\;",
希望这对?有帮助。
答案 1 :(得分:0)
这能解决您的问题吗?
cp -R test/* .
或:
cp -R test/* ./
添加星号表示您正在复制文件,而不是目录。