cp 的所有可能退出代码

Posted

技术标签:

【中文标题】cp 的所有可能退出代码【英文标题】:All possible exit codes for cp 【发布时间】:2014-05-10 09:41:53 【问题描述】:

查看 cp 的手册页,我只发现当复制成功且没有错误时命令以 0 退出,并且在任何错误时都以大于 0 的数字退出。但是,我找不到有关映射到特定案例的特定退出代码的任何详细描述。是否有这样的描述,甚至是标准化的,还是每个 Unix/Linux 发行版针对不同的场景都有自己的退出代码集?

【问题讨论】:

99% 的 Unix 命令只使用 0 表示成功,1 表示失败,它们没有不同的代码来区分原因。具有特定退出代码的少数命令在其手册页中对其进行了描述。所以如果没有这个细节,你可以假设没有具体的代码。 有关这方面的示例,请参见 grep 手册页。如果找到匹配项,则退出代码为0,如果未找到匹配项,则为1,如果发生错误,则为2 【参考方案1】:

这是cpcoreutils-8.21 退出的方式:

exit (ok ? EXIT_SUCCESS : EXIT_FAILURE);

只有 0 或 1。

【讨论】:

即使有更复杂的区别,它也只对这一个实现有效。如果它没有在任何标准中描述,它就不会以可移植的方式出现。【参考方案2】:

在 Mac (10.12.5 (16F73)) 上,还有其他代码。例如:

Mac$ cp -W 1 2; echo $?
cp: illegal option -- W
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
64

【讨论】:

以上是关于cp 的所有可能退出代码的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 11 Beta 7 命令 PhaseScriptExecution 失败,退出代码非零([CP] Copy Pods Resources)

主进程退出的时候,杀死所有子进程

如果 errexit 打开,我如何运行可能失败的命令并获取其退出代码?

是否有完整的 JVM 退出代码列表

命令 PhaseScriptExecution 以非零退出代码失败 - 使用 CocoaPods

`docker cp` 命令如何工作