rm -rf 与 -rm -rf

发布于 2024-09-04 23:18:45 字数 80 浏览 1 评论 0原文

在 Makefile 中,我读到:

-rm -rf(而不是 rm -rf)。 Makefile 行开头的第一个“-”是什么意思?

In a Makefile, I read:

-rm -rf (instead of rm -rf). What does the first "-" mean at the beginning of the line in a Makefile ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反差帅 2024-09-11 23:18:45

这意味着 make 本身将忽略来自 rm 的任何错误代码。

makefile 中,如果任何命令失败,则 make 进程本身将停止处理。通过在命令前添加 - 前缀,您可以通知 make 无论命令的结果如何,它都应该继续处理规则。

例如,makefile 规则:

clean:
    rm *.o
    rm *.a

如果 rm *.o 返回错误(例如,如果没有任何要删除的 *.o 文件)。使用:

clean:
    -rm *.o
    -rm *.a

将解决该特定问题。


旁白:尽管在您的特定情况下可能不需要它(因为 -f 标志似乎可以防止 rm 在文件执行时返回错误不存在),在 makefile 中显式标记该行仍然是一个好习惯 - rm 在某些情况下可能会返回其他错误,这使得您的意图明确。

It means that make itself will ignore any error code from rm.

In a makefile, if any command fails then the make process itself discontinues processing. By prefixing your commands with -, you notify make that it should continue processing rules no matter the outcome of the command.

For example, the makefile rule:

clean:
    rm *.o
    rm *.a

will not remove the *.a files if rm *.o returns an error (if, for example, there aren't any *.o files to delete). Using:

clean:
    -rm *.o
    -rm *.a

will fix that particular problem.


Aside: Although it's probably not needed in your specific case (since the -f flag appears to prevent rm from returning an error when the file does not exist), it's still good practice to mark the line explicitly in the makefile - rm may return other errors under certain circumstances and it makes your intent clear.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文