基本上,我说像grep
这样的命令输出带有-r
标志的颜色编码结果。如果我要在shell脚本中包装此命令,则在运行脚本时,输出将不具有相同的颜色编码效果。
是否有其他方法可以使shell脚本以相同的颜色编码吐出结果(在终端上),而无需使用tput
或手动颜色编码?
答案 0 :(得分:2)
强制从grep
输出颜色:
grep --color=always
来自man grep
:
--color[=WHEN], --colour[=WHEN]
Surround the matched (non-empty) strings,
matching lines, context lines, file names, line
numbers, byte offsets, and separators (for fields
and groups of context lines) with escape
sequences to display them in color on the
terminal. The colors are defined by the
environment variable GREP_COLORS. The deprecated
environment variable GREP_COLOR is still
supported, but its setting does not have
priority. WHEN is never, always, or auto.
答案 1 :(得分:1)
只需使用Bash功能,比如说这个:
make()
{
pathpat="(/[^/]*)+:[0-9]+"
ccred=$(echo -e "\033[0;31m")
ccyellow=$(echo -e "\033[0;33m")
ccend=$(echo -e "\033[0m")
/usr/bin/make "$@" 2>&1 | sed -E -e "/[Ee]rror[: ]/ s%$pathpat%$ccred&$ccend%g" -e "/[Ww]arning[: ]/ s%$pathpat%$ccyellow&$ccend%g"
return ${PIPESTATUS[0]}
}
如何打开或关闭bash中的颜色
由NIX CRAFT于2006年11月4日·1评论·2006年11月4日最新更新
在BASH SHELL
Q值。如何在bash shell中打开或关闭文件名颜色?
一个。大多数现代Linux发行版都带有定义文件颜色的别名。但是ls命令负责在屏幕上显示文件,目录和其他对象的颜色。
默认情况下,颜色不用于区分文件类型。您需要将--color选项传递给ls命令。
任务:关闭颜色
输入以下命令
$ ls --color=none
或者只使用unalias命令删除别名:
$ unalias ls
任务:打开颜色
使用以下任何命令:
$ ls --color=auto
$ ls --color=tty
您可以在~/.bash_profile or ~/.bashrc
文件中添加或删除ls别名。
这个适用于bash的命令运行良好
handy tput commands
tput bold - Bold effect
tput rev - Display inverse colors
tput sgr0 - Reset everything
tput setaf {CODE}- Set foreground color, see color {CODE} below
tput setab {CODE}- Set background color, see color {CODE} below
Colors {code} code for tput command
Color {code} Color
0 Black
1 Red
2 Green
3 Yellow
4 Blue
5 Magenta
6 Cyan
7 White