首页 > 系统相关 >shell中设置文字输出的颜色及字体格式

shell中设置文字输出的颜色及字体格式

时间:2023-05-25 19:57:26浏览次数:54  
标签:shell 33 echo COLOR 字体 033 格式 光标 0m

转载:(15条消息) shell中设置文字输出的颜色及字体格式_linux 文字顏色_庚庚911的博客-CSDN博客

ANSI控制码

简介

ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。

ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。ANSI控制码依赖终端,不是依赖语言,所以在shell,perl,c里应用均没有问题。

ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。

 

格式

echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号

格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

注意m后面紧跟字符串。

 

ANSI控制码

\33[0m 关闭所有属性 
\33[1m 设置高亮度
\33[4m 下划线 
\33[5m 闪烁 
\33[7m 反显 
\33[8m 消隐 
\33[30m -- \33[37m 设置前景色(字体色)30:黑 31:红     32:绿 33:黄    34:蓝色 35:紫色 36:深绿 37:白色
\33[40m -- \33[47m 设置背景色                  40:黑 41:深红 42:绿 43:黄色 44:蓝色 45:紫色 46:深绿 47:白色
\33[nA 光标上移n行 
\33[nB 光标下移n行 
\33[nC 光标右移n行 
\33[nD 光标左移n行 
\33[y;xH设置光标位置 
\33[2J 清屏 
\33[K 清除从光标到行尾的内容 
\33[s 保存光标位置 
\33[u 恢复光标位置 
\33[?25l 隐藏光标 
\33[?25h 显示光标

 

显示字元属性控制

[n1;n2;......m

Ⅰ设定显示字元的属性状态;

Ⅱ若有两个以上的属性状态要设定则以分号将代码(n1;n2;..)隔开;

Ⅲ除非重新设定,否则原设定之属性一直被保留;

1、Linux中设置文本颜色及背景色

Shell 使用 ANSI 转义码 (ANSI escape codes) 进行颜色输出。转义序列颜色输出表如下

颜色

前景色(字体色)

背景色

黑色 (Black)

30

40

红色 (Red)

31

41

绿色 (Green)

32

42

黄色 (Yellow)

33

43

蓝色 (Blue)

34

44

紫红色 (Magenta)

35

45

青色 (Cyan)

36

46

白色 (White)

37

47

 

 

 

 

 

 

 

 

 

 

 

 

 

 

echo -e "\033[颜色值m 文本"

这句代码中\033[ 作为转义序列的开始,你也可以使用 "\e[" 颜色值处设定前景色值。m 终止转义序列,后面紧跟着就是生效的文本。echo 需要 -e 来开启转义序列。可以用 printf 代替 echo。

printf  "\e[颜色值m 文本\n"

2、shell中设置字体颜色及背景实例

例1:打印蓝色文本(两种方法)

echo -e "\033[34m Hello World"
printf "\e[34m Hello World\n"

但是这样执行之后,会使得其后面的文本输出都是蓝色,连命令提示符都是蓝色。要使其返回颜色使用 \033[0m。

使用不同的转义序列组合来达到不同的效果,如下面加上背景色的显示:

echo -e "\033[前景色值;背景色值m 文本\033[0m"

前景色值和背景色值使用分号间隔,不分先后,因为两种值的颜色范围不一样,比如 黑色 30 40 。另外分开写同样生效,如 \033[44m\033[32m

3、Linux中设置字体属性(加粗、闪烁、下划线等)

转义序列还可以设置文本在显示屏上显示的方式,如是否加粗等,如下表:

ANSI 码

含义

0

常规文本

1

粗体文本

4

含下划线文本

5

闪烁文本

7

反色(补色)文本

 

 

 

 

 

 

 

 

 

 

加粗属性合并后,有些变化。如下表:

关闭加粗

颜色

开启加粗

颜色

0;30

黑 (Black)

1;30

深灰 (Dark Gray)

0;31

红 (Red)

1;31

深红 (Dark Red)

0;32

绿 (Green)

1;32

深绿 (Dark Green)

0;33

黄 (Yellow)

1;33

亮黄 (Yellow)

0;34

蓝 (Blue)

1;34

深蓝 (Dark Blue)

0;35

紫红 (Magenta)

1;35

暗紫红 (Dark Magenta)

0;36

青 (Cyan)

1;36

深青 (Dark Cyan)

0;37

浅   灰(White)

1;37

白 (White)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

特效可以叠加,需要使用“;”隔开,例如:闪烁+下划线+白底色+黑字为   \033[5;4;47;30m闪烁+下划线+白底色+黑字为\033[0m

4、shell脚本实现各种字体颜色及背景设置

#!/bin/bash 
 
# 
 
#下面是字体输出颜色及终端格式控制 
 
#字体色范围:30-37 
 
echo -e "\033[30m 黑色字 \033[0m" 
 
echo -e "\033[31m 红色字 \033[0m" 
 
echo -e "\033[32m 绿色字 \033[0m" 
 
echo -e "\033[33m ×××字 \033[0m" 
 
echo -e "\033[34m 蓝色字 \033[0m" 
 
echo -e "\033[35m 紫色字 \033[0m" 
 
echo -e "\033[36m 天蓝字 \033[0m" 
 
echo -e "\033[37m 白色字 \033[0m" 
 
#字背景颜色范围:40-47 
 
echo -e "\033[40;37m 黑底白字 \033[0m" 
 
echo -e "\033[41;30m 红底黑字 \033[0m" 
 
echo -e "\033[42;34m 绿底蓝字 \033[0m" 
 
echo -e "\033[43;34m 黄底蓝字 \033[0m" 
 
echo -e "\033[44;30m 蓝底黑字 \033[0m" 
 
echo -e "\033[45;30m 紫底黑字 \033[0m" 
 
echo -e "\033[46;30m 天蓝底黑字 \033[0m" 
 
echo -e "\033[47;34m 白底蓝字 \033[0m" 
 
 
 
#控制选项说明 
 
#\033[0m 关闭所有属性 
 
#\033[1m 设置高亮度 
 
#\033[4m 下划线 
 
echo -e "\033[4;31m 下划线红字 \033[0m" 
 
#闪烁 
 
echo -e "\033[5;34m 红字在闪烁 \033[0m" 
 
#反影 
 
echo -e "\033[8m 消隐 \033[0m " 
 
 
 
#\033[30m-\033[37m 设置前景色 
 
#\033[40m-\033[47m 设置背景色 
 
#\033[nA光标上移n行 
 
#\033[nB光标下移n行 
 
echo -e "\033[4A 光标上移4行 \033[0m" 
 
#\033[nC光标右移n行 
 
#\033[nD光标左移n行 
 
#\033[y;xH设置光标位置 
 
#\033[2J清屏 
 
#\033[K清除从光标到行尾的内容 
 
echo -e "\033[K 清除光标到行尾的内容 \033[0m" 
 
#\033[s 保存光标位置 
 
#\033[u 恢复光标位置 
 
#\033[?25| 隐藏光标 
 
#\033[?25h 显示光标 
 
echo -e "\033[?25l 隐藏光标 \033[0m" 
 
echo -e "\033[?25h 显示光标 \033[0m"

5、使用echo让字符串显示不同颜色

下面的命令可写入脚本执行,根据实际情况替换需要改变颜色的文本。

echo -e "\033[30m 黑色字 可替换部分 \033[0m"
 
echo -e "\033[31m 红色字 可替换部分 \033[0m"
 
echo -e "\033[32m 绿色字 可替换部分 \033[0m"
 
echo -e "\033[33m ×××字 可替换部分 \033[0m"
 
echo -e "\033[34m 蓝色字 可替换部分 \033[0m"
 
echo -e "\033[35m 紫色字 可替换部分 \033[0m"
 
echo -e "\033[36m 天蓝字 可替换部分 \033[0m"
 
echo -e "\033[37m 白色字 可替换部分 \033[0m"

6、通过定义变量的方式给字体加颜色

#!/bin/bash
 
#通过变量给字体加颜色
 
RED_COLOR='\E[1;31m'
 
GREEN_COLOR='\E[1;32m'
 
YELLOW_COLOR='\E[1;33m'
 
BLUE_COLOR='\E[1;34m'
 
PINK_COLOR='\E[1;35m'
 
RES='\E[0m'
 
echo -e "${RED_COLOR}=====红色可替换部分=====${RES}"
 
echo -e "${GREEN_COLOR}=====绿色可替换部分=====${RES}"
 
echo -e "${YELLOW_COLOR}=====×××可替换部分=====${RES}"
 
echo -e "${BLUE_COLOR}=====蓝色可替换部分=====${RES}"
 
echo -e "${PINK}=====粉色可替换部分=====${RES}"

7、开发一个给输出内容加颜色的函数(也可以加背景颜色)

在脚本中传2个参数,给指定内容(第一个参数),加指定颜色(第二个参数)

#!/bin/bash
 
#通过变量给字体加颜色
 
#这里定义一个COLOR_1()函数,后面如果想改变字体颜色直接调用即可
 
COLOR_1(){
 
RED_COLOR='\E[1;31m'
 
GREEN_COLOR='\E[1;32m'
 
YELLOW_COLOR='\E[1;33m'
 
BLUE_COLOR='\E[1;34m'
 
PINK_COLOR='\E[1;35m'
 
RES='\E[0m'
 
#这里判断传入的参数是否不等于2个,如果不等于2个就提示并退出
 
if [ $# -ne 2 ];then
 
    echo "Usage $0 content {red|yellow|blue|green|pink}"
 
    exit
 
fi
 
 
 
case "$2" in
 
   red|RED)
 
        echo -e "${RED_COLOR}$1${RES}"
 
        ;;
 
   yellow|YELLOW)
 
        echo -e "${YELLOW_COLOR}$1${RES}"
 
        ;;
 
   green|GREEN)
 
        echo -e "${GREEN_COLOR}$1${RES}"
 
        ;;
 
   blue|BLUE)
 
        echo -e "${BLUE_COLOR}$1${RES}"
 
        ;;
 
   pink|PINK)
 
        echo -e "${PINK_COLOR}$1${RES}"
 
        ;;
 
         *)
 
        echo -e "请输入指定的颜色代码:{red|yellow|blue|green|pink}"
 
esac
 
}
 
COLOR_1 "程序安装报错!" red
 
COLOR_1 "程序安装成功!" green
 
COLOR_1 "输出相关注释信息" blue

 

 

example:

        echo  -e "\033[1;32;46m CASE $i PASSED \033[0m"

效果如下图所示:

 

标签:shell,33,echo,COLOR,字体,033,格式,光标,0m
From: https://www.cnblogs.com/zhiminyu/p/17432687.html

相关文章

  • 通过nc获取靶机的反弹Shell [靶机实战]
    1、环境Kali:172.30.1.3/24靶机(Funbox9):172.30.1.129/242、信息收集通过nmap扫描此主机,我们需要获取到开放的端口以及服务的Banner1nmap-sV-T5-A172.30.1.129 通过扫描我们发现,目标主机开放着21端口,服务Banner是vsftpd2.3.4,并且允许匿名登录我们尝试ftp匿名连......
  • 跟着hsp学springmvc--数字格式化介绍
    基本数据类型和字符串类型的自动转换<%@taglibprefix="form"uri="http://www.springframework.org/tags/form"%><%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Ti......
  • 批量服务器更新DNS的powershell脚本
    在之前的博文https://blog.51cto.com/magic3/2514240中写过一个类似的脚本,但脚本并不完美。近期又有类似的需求,懒得改了,直接写个新的。针对hyper-v的多网卡,虚拟网卡,同样有效。$nic_array=@{}$nic_info=Get-NetAdapter$nic_name=$nic_info.nameforeach($nicin$nic......
  • LINUX下定时备份MYSQL数据库SHELL脚本
    备份脚本backupMysqlData.sh#!/bin/bash#备份SQL文件的路径backupdir=/home/hdkg/mysqldata/#执行导出数据库操作mysqldump--user=root--password=password--host=localhost--port=3306dataBaseName>$backupdir/backupfile_$(date+%Y%m%d).sql#删除七天前的备份数......
  • 两个MYSQL数据同步的SHELL脚本
    #/!bin/bashHOST=127.0.0.1#ip(127.0.0.1表示本机地址)USER=root#数据库用户名PASSWORD=password#数据库密码DATABASE=pig#数据库名BACKUP_PATH=/home/hdkg/bkdata/#备份目录logfile=/home/hdkg/bklog/data.log#记录日志TABLES="testtest......
  • 转换视频格式|压缩视频|使用ffmpeg
    代码如下importos.pathimportsubprocessdefcompress_video(origin_file=None,target_file=None,quality=10):#压缩质量(值越小,视频越小)#如果文件存在就删除ifos.path.exists(target_file):os.remove(target_file)ifnotos.path.ex......
  • linux shell编程规范和变量
    目录一、shell简述二、shell脚本三、重定向四、管道符五、变量六、shell脚本基本知识 七、预定义变量小实验           一、shell简述概念:shell解释器,翻译官功能,与内核进行沟通的应用程序。把代码翻译为二进制,让内核处理,负责接收......
  • WebShell 特征分析
    WebShell特征分析作者:HaiCheng@助安社区,关注公众号领取学习路线和资料。​ WebShell是黑客经常使用的一种恶意脚本,其目的是获得服务器的执行操作权限,常见的webshell编写语言为asp/jsp/php。主要用于网站管理,服务器管理,权限管理等操作。使用方法简单,只需要上传一个代码文件,通过......
  • 基于Qt的音乐播放器(三)通过酷狗音乐的api接口,返回json格式歌曲信息(播放地址,歌词,图片)
    2020博客之星年度总评选进行中:请为74号的狗子投上宝贵的一票!我的投票地址:点击为我投票文章目录前言1.获取歌曲搜索列表api接口2.获取单个歌曲详细信息包括歌词3.总结前言首先说明,本教程仅供个人学习,研究使用,禁止用于任何的商业和非法用途。(手动狗头)之所以要研究这个,是因为我想......
  • Oracle中读取JSON格式数据实战指南(oracle中读json)
    Oracle中读取JSON格式数据实战指南 随着大数据、云计算等技术的快速发展,JSON(JavaScriptObjectNotation)格式的数据越来越广泛应用于数据交互和存储中。Oracle数据库支持JSON格式数据的存储和查询,本篇文章将介绍如何在Oracle中读取JSON格式数据,并提供相关代码示例。 1.创建......