GNU/Linux >> Znalost Linux >  >> Linux

Jak získat dokončování bash pro aliasy příkazů?

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.


Linux
  1. Jak zakázat alias v Bash pro jeden příkaz?

  2. Jak zajistit, aby příkaz alias fungoval ve skriptu bash nebo souboru bashrc

  3. Jak používat aliasy shellu v Linuxu

  1. Jak zakázat úpravu mé historie v bash

  2. jak správně použít $1 v aliasu se dvěma argumenty

  3. Jak najdu nápovědu pro bodový příkaz `.` v *nix?

  1. 10 praktických aliasů Bash pro Linux

  2. Dvě skvělá použití pro příkaz cp:Bash zkratky

  3. Jak vymazat historii Bash na Linuxu