web-dev-qa-db-fra.com

Comment puis-je grep à travers les possibilités de complétion d'onglets?

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

Afficher toutes les 2957 possibilités? (y ou n)

Est-il possible d'utiliser grep sur ces 2957 possibilités? Je voudrais rechercher toutes les commandes contenant le mot "svn".

18
UAdapter

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

compgen -ac | grep svn

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

compgen -ac | grep "^ecrypt"
21
Jjed

Vous pouvez essayer d'utiliser compgen.

Par exemple:

compgen -ac | grep "svn"
2
Rajesh Pantula

Cela devrait être équivalent:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
1
totaam
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, sa portée est limitée aux exécutables (comme le fait Bash). Mais JJE's compgen est encore meilleur.

1
Oli

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

Mais regardez le Zsh! Voici: http://www.jukie.net/bart/blog/zsh-tab-completion sont d'excellents exemples de la façon dont cela peut aider à réduire vos résultats de complétion par onglets. Ceci inclut également la négation, par exemple si vous voulez tous les résultats de complétion par des tabulations sans le mot "foobar", ou tous les résultats avec des chiffres pairs en premier lieu, la complétion de sous-répertoires et bien plus encore. La raison pour laquelle j'ai changé pour zsh était le partage de l'historique entre tous les terminaux ouverts.

1
math

Je ne savais pas Compgen, et aurait 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 /.
0
user unknown