非法选择-?复制时

时间:2018-11-30 12:11:24

标签: bash unix

我刚刚开始在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 ---

根据对此问题的评论,我提供了一些其他信息:

  1. which cp返回/bin/cp
  2. echo cp -R test/ .返回cp -R test/ .
  3. set | grep cp不返回任何内容
  4. cp --versioncp --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
  5. man cp返回了手册页,但是除了BSD February 23, 2005 BSD
  6. 之外,似乎没有描述该版本的任何内容。

----更新----

在所有出色的评论之后,我找到了此问题并进行了修复。 type cp返回cp is aliased to cp -I

我已经创建了cp的别名,以便在复制将覆盖现有文件(cp -I参数)的文件之前提示标准错误输出。可以在Macbook上与-R结合使用此别名,但是在我的Imac上却找不到。

现在命令cp -R test/ .的行为符合我的预期。

2 个答案:

答案 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/* ./

添加星号表示您正在复制文件,而不是目录。