Gui*_*ssé 43 makefile bash-completion
假设我有一个简单的makefile,如:
hello:
echo "hello world"
bye:
echo "bye bye"
Run Code Online (Sandbox Code Playgroud)
然后在bash我想要的东西:
make h <tab>
所以它可以完成
打招呼
我发现了一种简单的方法,比如创建空文件hello,bye但我正在寻找更复杂的东西.
Cib*_*eph 46
在〜/ .bash_profile文件或〜/ .bashrc文件中添加它
complete -W "\`grep -oE '^[a-zA-Z0-9_.-]+:([^=]|$)' ?akefile | sed 's/[^a-zA-Z0-9_.-]*$//'\`" make
Run Code Online (Sandbox Code Playgroud)
这将使用grep 在Makefile中搜索标题为" Makefile " 的目标(注意大写字母M),并将其传递给bash中的完整命令,该命令用于指定参数的完成方式.所述-W标志表示输入到"完整的"命令将其通过使grep的结果通过完成了单词表的sed其安排成所希望的单词表格式.
警告和陷阱:
您的make文件名为'GNUMakefile'或'makefile'或除'Makefile'以外的任何其他内容.如果您经常遇到这样的标题,只需添加另一行,其格式与上面相同,但在〜/ .bashrc或〜/ .bash_profile文件中使用所需的makefile标题代替'Makefile'.
在进行更改后忘记发送〜/ .bash_profile或〜/ .bashrc文件.我添加了这个看似微不足道的细节,因为对于不熟悉的人来说,这是不熟悉的.对于任何改变你的bash文件生效,源它们使用命令
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
要么
source ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)PS.您现在还可以通过按[Tab]两次来显示可能的制作目标,就像在bash完成时一样.只需确保在命令make之后添加一个空格,然后再键入[Tab]两次.
Kos*_*Kos 11
这可能是你想要的吗?
http://freshmeat.net/projects/bashcompletion/
make [Tab]将在Makefile中的所有目标上完成.该项目旨在为最常见的Linux/UNIX命令生成可编程完成例程,减少系统管理员和程序员每天需要输入的数量.
大多数操作系统都有一个名为bash-completion的有用包。它包括 Makefile 完成。
(如果您使用的是 macOS 和Homebrew,则可以通过 获得brew install bash-completion。)