Chci získat dokončování tabel na aliasech příkazového řádku, například řekněme, že jsem definoval následující alias:
alias apt-inst='sudo aptitude install'
Existuje způsob, jak získat dokončení poskytované aptitude, když stisknu klávesu Tab? tj. když napíšu ‚sudo aptitude install gnumer‘ a stisknu tab, aptitude to dokončí na gnumeric, nebo pokud byla nejistota, vypíše všechny dostupné balíčky počínaje gnumer. Pokud to udělám pomocí svého aliasu, nic – žádné dokončení.
Přijatá odpověď:
Na fórech Ubuntu je o tom skvělé vlákno. Ole J navrhuje následující funkci definice dokončení aliasů:
function make-completion-wrapper () {
local function_name="$2"
local arg_count=$(($#-3))
local comp_function_name="$1"
shift 2
local function="
function $function_name {
((COMP_CWORD+=$arg_count))
COMP_WORDS=( "[email protected]" ${COMP_WORDS[@]:1} )
"$comp_function_name"
return 0
}"
eval "$function"
echo $function_name
echo "$function"
}
Použijte jej k definování funkce dokončení pro váš alias a poté určete tuto funkci jako dokončující pro alias:
make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst
Preferuji používání aliasů pro přidávání vždy používaných argumentů do existujících programů. Například pomocí grep
, vždy chci přeskakovat zařízení a binární soubory, takže vytvořím alias pro grep
. Pro přidávání nových příkazů, jako je grepbin
, používám skript Shell v mém ~/bin
složka. Pokud je tato složka ve vaší cestě, bude automaticky dokončena.