2019独角兽企业重金招聘Python工程师标准>>>
前言
3个星期的周末了解LINUX下、WINDOWS下的ANSI颜色转义控制,LINUX下根据网上的搜索结果一下就成功了,但WINDOWS的CMD(dos)窗口中始终都没有成功,一直不甘心,今天再来试试,终于成功。关键点在于ESC的输入问题在以前看过的文章中都没有提及。
发现根本不需要加载ANSI.SYS驱动,WINDOWS应该是默认就加载了。
先看一下最终效果:
命令
注意以下命令中^[这2个字符是表示ASCII的一个字符27(即ESC), 其输入方法要用特殊的方式(见后述),所以下面的命令复制、粘贴后执行是看不到效果的。
还要注意的是^[后面还有一个正常的[。
C:\>cmd /cecho ^[[1;31m111],^[[32m222^[[33;44m333^[[34m4444^[[35m555^[[0m
C:\>cmd /cecho ^[[1;31m dfsaafds],^[[32mNO222222222^[[33;34m55555^[[34m4444^[[0m
C:\>cmd /cecho ^[[1;35m dfsaafds],^[[33madsfsk^[[42;35m55555^[[0m
C:\>cmd /cecho ^[[1;35m dfsaafds],^[[33madsfsk^[[48;35m55555
不要前面的cmd /c也是可以的
echo ^[[31m111;^[[32m222;^[[33m333^[[41;34m444;^[[42;35m555^[[43;36m666^[[0m
ESC(^[) 0x1B, \033字符的输入方法
^[是ANSI的ESC一个字符,并不是我们看到的键盘上左上角那个'ESC'按键。其ASCII码值10进制是27, 八进制是33(一般写为\033),16进制1b(一般写为\x1b)。 ,其输入方法有以下几种:
ESC字符输入方法一:
在cmd窗口中先按住ALT键,然后按一下小键盘(有些笔记本没有这个键盘)上的数字键2,7,然后放开ALT按键(一定要放开,否则不会显示)。
ESC字符输入方法二:
在cmd窗口中先按住CTRL键,再按[键
ESC字符输入方法三,NPP(NotePad++):
使用查找、替换法
替换后:
color命令
补充一个color命令,这是改变CMD窗口的整个背景及前景,和ECHO的颜色控制不是一个范畴的。
color帮助信息
C:\Windows\system32>color /?
设置默认的控制台前景和背景颜色。
COLOR [attr]
attr 指定控制台输出的颜色属性。
颜色属性由两个十六进制数字指定 -- 第一个
对应于背景,第二个对应于前景。每个数字
可以为以下任何值:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
如果没有给定任何参数,此命令会将颜色还原到 CMD.EXE 启动时
的颜色。这个值来自当前控制台
color命令的几个效果
运行环境
1、Windows 2016
2、Windows10
参考
-
批处理CMD显示彩色文字 https://blog.csdn.net/zhoujiaxq/article/details/22785803
- ANSI颜色使用研究https://blog.csdn.net/jennyvenus/article/details/18168
附LINUX下的echo彩色字符显示
ESC使用\033
支持ASNI颜色转义控制的终端软件
PuTTY
最简洁、最有名的吧 ,现在发现的缺点2个:一、是不能暂停滚屏,二、查找、高亮
AT(AbsoluteTelnet)
没有上述PuTYY的两个缺点 ,
但有一个问题:退格键输入回显不删除字符
MobaXterm
https://mobaxterm.mobatek.net/download-home-edition.html
没有putty和AT的缺点,但感觉界面太复杂
LOG到文件功能
log到文件三者都有,但感觉AT每次要手支启动不是很方便, PuTYY,MobaXterm 只需设置一次
LUA控制台打印
--lua cmd-ansi-color
print("lua v".._VERSION);
io.write("ANSY color control\n");
local cmdhead = "echo ";
if 1 then
for i=0, 7 do
for j=0, 7 do
local parm = string.format("\x1b[4%d;3%dm --3%d/4%d--\x1b[0m", i, j, i, j)
local cmd = cmdhead .. parm
io.write(string.format("%s :", string.gsub( cmd,"\x1b","ESC" )));
os.execute(cmd)
end
end
end
for i=0, 7 do
for j=0, 7 do
local parm = string.format("\x1b[4%d;3%dm --samshou3%d/4%d--\x1b[0m", i, j, i, j)
local cmd = cmdhead .. parm
--io.write(string.format("%s :", string.gsub( cmd,"\x1b","ESC" )));
io.write(parm);
end
io.write("\n");
end
==结果==
>lua cmd-ansi-color.lua
Lua 5.3
ANSY color control
echo ESC[40;30m --40/30--ESC[0m : --40/30--
echo ESC[40;31m --40/31--ESC[0m : --40/31--
echo ESC[40;32m --40/32--ESC[0m : --40/32--
echo ESC[40;33m --40/33--ESC[0m : --40/33--
echo ESC[40;34m --40/34--ESC[0m : --40/34--
echo ESC[40;35m --40/35--ESC[0m : --40/35--
echo ESC[40;36m --40/36--ESC[0m : --40/36--
echo ESC[40;37m --40/37--ESC[0m : --40/37--
echo ESC[41;30m --41/30--ESC[0m : --41/30--
echo ESC[41;31m --41/31--ESC[0m : --41/31--
echo ESC[41;32m --41/32--ESC[0m : --41/32--
echo ESC[41;33m --41/33--ESC[0m : --41/33--
echo ESC[41;34m --41/34--ESC[0m : --41/34--
echo ESC[41;35m --41/35--ESC[0m : --41/35--
echo ESC[41;36m --41/36--ESC[0m : --41/36--
echo ESC[41;37m --41/37--ESC[0m : --41/37--
echo ESC[42;30m --42/30--ESC[0m : --42/30--
echo ESC[42;31m --42/31--ESC[0m : --42/31--
echo ESC[42;32m --42/32--ESC[0m : --42/32--
echo ESC[42;33m --42/33--ESC[0m : --42/33--
echo ESC[42;34m --42/34--ESC[0m : --42/34--
echo ESC[42;35m --42/35--ESC[0m : --42/35--
echo ESC[42;36m --42/36--ESC[0m : --42/36--
echo ESC[42;37m --42/37--ESC[0m : --42/37--
echo ESC[43;30m --43/30--ESC[0m : --43/30--
echo ESC[43;31m --43/31--ESC[0m : --43/31--
echo ESC[43;32m --43/32--ESC[0m : --43/32--
echo ESC[43;33m --43/33--ESC[0m : --43/33--
echo ESC[43;34m --43/34--ESC[0m : --43/34--
echo ESC[43;35m --43/35--ESC[0m : --43/35--
echo ESC[43;36m --43/36--ESC[0m : --43/36--
echo ESC[43;37m --43/37--ESC[0m : --43/37--
echo ESC[44;30m --44/30--ESC[0m : --44/30--
echo ESC[44;31m --44/31--ESC[0m : --44/31--
echo ESC[44;32m --44/32--ESC[0m : --44/32--
echo ESC[44;33m --44/33--ESC[0m : --44/33--
echo ESC[44;34m --44/34--ESC[0m : --44/34--
echo ESC[44;35m --44/35--ESC[0m : --44/35--
echo ESC[44;36m --44/36--ESC[0m : --44/36--
echo ESC[44;37m --44/37--ESC[0m : --44/37--
echo ESC[45;30m --45/30--ESC[0m : --45/30--
echo ESC[45;31m --45/31--ESC[0m : --45/31--
echo ESC[45;32m --45/32--ESC[0m : --45/32--
echo ESC[45;33m --45/33--ESC[0m : --45/33--
echo ESC[45;34m --45/34--ESC[0m : --45/34--
echo ESC[45;35m --45/35--ESC[0m : --45/35--
echo ESC[45;36m --45/36--ESC[0m : --45/36--
echo ESC[45;37m --45/37--ESC[0m : --45/37--
echo ESC[46;30m --46/30--ESC[0m : --46/30--
echo ESC[46;31m --46/31--ESC[0m : --46/31--
echo ESC[46;32m --46/32--ESC[0m : --46/32--
echo ESC[46;33m --46/33--ESC[0m : --46/33--
echo ESC[46;34m --46/34--ESC[0m : --46/34--
echo ESC[46;35m --46/35--ESC[0m : --46/35--
echo ESC[46;36m --46/36--ESC[0m : --46/36--
echo ESC[46;37m --46/37--ESC[0m : --46/37--
echo ESC[47;30m --47/30--ESC[0m : --47/30--
echo ESC[47;31m --47/31--ESC[0m : --47/31--
echo ESC[47;32m --47/32--ESC[0m : --47/32--
echo ESC[47;33m --47/33--ESC[0m : --47/33--
echo ESC[47;34m --47/34--ESC[0m : --47/34--
echo ESC[47;35m --47/35--ESC[0m : --47/35--
echo ESC[47;36m --47/36--ESC[0m : --47/36--
echo ESC[47;37m --47/37--ESC[0m : --47/37--
截屏:
后记
写这条BLOG3小时多点,太费时了,不容易啊。