Да, grep
может сделать что-то подобное :его опция -C
покажет контекст совпадения. Таким образом
git help | grep -C2 merge
покажет строки, содержащие «слияние», с двумя строками контекста выше и ниже.
Мне удобнее использоватьless
:
git help | less
, затем выполните поиск с помощью / .
git help
мало что вам скажет, вам понадобится
git help merge
, который откроет для вас соответствующую справочную страницу.
Некоторые эмуляторы терминала также позволяют выполнять поиск постфактум; например, терминал GNOME имеет меню поиска, и вы можете нажать CtrlShiftF , чтобы начать поиск.
То, что вы видите, является предполагаемым поведением при использовании базового механизма завершения complete -W
.
Если вам нужно более интеллектуальное завершение, вам нужно написать функции завершения (см. раздел «Программируемое завершение» в руководстве по Bash)и использовать complete -F
.
Вот как адаптировать ваш пример:
$ comp_d() {
COMPREPLY=( $(
if [ "$COMP_CWORD" -eq 1 ]; then
compgen -W "exempt limit show update" "$2"
fi
) )
}
$ complete -F comp_d d
Такие функции должны возвращать кандидатов на завершение в виде массива COMPREPLY
. Я использую ваш список слов только тогда, когда пользователь завершает первый аргумент(COMP_CWORD
равным 1 ), иначе массив остается пустым.