有没有办法让 bash 自动完成显示与实际自动完成所用的完成列表不同的完成列表?

有没有办法让 bash 自动完成显示与实际自动完成所用的完成列表不同的完成列表?

第一个问题 ^^

我有一个自动完成脚本,其中包含以下内容:

    COMPREPLY=()
    mapfile -t MAP< <(compgen -A directory -- "$cur")
    for entry in "${MAP[@]}"; do
#       if [[ "$entry" =~ ([^/]*$) ]]; then
#           COMPREPLY+=("$(printf "%q" "${BASH_REMATCH[1]}")")
            COMPREPLY+=("$(printf "%q/" "$entry")")
#       fi
    done;;

目标是使用目录名称自动完成命令,以便mycmd m[TAB]将其完成为mycmd mydir/

这工作得很好,但如果我有 2 个目录mydir1 mydir2并且我在mydir1,那么mycmd ../m[TAB]将显示../mydir1 ../mydir2

我希望能够自动完成,mycmd ../mydir1但只显示mydir1 mydir2ls ../。注释行允许我根据需要更改显示,但自动完成为,mycmd mydir1这是不正确的。

是否可以mydir1 mydir2在自动完成时显示为mycmd ../mydir1

谢谢 !

相关内容