我想创建一个bash完成脚本,该脚本可以识别形式为--arg
和的参数--some-arg=file
。
在阅读了本教程和中的一些示例之后/usr/share/bash_completion/completions/
,我编写了以下脚本(以节省使用Chromium键入一些标志的时间):
_chromium()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
# Some interesting options
opts="
--disable-web-security
--easy-off-store-extension-install
--incognito
--load-extension=
--pack-extension=
--pack-extension-key=
--user-data-dir=
"
# Handle --xxxxxx=file
if [[ ${cur} == "--"*"=" ]] ; then
# Removed failures (is my logic OK?)
return 0
fi
# Handle other options
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
}
complete -F _chromium chromium
我将其保存到~/bash_completions/chromium
,并使用创建了一个符号链接sudo ln -s ~/bash_completions/chromium /usr/share/bash_completion/completions/chromium
。
然后,我使用加载了它. /usr/share/bash_completions/completions/chromium
。
现在,我遇到两个问题:
chromium --u<TAB>
扩展到chromium --user-data-dir=<SPACE>
(我不需要空格)。- 路径(目录和文件)不再完整。
我该如何解决这些问题?
切换到zsh是一种选择吗?
—
吉尔斯(Gilles)“所以,别再邪恶了”