我正在使用 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
直到给出 带有扩展名的文件为止,_filedir
并compgen
用于限制对 jar 文件和某些程序标志的完成。
/usr/share/bash-completion/completions/jarsigner
如果您想亲自查看,完成脚本可能位于