Comment puis-je utiliser les possibilités de complétion des onglets?


18

Lorsque j'appuie sur l'onglet dans une console, j'obtiens cette sortie

Afficher les 2957 possibilités? (o ou n)

Existe-t-il un moyen d'utiliser grepces 2957 possibilités? Je voudrais rechercher toutes les commandes contenant le mot "svn".

Réponses:


21

La solution est le bash intégré compgen. Pour grep 'svn' à partir de toutes les commandes et alias de commande disponibles accessibles via $PATH, tapez.

compgen -ac | grep svn

Vous souhaitez rechercher à partir d'un certain préfixe (par exemple toutes les commandes commençant par ecrypt)? Utilisez des expressions régulières. .

compgen -ac | grep "^ecrypt"

excellente réponse, mais que se passe-t-il si l'on veut grep les possibilités d'achèvement des onglets eux-mêmes? Je veux dire, ce n'est pas toujours déclenché par le nom de la commande, mais aussi par les paramètres de la commande, etc.
UncleZeiv


1

Cela devrait être équivalent:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done

1
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

Très similaire à la réponse de totaam à part cela limite sa portée aux exécutables (comme le fait Bash). Mais JJE compgenest encore mieux.


1

peut-être {,.}*svn*aide ici, par exemple ls -l /usr/bin/{,.}*svn*<tab>.

Mais jetez un œil au Zsh! Ici: http://www.jukie.net/bart/blog/zsh-tab-completion sont quelques excellents exemples de la façon dont cela peut aider à réduire les résultats de complétion de votre onglet. Cela inclut également la négation, par exemple si vous voulez tous les résultats de tabulation sans le mot "foobar", ou tous les résultats avec des chiffres pairs en premier lieu, la tabulation de sous-répertoire et bien plus encore. La raison pour laquelle je suis passé à zsh était le partage d'historique entre tous les terminaux ouverts.


0

Je ne connaissais pas compgen et j'aurais suggéré:

ls -d ${PATH//:/\/*svn* } 2>/dev/null

pour bash.

${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.