gpt4 book ai didi

makefile - bash 完成 makefile 目标

转载 作者:行者123 更新时间:2023-12-03 06:52:09 29 4
gpt4 key购买 nike

假设我有一个简单的 makefile,例如:

hello:
echo "hello world"

bye:
echo "bye bye"

然后在 bash 中我想要类似的东西:

make h < tab >

这样就可以完成

make hello

我找到了一种简单的方法,例如创建空文件 hellobye,但我正在寻找更复杂的方法。

最佳答案

将其添加到您的 ~/.bash_profile 文件或 ~/.bashrc 文件中

complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make

这会使用 grep 在 Makefile 中搜索标题为“Makefile”或“makefile”的目标(请注意 ?akefile 中的大写 ? 通配符),并将其通过管道传输bash 中的 complete 命令用于指定如何自动完成参数。 -W 标志表示 complete 命令的输入将是一个单词列表,这是通过将 grep 的结果传递给 sed 来完成的,sed 会排列将其转换为所需的单词列表格式。

注意事项和陷阱:

  1. 您的 make 文件名为“GNUMakefile”或“Makefile”或“makefile”以外的任何其他名称。如果您经常遇到此类标题,请考虑相应地更改正则表达式 ?akefile

  2. 在进行更改后忘记获取 ~/.bash_profile 或 ~/.bashrc 文件。我添加这个看似微不足道的细节,因为对于外行来说它是陌生的。要使 bash 文件的任何更改生效,请使用以下命令获取它们

    source ~/.bashrc

    source ~/.bash_profile
PS。现在,您还可以通过按两次 [Tab] 来显示 可能的 make 目标,就像在 bash 补全中一样。只需确保在键入 [Tab] 两次之前在命令 make 之后添加一个空格即可。

关于makefile - bash 完成 makefile 目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4188324/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com