代码之家  ›  专栏  ›  技术社区  ›  Guillaume Massé

生成文件目标的bash完成

  •  33
  • Guillaume Massé  · 技术社区  · 14 年前

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

    hello:
       echo "hello world"
    
    bye:
       echo "bye bye"
    

    然后在bash我想要这样的东西:

    制作h<选项卡>

    这样就可以完成

    打招呼

    我找到了一个简单的方法,比如创建空文件 hello bye 但我在找更多的东西 复杂的 .

    5 回复  |  直到 14 年前
        1
  •  11
  •   Kos    14 年前

    这是你要找的吗?

    http://freshmeat.net/projects/bashcompletion/

    使[制表符]全部完成 生成文件中的目标。这个项目是 设想生产可编程的 大多数情况下的完成程序 常见的Linux/UNIX命令,减少 键入sysadmins和 程序员需要每天 基础。

        2
  •  47
  •   Cibin Joseph    5 年前

    将此添加到 ~/.bash\u配置文件 文件或 ~/.bashrc公司 文件

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

    这将在Makefile中搜索名为“Makefile”或“Makefile”的目标(注意大写 ? 通配符输入 ?akefile complete bash中的命令,用于指定参数如何自动完成。这个 -W 标志表示 完成 命令将是一个单词列表,通过将grep的结果传递给 sed 把它安排成 词表 格式。

    注意事项和问题:

    1. 您的make文件名为“GNUMakefile”或“make file”或“Makefile”以外的任何文件。如果经常遇到这样的标题,请考虑更改正则表达式 是吗?akefile公司 因此。

    2. 在做了这些更改之后,忘记获取~/.bash_配置文件或~/.bashrc文件的源代码。我加上这个看似琐碎的细节,因为,对初来乍到的人来说是陌生的。 要使对bash文件的任何更改生效, 来源 他们使用命令

      source ~/.bashrc
      

      source ~/.bash_profile
      

    另外,您现在还可以显示 可能的 像bash completion那样按两次[Tab]键来创建目标。只需确保在命令make之后添加一个空格,然后再键入[Tab]两次。

        3
  •  2
  •   mvds    14 年前

    这似乎至少是Debian Lenny的违约:

    $ grep Makefile /etc/bash_completion
        # make reads `GNUmakefile', then `makefile', then `Makefile'
        elif [ -f ${makef_dir}/Makefile ]; then
            makef=${makef_dir}/Makefile
        # before we scan for targets, see if a Makefile name was
        # deal with included Makefiles
    

    此文件的头声明:

    #   The latest version of this software can be obtained here:
    #
    #   http://bash-completion.alioth.debian.org/
    #
    #   RELEASE: 20080617.5
    
        4
  •  2
  •   Paul Bissex    6 年前

    有一个有用的包叫做 bash-completion 适用于大多数操作系统。它包括Makefile完成。

    (如果您使用的是macOS和 Homebrew ,你可以通过 brew install bash-completion .)

        5
  •  -3
  •   Qix - MONICA WAS MISTREATED    11 年前

    在Ubuntu10.04中,源文件如下:

    . /etc/bash_completion
    

    或者取消注释

    /etc/bash.bashrc
    
    推荐文章