【问题标题】:grep loses coloring when run from bash script从 bash 脚本运行时,grep 会失去颜色
【发布时间】:2012-03-21 23:52:01
【问题描述】:

我编写了一个简单的 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

【问题讨论】:

    标签: bash colors grep


    【解决方案1】:

    您可能已经在您的.bashrc 中将grep 定义为grep --color=auto 的别名,但这不是由脚本加载的。在您的脚本中使用明确的grep --color

    【讨论】:

      【解决方案2】:

      当您运行脚本时,会生成一个新的外壳来执行此操作。这个新环境与您的默认 shell 没有相同的设置。至于如何恢复颜色,我不确定。您可以尝试在脚本开头获取您的个人资料:

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

      或任何对您的特定 unix 风格有意义的文件(.profile、.bash_rc、.bashrc .bash_profile)等等。

      【讨论】:

      • 我用 'source $HOME/.bashrc' 和 'source $HOME/.profile' 试过这个,但它对我不起作用。我真的希望这将是解决方案,这样我就不必在未来的脚本中明确声明“--color”或任何其他不可预见的参数。
      • 可以将选项导出到脚本的环境中:export GREP_OPTIONS='--color=always'
      • 它帮助我找到了另一个解决方案,在脚本的开头添加 -i : #!/bin/bash -i 它加载了默认的 shell 设置
      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 2022-06-15
      • 2013-04-05
      • 2023-03-30
      • 2016-10-20
      • 2017-11-04
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多