现在我的.zshrc文件中的一些代码如下所示:
inetFunction(){
echo ${LRED}IP Address:${NC}
ifconfig en0 | grep "inet " | awk '{print $2}'
}
$ LRED定义为将颜色更改为浅红色,$ NC将其设置恢复正常。我使用代码alias inet='inetFunction'
实现inetFunction。命令的输出是
IP Address:
xx.x.xx.xxx
其中" IP地址:"是红色的。我想把IP地址变成绿色,但出于某种原因,当我尝试其中任何一个时,它都不起作用:
${GREEN}ifconfig en0 | grep "inet " | awk '{print $2}'
ifconfig en0 | grep "inet " | ${GREEN}awk '{print $2}'
${GREEN}ifconfig en0 | grep "inet " | awk '{${GREEN} print $2}'
我甚至尝试将整个事情设置为变量,如:
variable='ifconfig en0 | grep "inet " | awk '{print $2}''
然后尝试echo ${GREEN} $variable
,但它仍然无效。
有什么想法吗?
答案 0 :(得分:2)
[esp + 2]
需要得到回应。它是一组ANSI颜色代码,终端将其识别为更改文本颜色的信号。
$GREEN
或者,浓缩:
echo -n "$GREEN"
ifconfig en0 | grep "inet " | awk '{print $2}'
echo -n "$NC"
另外,正如@Jens指出的那样你可以像下面这样组合grep和awk命令:
echo "$GREEN$(ifconfig en0 | grep "inet " | awk '{print $2}')$NC"
答案 1 :(得分:0)
正如John Kugelman's answer ${GREEN}
中所述,需要打印才能生效。
当你正在运行awk
时,你可以让它完成工作:
ifconfig en0 | awk '/inet / {print "'${GREEN}'" $2 "'${NC}'"}'
ifconfig eno1 | awk "/inet / {print \"${GREEN}\" \$2 \"${NC}\"}"
这样可以更好地控制要着色的内容,尤其是对于更复杂的awk
程序。
$2
,以便awk
可以识别它。不得在shell中引用${GREEN}
和${NC}
,以便shell可以替换它们。但由于它们现在只是awk
的字符串,因此它们必须位于awk
的双引号内;这些双引号也需要从shell中引用。
要简单地说明这一点,您可以使用awk
参数在命令行上传递-v variable=value
的设置变量:
ifconfig en0 | awk -v green="$GREEN" -v nc="$NC" '/inet / {print green $2 nc}'