10

grep - одна из наиболее часто используемых команд в linux. Мне кажется, что его основная особенность - выделять искомую строку в выходных строках. это может быть достигнуто с помощью опции --color.

Ввод --color каждый раз раздражает, а также не продуктивно. Есть ли способ изменить grep, чтобы он вел себя как grep --color.

Я попытался написать небольшой скрипт с именем grepd и добавил его в переменную PATH. Но скрипт не работает на входе grepd. Любые предложения, пожалуйста.

#!/bin/bash
grep --color $1 $2

3 ответа3

19

Просто добавьте следующий псевдоним в файл конфигурации вашей оболочки, например .bashrc или .bash_profile (в зависимости от того, что вы используете, см. Здесь):

alias grep='grep --color=auto'

Вы можете просто использовать его как grep .

Обычно нет необходимости создавать сценарии, когда простые псевдонимы команд делают то же самое просто отлично. На самом деле ваш сценарий даже не сработает, если вы захотите передать больше опций в grep . Если вам нужен небольшой фрагмент кода, который может иметь дело с аргументами, вы должны использовать функции .

2
#!/bin/sh
exec grep --color "$@"

Это иллюстрирует стандартный способ "обертывания" команды сценарием оболочки, когда команда работает не совсем так, как вам нравится.

exec избегает создания дополнительного процесса (один для скрипта и один для grep). Вы можете оставить это, если хотите.

"$@" Заменяется всеми аргументами скрипта, независимо от их количества. Он правильно сохраняет аргументы с пробелами и другими символами, которые являются специальными для оболочки.

-1

попробуйте поместить export GREP_COLORS='AUTO' в ваш ~/.bashrc - для меня это работает.

от man grep

       --color[=WHEN], --colour[=WHEN]
          Surround  the  matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields and groups of context lines) with escape sequences
          to display them in color on the terminal.  The colors are defined by the environment variable GREP_COLORS.  The deprecated environment variable GREP_COLOR is still supported, but  its  setting
          does not have priority.  WHEN is never, always, or auto.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .