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

Загрузите версию 4.2.0.13 файла .deb и установите ее. (Репозиторий Canonical Partner все еще находится в версии 4.2.0.11.)

wget http://download.skype.com/linux/skype-ubuntu-precise_4.2.0.13-1_i386.deb
sudo gdebi skype-ubuntu-precise_4.2.0.13-1_i386.deb

В 64-битных системах нужно быть многоархивым, потому что Skype приходит только в 32-разрядной версии на GNU / Linux.

16
задан 3 January 2012 в 17:42

6 ответов

Решение - это bash builtin compgen. Чтобы grep 'svn' из всех доступных команд и псевдонимов команд, доступных через $PATH, введите.

compgen -ac | grep svn

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

compgen -ac | grep "^ecrypt"
19
ответ дан 25 May 2018 в 15:29
  • 1
    отличный ответ, но что, если кто-то захочет самим использовать возможности завершения скрипта? Я имею в виду, что это не всегда срабатывает по имени команды, но также по параметрам команды и т. Д. – UncleZeiv 3 January 2012 в 20:08

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

Например:

compgen -ac | grep "svn"
2
ответ дан 25 May 2018 в 15:29

Это должно быть эквивалентно:

for x in `echo $PATH | sed 's/:/ /g'`; do ls $x | grep svn; done
1
ответ дан 25 May 2018 в 15:29
for i in $(echo $PATH | tr ":" "\n"); do find $i -type f -perm +111; done | grep svn

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

1
ответ дан 25 May 2018 в 15:29

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

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

1
ответ дан 25 May 2018 в 15:29

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

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

для 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
ответ дан 25 May 2018 в 15:29

Другие вопросы по тегам:

Похожие вопросы: