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


18

Коли я натискаю вкладку в консолі, я отримую цей вихід

Показати всі 2957 можливостей? (y або n)

Чи є можливість використовувати grepці можливості 2957? Я хотів би пошукати всі команди зі словом "svn" у них.

Відповіді:


21

Рішення - вбудований баш 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

Я не знав комген, і запропонував би:

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.