GNU/Linux >> Tutoriels Linux >  >> Linux

Comment obtenir l'achèvement de Bash pour les alias de commande ?

Je cherche à obtenir la complétion de tabulation sur mes alias de ligne de commande, par exemple, disons que j'ai défini l'alias suivant :

alias apt-inst='sudo aptitude install'

Existe-t-il un moyen d'obtenir les complétions fournies par aptitude lorsque j'appuie sur la touche de tabulation ? c'est-à-dire que lorsque j'écris "sudo aptitude install gnumer" et que j'appuie sur l'onglet, aptitude le complète en gnumeric, ou s'il y avait une incertitude, répertorie tous les packages disponibles commençant par gnumer. Si je le fais en utilisant mon alias, rien - pas d'achèvement.

Réponse acceptée :

Il y a un super sujet à ce sujet sur les forums Ubuntu. Ole J propose la fonction de définition de complétion d'alias suivante :

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"
}

Utilisez-le pour définir une fonction de complétion pour votre alias, puis spécifiez cette fonction comme compléteur pour l'alias :

make-completion-wrapper _apt_get _apt_get_install apt-get install
complete -F _apt_get_install apt-inst

Je préfère utiliser des alias pour ajouter des arguments toujours utilisés aux programmes existants. Par exemple, avec grep , je veux toujours ignorer les périphériques et les fichiers binaires, donc je crée un alias pour grep . Pour ajouter de nouvelles commandes telles que grepbin , j'utilise un script shell dans mon ~/bin dossier. Si ce dossier se trouve dans votre chemin, il sera complété automatiquement.


Linux
  1. Comment faire fonctionner la commande alias dans un script bash ou un fichier bashrc

  2. Comment désactiver la modification de mon historique dans bash

  3. C++11 :Comment aliaser une fonction ?

  4. Comment désactiver ou supprimer une fonction bash ?

  5. comment utiliser correctement $1 dans un alias avec deux arguments

Comment créer des alias Bash

Créer et utiliser des alias Bash sous Linux

Comment créer un alias sous Linux

Comment créer des alias pour personnaliser les commandes dans Ubuntu

Commande d'alias Linux

Comment créer des alias pour personnaliser les commandes dans Debian