Sto cercando di ottenere il completamento delle schede sui miei alias della riga di comando, ad esempio, supponiamo di aver definito il seguente alias:
alias apt-inst='sudo aptitude install'
C'è un modo per ottenere i completamenti forniti da aptitude quando premo il tasto Tab? cioè quando scrivo "sudo aptitude install gnumer" e premo tab, aptitude lo completa in gnumeric, o se c'era incertezza elenca tutti i pacchetti disponibili che iniziano con gnumer. Se lo faccio usando il mio alias, niente, nessun completamento.
Risposta accettata:
C'è un bel thread su questo sui forum di Ubuntu. Ole J propone la seguente funzione di definizione del completamento dell'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"
}
Usalo per definire una funzione di completamento per il tuo alias, quindi specifica quella funzione come completatore per l'alias:
make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst
Preferisco usare gli alias per aggiungere argomenti sempre usati ai programmi esistenti. Ad esempio, con grep
, voglio sempre saltare i dispositivi e i file binari, quindi creo un alias per grep
. Per aggiungere nuovi comandi come grepbin
, utilizzo uno script di shell nel mio ~/bin
cartella. Se quella cartella è nel tuo percorso, verrà completata automaticamente.