Как я могу просмотреть возможности завершения вкладки?

18

Когда я нажимаю вкладку в консоли, я получаю этот вывод

Показать все 2957 возможностей? (у или н)

Есть ли способ использовать grepэти 2957 возможностей? Я хотел бы найти все команды со словом "SVN" в них.

UAdapter
источник

Ответы:

21

Решением является встроенный bash compgen. Чтобы очистить 'svn' от всех доступных команд и псевдонимов команд, доступных через $PATH, введите.

compgen -ac | grep svn

Хотите выполнить поиск по определенному префиксу (например, по всем командам, начинающимся с ecrypt)? Используйте регулярные выражения. ,

compgen -ac | grep "^ecrypt"
Jjed
источник
отличный ответ, но что, если кто-то захочет самостоятельно оценить возможности завершения табуляции? Я имею в виду, что это не всегда вызывается именем команды, но также параметрами команды и т. Д.
UncleZeiv
2

Вы можете попробовать использовать compgen.

Например:

compgen -ac | grep "svn"
Раджеш Пантула
источник
1

Это должно быть равнозначно:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
totaam
источник
1
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

Очень похоже на ответ totaam, за исключением того, что ограничивает область его действия исполняемыми файлами (как это делает Bash). Но JJE compgenеще на милю лучше.

Оли
источник
1

может быть, {,.}*svn*помогает здесь, например ls -l /usr/bin/{,.}*svn*<tab>.

Но посмотрите на Zsh! Вот здесь: http://www.jukie.net/bart/blog/zsh-tab-completion - несколько замечательных примеров того, как это может помочь уменьшить ваши результаты завершения вкладки. Это включает в себя также отрицание, например, если вам нужны все результаты завершения табуляции без слова «foobar», или все результаты с четными цифрами на первом месте, завершение вкладки в подкаталоге и многое другое. Причиной, по которой я перешел на zsh, стал обмен историей между всеми открытыми терминалами.

математический
источник
0

Я не знал compgen, и предложил бы:

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

для баш.

${VAR//pattern/replace} replaces in VAR pattern with replace. // is used to replace every pattern, not just the first, which would be just /.
Пользователь неизвестен
источник