Loading... <img class=" lazyloaded" title="1480778604388658.jpg" src="https://www.zsythink.net/wp-content/uploads/ueditor/php/upload/image/20161203/1480778604388658.jpg" alt="echo.jpg" data-src="/wp-content/uploads/ueditor/php/upload/image/20161203/1480778604388658.jpg" style=""> 在上一篇总结echo命令的文章中,我们描述了echo命令的常用选项,可以点击如下链接查看。 <a href="https://www.zsythink.net/archives/96" target="_blank" rel="noopener">https://www.zsythink.net/archives/96</a> 这篇文章中,我们继续聊聊echo命令 使用echo命令的-e选项,除了能够输出转义字符,还能够在命令行中输出彩色的字符,或者带有彩色背景的字符。 我们对比着示例,再给大家详细的解释,示例效果如下。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo1.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo1.png" style=""> 可以看到,上例中输出了红色的大写的”TEST”,这就是我们所说的,使用echo -e 输出彩色字符的效果。 echo -e我们就不解释了,不管是输出转义字符还是输出彩色字符,都需要使用-e选项。 我们来解释一下下图中红线标注的字符串是什么意思。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo2.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo2.png" style=""> 为了方便解释,我们尽量的缩小范围,如下图,我们排除”TEST”字符串,因为这就是我们要输出的内容,没有什么好解释的,排除输出内容后,结构如下 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo3.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo3.png" style=""> 从上图可以看出,如果要想输出红色字符,至少需要两部分,\033[31m 和 \033[0m ,这些代码有一个专业名词,叫做”ANSI控制码”,但是为了方便理解,我们先用通俗的语言解释它们,用不专业的思维去理解它们。 我们可以把\033[31m 理解成”开始输出红色字符”,把 \033[0m理解成”结束输出红色字符”。 当echo -e遇到\033[31m的时候,就认为自己要输出红色字符了,\033[31m就是一个信号,它告诉echo -e,需要开始输出红色字符了, \033[0m也是一种信号,它告诉echo 命令,红色字符已经不能输出了,再输出的字符应该是黑白字符了,不能是彩色的了。 那么,如果我们想要输出绿色字符,该怎么写呢,示例如下 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo4.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo4.png" style=""> 细心的你一定已经发现,输出红色TEST字符与输出绿色TEST字符的唯一区别就是下图标注的位置。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo5.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo5.png" style=""> 也就是说,我们只要改变对应位置的数字,就能改变输出字符的颜色,所以,我们将能够输出的颜色对应的数字总结如下: 30:黑色 31:红色 32:绿色 33:黄色 34:蓝色 35:紫色 36:浅蓝色 37:灰色 所以,对应上述颜色号码,输出效果如下: <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo6.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo6.png" style=""> 除了能够使用echo命令输出彩色字符,我们还能够为彩色字符添加彩色背景,比如,我们想要输出具有黄色背景的红色字符,可以使用如下方法 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo7.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo7.png" style=""> 那么我们对比一下,输出红色字符的echo命令,与输出黄色背景的红色字符的echo命令,具体有什么不同。 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo8.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo8.png" style=""> 可以看到,唯一不同的地方就是带有黄色背景的命令中,多出了”43;” ,其他部分的命令都一样。 聪明如你一定想到了,”43;”代表黄色背景,那么别的背景颜色一定会有其对应的数字编号,没有错,此处列出背景色编号: 40:黑色 41:红色 42:绿色 43:黄色 44:蓝色 45:紫色 46:浅蓝色 47:灰色 我们可以同时设定字符的颜色与背景的颜色,怎样搭配随你喜欢。 比如,红配绿,赛狗pi <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo9.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo9.png" style=""> 比如,红配蓝,sao不完 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo10.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo10.png" style=""> 比如···各种搭配,全凭老板您喜欢。 我们在之前已经说过, “\033[31m” “\033[m”这些代码都属于 ansi 控制码。 ansi控制码中不仅有控制颜色的控制码,还有一些提供其他功能的控制码,我们来总结一下。 常用ANSI控制码总结如下: \033[0m 关闭所有属性 ,也就是说此控制码前面的控制码将会失效,此控制码中的0可以省略。 \033[1m 设置高亮度 \033[4m 下划线 \033[5m 闪烁 \033[7m 反显 ,撞色显示,显示为白底黑字,或者显示为黑底白字 \033[8m 消隐 ,字符颜色将会与背景颜色相同 \033[30m — \33[37m 设置字符颜色 \033[40m — \33[47m 设置背景色 \033[K 清除从光标到行尾的内容 上述ANSI控制码中,有的不能在bash命令行中运行,我们可以掩饰几个可用的,常用的ANSI控制码,示例如下图: <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo11.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo11.png" style=""> 上图中,我们利用echo命令,使用-e选项,结合着ANSI控制码,输出了带有下划线的字符以及撞色显示的字符。 除了echo命令,我们也可以在别的地方使用ansi控制符,比如改变命令提示符的颜色 <img class=" lazyloaded" src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo12.png" alt="" data-src="https://www.zsythink.net/wp-content/uploads/2016/12/120316_1219_echo12.png" style=""> 但是这不属于echo命令的使用,我们就不详细总结了。 转载自朱双印日志https://www.zsythink.net/archives/111 Last modification:May 29, 2024 © Allow specification reprint Like 如果觉得我的文章对你有用,请随意赞赏