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


18

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

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

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

Ответы:


21

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

compgen -ac | grep svn

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

compgen -ac | grep "^ecrypt"

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


1

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

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

Очень похоже на ответ 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 /.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.