grep теряет окраску при запуске из bash-скрипта - PullRequest
32 голосов
/ 04 марта 2012

Я написал простой сценарий bash, потому что неоднократно использовал команду grep с одинаковыми аргументами. Я запускаю его из ~ / bin, и он работает нормально.

Моя проблема : все окраски исчезли, когда они выполнялись через мой bash-скрипт. Точно такая же команда, помещаемая прямо в командную строку, красиво кодирует номера строк, имена файлов и т. Д.

Вот мой скрипт bash

#!/bin/bash
# grep php files inside of myfolder, recursively and with line numbers

grep -rn --include="*.php" "$2" /home/me/myfolder/$1

Ответы [ 2 ]

55 голосов
/ 04 марта 2012

Возможно, вы определили grep как псевдоним для grep --color=auto в вашем .bashrc, но он не загружается скриптами.Используйте явный grep --color в вашем скрипте.

1 голос
/ 04 марта 2012

Когда вы запускаете скрипт, для этого создается новая оболочка.Эта новая среда не имеет такие же настройки, как ваша оболочка по умолчанию.Что касается того, как вернуть окраску, я не уверен.Вы можете попробовать поискать свой профиль в начале скрипта:

#!/bin/bash
source $HOME/.bash_profile

или любой другой файл, который имеет смысл в вашем конкретном варианте Unix (.profile, .bash_rc, .bashrc .bash_profile), чтобы назвать несколько.1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...