Grep опция цвета по умолчанию

11

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

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

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

#!/bin/bash
grep --color $1 $2
Сружан Кумар Гулла
источник

Ответы:

21

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

alias grep='grep --color=auto'

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

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

slhck
источник
9
Или, что то же самое, установите GREP_OPTIONSпеременную среды:export GREP_OPTIONS='--color=always'
Jérôme
Это не добавляет опции цвета, если вы используете fgrep или egrep, вам понадобятся отдельные псевдонимы для них. Кроме того, @ Jérôme: GREP_OPTIONS помечается как устаревшее на странице руководства grep.
Тейн
@ Thayne только для GNU grep, а не для таких, как FreeBSD grep. И, насколько я могу судить, прошло 4 года с тех пор, как это изменилось, и это все еще поддерживается. Амортизация не означает удаление.
августа
Это то, что я обычно делаю, но в некоторых случаях это работает неправильно. Например: some_command | xargs grep fooне будет окрашен, потому что xargs не использует псевдоним.
ТМ.
2
#!/bin/sh
exec grep --color "$@"

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

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

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

Kenster
источник
"Exec grep" должно быть "exec / bin / grep"
Беренд де Бур
2
@BerenddeBoer Не совсем. "exec grep" будет работать нормально. Нет ничего плохого в поиске пути для 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.
Mroz
источник
5
GREP_COLORSэто набор реальных цветов. Установка AUTOне должна показывать какие-либо цвета. export GREP_OPTIONS = '- color = auto' должен быть ответом.
user137369