J’ai créé de nombreux alias dans mon fichier .bash_aliases
et ils sont très utiles. Si je veux toutes les informations sur un paquet, je fais quelque chose comme:
allinfo software-center
Et cela équivaut à:
apt-cache show software-center
Comme l’alias est défini comme:
alias allinfo='apt-cache show'
Mais il y a un inconvénient à cela, je suis actuellement incapable de allinfo
automatiquement TAB lorsque allinfo
place de la commande réelle. Je me demandais donc s’il existait un moyen de surmonter cet inconvénient et de faire en sorte que faire allinfo software-ce[TAB]
fonctionne exactement de la même manière que lorsque vous l’utilisez avec la commande réelle, et pas simplement créer un grand onglet espace?
J’utilise gnome-terminal
.
Informations sur le système d’exploitation:
No LSB modules are available. Dissortingbutor ID: Ubuntu Description: Ubuntu 15.04 Release: 15.04 Codename: vivid
Informations sur le forfait:
gnome-terminal: Installed: 3.14.2-0ubuntu3 Candidate: 3.14.2-0ubuntu3 Version table: *** 3.14.2-0ubuntu3 0 500 http://gb.archive.ubuntu.com/ubuntu/ vivid/main amd64 Packages 100 /var/lib/dpkg/status
Bonne question! Si votre commande allinfo
était identique à celle d’ apt-cache
uniquement (c’est-à-dire sans show
), nous pourrions examiner l’achèvement de apt-cache
et l’appliquer à votre alias allinfo
.
Cependant, vous voulez un sous-ensemble de l’achèvement de apt-cache
, nous avons donc un peu plus de travail à faire.
Si nous examinons la définition d’achèvement d’ apt-cache
– dans /usr/share/bash-completion/completions/apt-cache
, nous constatons que la commande suivante est utilisée pour la sous show
commande show
:
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) )
– Il s’agit simplement de définir la variable COMPREPLY
dans la liste des packages correspondants.
Nous pouvons donc emprunter ceci et écrire notre propre fonction, et la lier à votre alias allinfo:
# define a function to print the possible completions for # an allinfo invocation _allinfo() { _init_completion || return COMPREPLY=($(apt-cache --no-generate pkgnames "$cur" 2>/dev/null)) return 0 } # bind the above completion function to the 'allinfo' alias complete -F _allinfo allinfo
Si vous ajoutez ce fractionnement à votre fichier .bashrc
, vous devez faire en sorte que les complétions fonctionnent comme prévu.
Je n’ai aucune idée de bash
, mais ça marche avec zsh
et quelques plugins
Installez le z-shell avec
sudo apt-get install zsh
et définir le z-shell comme shell standard
sudo chsh "$USER" -s $(which zsh)
et démarrez un nouveau terminal pour utiliser le z-shell
Ajouter Antigen v1
cd git clone https://github.com/zsh-users/antigen.git
Et configurer
# path to antigen clone source ~/antigen/antigen.zsh # Load the oh-my-zsh's library. antigen use oh-my-zsh # Bundles from the default repo (robbyrussell's oh-my-zsh). antigen bundle git antigen bundle heroku antigen bundle pip antigen bundle lein antigen bundle command-not-found antigen bundle zsh-users/zsh-completions src # Syntax highlighting bundle. antigen bundle zsh-users/zsh-syntax-highlighting # Load the theme. antigen theme robbyrussell # antigen bundle nojhan/liquidprompt # Tell antigen that you're done. antigen apply
Quelques images (l’invite est nojhan / liquidprompt)