通过脚本调用 grep 时缺少颜色

Are*_*ski 5 command-line bash scripts grep

这是一个简单的 grep 包装器,用于搜索 Git 存储库。出于某种原因,当通过 bash 脚本调用 grep 时,颜色消失了。我如何解决它?

在此处输入图片说明

我正在使用这个命令

grep $1 . -R --exclude-dir=.git --line-number
Run Code Online (Sandbox Code Playgroud)

Zan*_*nna 11

当您grep在终端中运行时,由于您的默认别名,它会显示颜色~/.bashrc

alias grep='grep --color=auto'
Run Code Online (Sandbox Code Playgroud)

~/.bashrc仅由交互式 shell 提供。当您运行脚本时,它会在非交互式 shell 中运行,因此别名不可用。

要保留颜色,请将--color=auto标志添加到grep脚本内的命令中:

grep $1 . -R --exclude-dir=.git --line-number --color=auto
Run Code Online (Sandbox Code Playgroud)

  • 另请注意,使用`--color=auto`,如果重定向输出,颜色将会丢失(一件好事)。 (4认同)
  • @BharadwajRaju 除非您将其通过管道传输到诸如“less”之类的内容,在这种情况下,您必须指定“--color=always”*并且*使用“less -R”在“less”中显示彩色输出。 (3认同)