0

grep теряет цветовую раскраску при запуске из bash-скрипта

11

Я написал простой bash-скрипт, поскольку часто использовал команду grep с одними и теми же аргументами. Скрипт находится в папке ~/bin и работает нормально.

Моя проблема: При выполнении скрипта все цветовое оформление пропадает. Точно такая же команда, введенная непосредственно в командной строке, корректно окрашивает номера строк, имена файлов и т.д.

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

#!/bin/bash
# ищем файлы php внутри myfolder, рекурсивно и с номерами строк

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

Как я могу вернуть цветовое оформление при работе через мой скрипт?

2 ответ(ов)

0

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

0

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

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

или использовать тот файл, который имеет смысл для вашей конкретной версии Unix (например, .profile, .bash_rc, .bashrc, .bash_profile и т.д.).

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь