Я видел в некоторых Linux, который grep
настроен для выделения соответствия и печати соответствующего файла.
Как я могу настроить, grep
чтобы выделить совпадения?
alias cgrep='grep -nR --color'
Использование:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
Также один из моих любимых:
$ pgrep some-hanging-process
перечислит все pids процессов, которые соответствуют имени некоторого зависшего процесса, который вы можете использовать в следующей ситуации:
$ kill $(pgrep some-hanging-process)
grep
,grep -r
как правило , следует отдавать предпочтение перед тем,grep -R
как первый не пересекает символические ссылки.Я обнаружил, что лучший способ для pimp grep - это использовать ack , который по сути является рекурсивным grep с интеллектуальным списком игнорирования (например, не выполняет поиск в каталогах .svn, игнорирует файлы резервных копий и т. Д.), Выделяет цветом результаты и Perl регулярные выражения Это то, что вы хотите, чтобы grep делал 98,6% времени.
источник
Я установил это в моем .bashrc вместо переопределения grep с использованием псевдонима:
Для меня это работает на Linux, MacOSX и FreeBSD.
источник
GREP_OPTIONS
следует считать вредным. Я рекомендую использоватьalias
вместо этого. Смотрите здесь: bugs.launchpad.net/ubuntu/+bug/67141Я бы порекомендовал избегать переменной среды GREP_OPTIONS, это повлияет на каждый вызов grep, даже если он встроен в другие инструменты. Если эти инструменты ожидают, что grep будет вести себя одинаково, и вы измените это поведение, оно сломает эти инструменты.
Вместо этого вы можете создать псевдоним, который хорошо работает. Это повлияет только на вызовы grep из вашей интерактивной оболочки (то есть, которые вы набираете сами).
Последний вариант, который мне нравится больше всего, - это создание сценария-обёртки, который вызывает grep. Я предпочитаю это псевдониму, потому что я могу вызвать эту оболочку из других программ. Например, в vim, установив vimgrep, чтобы мои поиски внутри vim вели себя так же, как и при поиске в командной строке.
Вызвать это, используя:
например
будет искать экземпляры 'pattern' во всех текстовых файлах в текущем каталоге и подкаталогах.
Обратите внимание, что я называю свой сценарий «grp», а не затенение «grep», так что я всегда знаю, вызываю ли я grep с моими настроенными значениями по умолчанию или нет.
По умолчанию я включаю:
Я думаю, что все захотят пропустить каталог управления версиями: .hg .git .bzr .svn
Пропуск 'build' и 'dist' - это Python-измы, и, вероятно, они не применимы к большинству людей. Без сомнения, вы будете развивать свои собственные особенности во время работы.
'tags' - это вывод ctags, который я использую для перехода к определению функции и т.п. в таких инструментах, как vim. Таким образом, он содержит как минимум одну копию каждого слова и символа из моего исходного кода, поэтому его стоит пропустить из результатов поиска.
«$ *» в конце - это синтаксис bash для «и всех других параметров из командной строки», так что вы можете передать шаблон и dir для поиска в обычном режиме и переопределить любые другие флаги командной строки, которые вы хотите ,
источник
Эта
--color
опция уже упоминалась несколько раз, но я хотел бы добавить, что можно настроить цвет, в котором совпадения будут выделяться с помощью переменной средыЦвет должен быть закодирован с использованием цветовых кодов ANSI, для справки
источник
GREP_COLOR
не рекомендуется. ИспользуйтеGREP_COLORS
вместо этого.Поскольку я не видел примеров фактической установки цветов, вот простая настройка GNU grep:
Будьте осторожны
GREP_OPTIONS
; не используйте его ни для чего, кроме подобных вещей,--color=auto
иначе он испортит любые скрипты, использующие grep в вашей системе.источник