Параметр кольорового кольору за замовчуванням


11

grep - одна з найбільш часто використовуваних команд у Linux. Мені здається, що його основна особливість - виділити рядок, який ви шукали у вихідних рядках. цього можна досягти за допомогою опції --color.

Введення тексту - кольоровий колір кожного разу дратує, а також не є продуктивним. Чи є спосіб змінити grep, щоб він поводився як grep --color.

Я спробував написати невеликий сценарій під назвою grepd і додав це до моєї змінної PATH. Але сценарій не працює на grepd вводу . Будь-які пропозиції, будь ласка.

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

Відповіді:


21

Просто додайте наступний псевдонім у файл конфігурації вашої оболонки, наприклад, .bashrcабо .bash_profile(залежно від того, яким ви користуєтесь, див. Тут ):

alias grep='grep --color=auto'

Ви можете просто використовувати його як grep.

Зазвичай не потрібно робити сценарії, коли прості псевдоніми команд роблять те саме, що добре. Насправді ваш сценарій навіть не працював, якби ви хотіли передати більше варіантів grep. Якщо вам потрібен крихітний фрагмент, який може працювати з аргументами, ви повинні використовувати функції .


9
Або рівнозначно встановіть GREP_OPTIONSзмінну середовища:export GREP_OPTIONS='--color=always'
Jérôme

Це не додає параметр кольору, якщо ви використовуєте fgrep або egrep, вам знадобляться окремі псевдоніми для них. Також @ Jérôme: GREP_OPTIONS позначений як застарілий на сторінці grep man.
Thayne

@Thayne тільки для GNU grep, а не для інших, як FreeBSD grep. Наскільки я можу сказати, минуло 4 роки, як це було змінено, і це все ще підтримується. Амортизований не означає знято.
cde

Це те, що я зазвичай роблю, проте в деяких випадках це не працює. Наприклад: some_command | xargs grep fooне буде забарвлено, оскільки xargs не використовує псевдонім.
ТМ.

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

Це ілюструє стандартний спосіб "загортання" команди зі скриптом оболонки, коли команда працює не так, як вам подобається.

У execуникає створюючи додатковий процес (один для сценарію і один для Grep). Ви можете залишити його, якщо хочете.

The "$@"замінюється всіма аргументами сценарію, незалежно від того, скільки їх було. Він правильно зберігає аргументи з пробілами та іншими символами, які є спеціальними для оболонки.


"Exec grep" має бути "exec / bin / grep"
Berend de Boer,

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.

5
GREP_COLORS- це набір фактичних кольорів. Налаштування не AUTOповинно відображати жодних кольорів. export GREP_OPTIONS = '- color = auto' має відповісти.
користувач137369
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.