【发布时间】:2015-09-21 11:53:44
【问题描述】:
此示例行中'*' ... 的含义是什么?
javac -classpath .:classes:/opt/pi4j/lib/'*' ...
【问题讨论】:
标签: linux shell command-line command
此示例行中'*' ... 的含义是什么?
javac -classpath .:classes:/opt/pi4j/lib/'*' ...
【问题讨论】:
标签: linux shell command-line command
引用通配符* 是为了在您输入命令行时阻止shell 尝试扩展它。
但是,根据this page from the Oracle Java documentation,类路径本身可以评估通配符:
类路径条目可以包含基本名称通配符, 这被认为等同于指定所有文件的列表 在扩展名为 .jar 或 .JAR 的目录中。例如, 类路径条目 foo/ 指定目录中的所有 JAR 文件名为 富。仅由 * 组成的类路径条目扩展为所有 当前目录下的jar文件。文件将被考虑 无论它们是否隐藏(即有名称 以'.'开头)。
包含 * 的类路径条目将不匹配类文件。至 匹配单个目录 foo 中的类和 JAR 文件,使用任一 foo:foo/* 或 foo/*:foo。选择的顺序决定了 foo 中的类和资源在 foo 中的 JAR 文件之前加载,或者 反之亦然。
不递归搜索子目录。例如, foo/* 看起来 仅适用于 foo 中的 JAR 文件,而不适用于 foo/bar、foo/baz 等中。
如果你完全不了解*,那么你需要关注How to Use Wildcards
【讨论】: