golang下在终端显示字体颜色及闪烁、下划线效果的小工具

在终端下打印不同颜色的字体,具体说明见:http://blog.csdn.net/gxut555/article/details/7913591

自己用golang实现一个,除了在MAC下显示不出效果来,其他端上还算正常了,效果所示:

代码如下(见:https://github.com/liuyongshuai/tofuutils/blob/master/cli_color.go):

/*
 * @author      Liu Yongshuai<[email protected]>
 * @package     tofuutils
 * @date        2018-01-25 19:19
 */
package tofuutils

import (
	"fmt"
	"strings"
)

//绿色字体,modifier里,第一个控制闪烁,第二个控制下划线
func Green(str string, modifier ...interface{}) string {
	return cliColorRender(str, 32, 0, modifier...)
}

//淡绿
func LightGreen(str string, modifier ...interface{}) string {
	return cliColorRender(str, 32, 1, modifier...)
}

//青色/蓝绿色
func Cyan(str string, modifier ...interface{}) string {
	return cliColorRender(str, 36, 0, modifier...)
}

//淡青色
func LightCyan(str string, modifier ...interface{}) string {
	return cliColorRender(str, 36, 1, modifier...)
}

//红字体
func Red(str string, modifier ...interface{}) string {
	return cliColorRender(str, 31, 0, modifier...)
}

//淡红色
func LightRed(str string, modifier ...interface{}) string {
	return cliColorRender(str, 31, 1, modifier...)
}

//黄色字体
func Yellow(str string, modifier ...interface{}) string {
	return cliColorRender(str, 33, 0, modifier...)
}

//黑色
func Black(str string, modifier ...interface{}) string {
	return cliColorRender(str, 30, 0, modifier...)
}

//深灰色
func DarkGray(str string, modifier ...interface{}) string {
	return cliColorRender(str, 30, 1, modifier...)
}

//浅灰色
func LightGray(str string, modifier ...interface{}) string {
	return cliColorRender(str, 37, 0, modifier...)
}

//白色
func White(str string, modifier ...interface{}) string {
	return cliColorRender(str, 37, 1, modifier...)
}

//蓝色
func Blue(str string, modifier ...interface{}) string {
	return cliColorRender(str, 34, 0, modifier...)
}

//淡蓝
func LightBlue(str string, modifier ...interface{}) string {
	return cliColorRender(str, 34, 1, modifier...)
}

//紫色
func Purple(str string, modifier ...interface{}) string {
	return cliColorRender(str, 35, 0, modifier...)
}

//淡紫色
func LightPurple(str string, modifier ...interface{}) string {
	return cliColorRender(str, 35, 1, modifier...)
}

//棕色
func Brown(str string, modifier ...interface{}) string {
	return cliColorRender(str, 33, 0, modifier...)
}

func cliColorRender(str string, color int, weight int, extraArgs ...interface{}) string {
	//闪烁效果
	isBlink := 0
	if len(extraArgs) > 0 {
		isBlink, _ = MakeItemElem(extraArgs[0]).ToInt()
	}
	//下划线效果
	isUnderLine := 0
	if len(extraArgs) > 1 {
		isUnderLine, _ = MakeItemElem(extraArgs[1]).ToInt()
	}
	var mo []string
	if isBlink > 0 {
		mo = append(mo, "05")
	}
	if isUnderLine > 0 {
		mo = append(mo, "04")
	}
	if weight > 0 {
		mo = append(mo, fmt.Sprintf("%d", weight))
	}
	if len(mo) <= 0 {
		mo = append(mo, "0")
	}
	return fmt.Sprintf("\033[%s;%dm"+str+"\033[0m", strings.Join(mo, ";"), color)
}

测试效果:

package tofuutils

import (
	"testing"
	"fmt"
)

func TestCliColor(t *testing.T) {
	fmt.Println(Green("闪烁字体:Green", 1, 1))
	fmt.Println(LightGreen("闪烁字体:LightGreen", 1))
	fmt.Println(Cyan("闪烁字体:Cyan", 1))
	fmt.Println(LightCyan("闪烁字体:LightCyan", 1))
	fmt.Println(Red("闪烁字体:Red", 1))
	fmt.Println(LightRed("闪烁字体:LightRed", 1))
	fmt.Println(Yellow("闪烁字体:Yellow", 1))
	fmt.Println(Black("闪烁字体:Black", 1))
	fmt.Println(DarkGray("闪烁字体:DarkGray", 1))
	fmt.Println(LightGray("闪烁字体:LightGray", 1))
	fmt.Println(White("闪烁字体:White", 1))
	fmt.Println(Blue("闪烁字体:Blue", 1))
	fmt.Println(LightBlue("闪烁字体:LightBlue", 1))
	fmt.Println(Purple("闪烁字体:Purple", 1))
	fmt.Println(LightPurple("闪烁字体:LightPurple", 1))
	fmt.Println(Brown("闪烁字体:Brown", 1))
	fmt.Println(Green("字体:Green"))
	fmt.Println(LightGreen("字体:LightGreen"))
	fmt.Println(Cyan("字体:Cyan"))
	fmt.Println(LightCyan("字体:LightCyan"))
	fmt.Println(Red("字体:Red"))
	fmt.Println(LightRed("字体:LightRed"))
	fmt.Println(Yellow("字体:Yellow"))
	fmt.Println(Black("字体:Black"))
	fmt.Println(DarkGray("字体:DarkGray"))
	fmt.Println(LightGray("字体:LightGray"))
	fmt.Println(White("字体:White"))
	fmt.Println(Blue("字体:Blue"))
	fmt.Println(LightBlue("字体:LightBlue"))
	fmt.Println(Purple("字体:Purple"))
	fmt.Println(LightPurple("字体:LightPurple"))
	fmt.Println(Brown("字体:Brown"))
	fmt.Println(Blue("字体:Blue", 1, 1))
}

原文地址:https://www.cnblogs.com/askpad/p/8361492.html

时间: 2024-08-28 19:25:33

golang下在终端显示字体颜色及闪烁、下划线效果的小工具的相关文章

Ubuntu终端中字体颜色配置

默认: 蓝色代表目录: 绿色代表可执行文件: 红色表示压缩文件: 浅蓝色表示链接文件: 灰色表示其他文件: 红色闪烁表示链接的文件有问题了 黄色表示设备文件. 很不爽怎么办,改! 其实呢,使用dircolor命令就可以显示文件名颜色设置了(dircolor -p)(它还可以设置). 关于如何修改,同样找到下面一篇文章: 1. 利用dircolors命令,查看我们的系统当前的文件名称显示颜色的值,然后利用管道重定向到用户目录下的任意一个文件(这里我们创建了一个.dir_colors文件) 命令1:

shell脚本显示字体颜色

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e  格式如下:  echo -e "\033[字背景颜色:文字颜色m字符串\033[0m"  例如:  echo -e "\033[41;36m something here \033[0m"  其中41的位置代表底色, 36的位置是代表字的颜色 注:  1.字背景颜色和文字颜色之间是英文的""  2.文字颜色后面有个m  3.字符串前后可以没有空格,如果有的话,输出

ubuntu下如何配置codeblocks字体颜色主题

1.在ubuntu的home中ctrl+h显示隐藏文件夹,找到一个.codeblocks的文件夹,然后那个文件夹中有一个default.conf的文件,选择打开方式gedit.然后将下面的代码复制进去,在复制进去之前,最好将你自己的配置文件备份好. 配置代码: <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <CodeBlocksConfig version=&q

raid及mdadm命令之一(含shell显示字体颜色等)

写一个脚本: 1)显示一个菜单给用户: d|D)    show disk usages. m|M)    show memory  usages. s|S)    show swap usages. quit|q)    quit. 2)当用户给定选项后显示相应的内容 当用户选择完成,显示相应信息后,不退出,而是让用户再一次选择,直到选择quit或q #!/bin/bash while  [ 1 -eq 1 ]  ; do echo " " read -p "d|D)  

Python 终端输出字体颜色

终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. 转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033). 格式 :\033[显示方式;前景色;背景色m + 你想要变色的字体:\033[0m 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个:另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别:但是,建议按照默认的格式规范

关于ie8下disabled属性:字体颜色问题

在ie8下,input/textarea输入框如果使用disabled属性,字体的颜色会变灰,这时我们可以使用另一种方法实现它. 不使用disabled,用readonly代替: input[readonly],textarea[readonly]{ background:#CCC;       //颜色按实际需求调整 color:#000; //颜色按实际需求调整} 但是效果却不尽人意,readonly在ie8底下会有光标,如何解决呢?只需 写如下js: $('input[readonly],

【小技巧】更改终端的字体颜色和背景

进入terminal模式后单击右键选择配置文件,配置文件首选项 然后进行配置工作,不过要注意,更改字体后可能会使英文字母的显示出问题字母重叠,所以字体设置建议还是不要更改为好.

winform控件在Enable=false的情况下改变它的字体颜色

[System.Runtime.InteropServices.DllImport("user32.dll ")]         public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int wndproc);         [System.Runtime.InteropServices.DllImport("user32.dll ")]         public static ext

linux终端c语言改变输出字体颜色

Linux下C改变输出字体颜色 例: #include int main() { printf("\033[31mThis is RED.\n\033[0m"); return 0; } 31m代表字体为红色,0m代表关闭所有属性. 常用的ANSI控制码如下(有些不支持): \033[0m 关闭所有属性 \033[1m 高亮 \033[2m 亮度减半 \033[3m 斜体 \033[4m 下划线 \033[5m 闪烁 \033[6m 快闪 \033[7m 反显 \033[8m 消隐 \