Подтвердить что ты не робот

Grep теряет окраску при работе от bash script

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

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

Здесь мой bash script

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

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

Ответ 1

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

Ответ 2

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

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

или какой-либо файл имеет смысл в вашем конкретном вкусе unix (.profile,.bash_rc,.bashrc.bash_profile), чтобы назвать несколько.