基本上,假设我有一个像grep
这样的命令,它输出带有类似-r
的标志的颜色编码结果。如果我将此命令包装在 shell 脚本中,则在运行脚本时,输出将不会具有相同的颜色编码效果。
有没有其他方法可以让 shell 脚本以相同的颜色编码(在终端上)吐出结果,而无需使用tput
或手动颜色编码?
要强制从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.
只需使用 Bash 函数,例如:
make()
{
pathpat="(/[^/]*)+:[0-9]+"
ccred=$(echo -e " 33[0;31m")
ccyellow=$(echo -e " 33[0;33m")
ccend=$(echo -e " 33[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 发表于 十一月 4, 2006 · 1 评论·上次更新时间:2006 年 11 月 4 日
在巴什壳
问。如何在 bash shell 中打开或关闭文件名颜色?
一个。大多数现代 Linux 发行版都带有别名,用于定义文件的颜色。但是,ls 命令负责在屏幕上显示文件、目录和其他对象的颜色。
默认情况下,颜色不用于区分文件类型。您需要将 --color 选项传递给 ls 命令。
任务:关闭颜色
键入以下命令
$ ls --color=none
或者只是使用取消别名命令删除别名:
$ unalias ls
任务:打开颜色
使用以下命令之一:
$ ls --color=auto
$ ls --color=tty
您可以在文件中添加或删除 ls 别名~/.bash_profile or ~/.bashrc
。
此命令适用于运行良好的 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