Ответ 1
Вероятно, вы определили grep
как псевдоним для grep --color=auto
в .bashrc
, но не загруженный скриптами. Используйте явный grep --color
в 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
Вероятно, вы определили grep
как псевдоним для grep --color=auto
в .bashrc
, но не загруженный скриптами. Используйте явный grep --color
в script.
При запуске script для этого создается новая оболочка. Эта новая среда не имеет таких же настроек, как ваша оболочка по умолчанию. Что касается того, как получить окраску назад, я не уверен. Вы можете попробовать найти свой профиль в начале script:
#!/bin/bash
source $HOME/.bash_profile
или какой-либо файл имеет смысл в вашем конкретном вкусе unix (.profile,.bash_rc,.bashrc.bash_profile), чтобы назвать несколько.