0

我将 glob 函数用于自动完成功能。我向您展示了这个问题,因为它很难解释:

matched = ~/.tcsh
glob(matched, 0, NULL, &pglob);

glob 将所有匹配的文件放在一个 char ** 中,当我打印它时,我有:

case[0] = .tcshrc
case[1] = 

我应该有.tcshrc~以防万一[1],但没有=S,我见过这样的标志“GLOB_TILDE”

 glob(matched, GLOB_TILDE, NULL, &pglob);

但它不会改变任何东西!有人能帮我吗?

4

1 回答 1

1

GLOB_TILDE只有当 ~ 出现在 glob 的开头时,该标志才会影响输出。看这里:

http://www.gnu.org/s/libc/manual/html_node/More-Flags-for-Globbing.html

至于你的问题,在我看来你的匹配值是错误的。似乎您应该*在它的末尾加上 a 以便它对自动完成有用,即:

matched = ~/.tcsh*

我对您之前的示例如何找到第一个示例感到有些困惑。这篇手册页文章的底部也有一些有趣的例子:

http://www.opengroup.org/onlinepubs/000095399/functions/glob.html

于 2010-04-16T20:49:04.387 回答