grep теряет цветовую раскраску при запуске из bash-скрипта
Я написал простой bash-скрипт, поскольку часто использовал команду grep с одними и теми же аргументами. Скрипт находится в папке ~/bin и работает нормально.
Моя проблема: При выполнении скрипта все цветовое оформление пропадает. Точно такая же команда, введенная непосредственно в командной строке, корректно окрашивает номера строк, имена файлов и т.д.
Вот мой bash-скрипт:
#!/bin/bash
# ищем файлы php внутри myfolder, рекурсивно и с номерами строк
grep -rn --include="*.php" "$2" /home/me/myfolder/$1
Как я могу вернуть цветовое оформление при работе через мой скрипт?
2 ответ(ов)
Вы, вероятно, определили grep
как алиас для grep --color=auto
в вашем .bashrc
, но этот файл не загружается в скриптах. Используйте явный grep --color
в вашем скрипте.
Когда вы запускаете скрипт, создается новая оболочка для его выполнения. Эта новая среда не имеет тех же настроек, что и ваша стандартная оболочка. Что касается восстановления цветового оформления, я не уверен. Вы можете попробовать подключить ваш профиль в начале скрипта:
#!/bin/bash
source $HOME/.bash_profile
или использовать тот файл, который имеет смысл для вашей конкретной версии Unix (например, .profile, .bash_rc, .bashrc, .bash_profile и т.д.).
Окрашенный grep — просмотр всего файла с подсвеченными совпадениями
Как перенаправить stderr, а не stdout?
Как использовать 'grep' для непрерывного потока?
Как добавить строку текста в середину файла с помощью bash?
Как разделить большой текстовый файл на меньшие файлы с равным количеством строк?