Код: Выделить всё
$ cat dbcmd
echo "Usage: dbcmd [ []]
Commands:
backup
db-backup
db-purge
load
debug
analyze
cycle
endday
gendbset
help
perform
print
remove
restart
dump
start
status
stop
tables
info
update"
< /code>
И это мой скрипт завершения. (Кредит: https: //iridakos.com/programming/2018/03/01/bash-programmable-complotion-tutorial)
$ cat dbcmd_completion.bash
#/usr/bin/env bash
_dbcmd_completions()
{
if [ "${#COMP_WORDS[@]}" != "2" ]; then
return
fi
local IFS=$'\n'
local list_var="$(dbcmd|awk -F '\t' '{printf("%s", $1)}'|sed 's/.*://'|sed 's/^\s.//'|sed 's/\s\+/ /g')"
local suggestions=($(compgen -W "$list_var" -- "${COMP_WORDS[1]}"))
if [ "${#suggestions[@]}" == "1" ]; then
local number="${suggestions[0]/%\ */}"
COMPREPLY=("$number")
else
for i in "${!suggestions[@]}"; do
suggestions[$i]="$(printf '%*s' "-$COLUMNS" "${suggestions[$i]}")"
done
COMPREPLY=("${suggestions[@]}")
fi
}
_dothis_completions()
{
if [ "${#COMP_WORDS[@]}" != "2" ]; then
return
fi
local list_var="backup db-backup db-purge load debug analyze cycle endday gendbset help perform print remove restart dump start status stop tables info update"
local suggestions=($(compgen -W "$list_var" -- "${COMP_WORDS[1]}"))
if [ "${#suggestions[@]}" == "1" ]; then
local number="${suggestions[0]/%\ */}"
COMPREPLY=("$number")
else
for i in "${!suggestions[@]}"; do
suggestions[$i]="$(printf '%*s' "-$COLUMNS" "${suggestions[$i]}")"
done
COMPREPLY=("${suggestions[@]}")
fi
}
#complete -F _dothis_completions dbcmd
complete -F _dbcmd_completions dbcmd
Может ли кто -нибудь предоставить решение для этого? < /P>
Подробнее здесь: https://stackoverflow.com/questions/793 ... -help-text