自动完成不适用于 jarsigner 的文件参数

自动完成不适用于 jarsigner 的文件参数

我正在使用 Lubuntu 12.10。假设我当前文件夹中有一个名为 test.apk 的文件。

1.) 在 LXTerminal/bash 中,如果我输入,

adb install t<TAB>

终端将其正确自动补全为“test.apk”

2.)但是如果我尝试,

jarsigner -verify t<TAB>

它不起作用。

为什么会有这样的行为?是否有可能让它在第二种情况下工作?

答案1

jarsigner有一个完成脚本 bash 完成。您可能正在使用 bash-completion。许多发行版默认安装它。完成脚本jarsigner执行一些文件名过滤。它需要一个带有扩展名的文件.jar。以下是完成脚本的摘录:

# Check if a jar was already given.
local i jar=false
for (( i=0; i < ${#words[@]}-1; i++ )) ; do
    if [[ "${words[i]}" == *.jar && \
        "${words[i-1]}" != -signedjar ]] ; then
        jar=true
        break
    fi
done
...
if ! $jar ; then
...
        COMPREPLY=( $( compgen -W '-keystore -storepass -storetype
            -keypass -sigfile -signedjar -digestalg -sigalg -verify
            ...
    _filedir jar
    ...

.jar直到给出 带有扩展名的文件为止,_filedircompgen用于限制对 jar 文件和某些程序标志的完成。

/usr/share/bash-completion/completions/jarsigner如果您想亲自查看,完成脚本可能位于

相关内容