跨多个目录自动完成文件

时间:2013-04-30 19:57:52

标签: bash autocomplete

我尝试编写一个bash脚本来执行带前缀(例如"DRI_PRIME=1 glxspheres")的命令。这是我目前的剧本:

#!/bin/bash

_graphic() {
    export IFS=":"
    PATHCONTENT=()
    for CONTENTPATH in $PATH; do
            PATHCONTENT+=$(ls $CONTENTPATH)
    done
    COMPREPLY=$PATHCONTENT;
}

complete -F _graphic graphic

DRI_PRIME=1 "$@"

但是这个脚本不会自动填充$ PATH变量中的文件夹。这有什么问题?

1 个答案:

答案 0 :(得分:1)

我不是百分之百确定问题是什么,但似乎你想要一种方式告诉

$ graphic my_app param blah

它实际上会运行

$ DRI_PRIME=1 my_app param blah

如果是这样,那就很容易了,bash本身就是为你做的:

$ cat a.sh
function graphic {
        DRI_PRIME=1 "$@"
}

complete -A command graphic

完成-A命令使bash建议命令名称(你使用完成-F _graphic ,这使得bash调用函数可以获得可能的完成)。