GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere il completamento di Bash per gli alias di comando?

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.


Linux
  1. Come usare gli alias di shell in Linux

  2. Come disabilitare la modifica della mia cronologia in bash

  3. Come posso annullare l'impostazione o eliminare una funzione bash?

  4. come utilizzare correttamente $1 in un alias con due argomenti

  5. Come posso trovare aiuto per il comando punto `.` in *nix?

Come creare alias Bash

Crea e usa alias Bash in Linux

Come creare un alias in Linux

Come creare alias per personalizzare i comandi in Ubuntu

Comando alias Linux

Come creare alias per personalizzare i comandi in Debian