Linux设置终端输出字体颜色

Linux设置终端输出字体颜色

0x01 终端配色方法简介

使用\033[01;04;32;41m之类的配色方案在需要输出显示的文本之前,可以改变应用程序输出文本的颜色或者背景颜色。

#include <stdio.h>

int main()
{
	printf("\033[01;34m Hello World\033[0m\n");
	return 0;
}

上面的01表示加粗,34表示是蓝色,后面\033[0m表示恢复所有的属性为原来的默认值。更多关于颜色的参考,
http://www.pixelbeat.org/docs/terminal_colours/有非常详细的叙述。也可以把上述的\033字符用\e或者\x1b替换。

可以采用多种配色方案,比如上面提到的\033[01;04;32;41m,04表示下划线,32表示前景色是绿色,然后41表示背景色是红色。

由于使用的是Linux系统为终端提供的配色方案,所以该程序不具备移植性。可以看到,该程序在Windows会打印一些奇怪的符号。

字颜色: 30–39
30: 黑
31: 红
32: 绿
33: 黄
34: 蓝
35: 紫
36: 深绿
37: 白色


字背景颜色范围: 40–49
40: 黑
41: 红
42: 绿
43: 黄
44: 蓝
45: 紫
46: 深绿
47: 白色


ANSI控制码:
QUOTE:
/033[0m 关闭所有属性
/033[1m 设置高亮度
/03[4m 下划线
/033[5m 闪烁
/033[7m 反显
/033[8m 消隐
/033[30m – /033[37m 设置前景色
/033[40m – /033[47m 设置背景色
/033[nA 光标上移n行
/03[nB 光标下移n行
/033[nC 光标右移n行
/033[nD 光标左移n行
/033[y;xH设置光标位置
/033[2J 清屏
/033[K 清除从光标到行尾的内容
/033[s 保存光标位置
/033[u 恢复光标位置
/033[?25l 隐藏光标
/33[?25h 显示光标

0x02 简单的终端颜色改变程序

#include <unistd.h>
#include <iostream>
#include <stdarg.h>
#include <cstdio>
#include <string.h>
#include <stdlib.h>

enum Color {
        BLACK = 30,
        RED = 31,
        GREEN = 32,
        BROWN = 33,
        BLUE = 34,
        MAGENTA = 35,
        CYAN = 36,
        GREY = 37,
        LRED = 41,
        LGREEN = 42,
        YELLOW = 43,
        LBLUE = 44,
        LMAGENTA = 45,
        LCYAN = 46,
        WHITE = 47
};


void set_color(int fd, Color color) {
        char buffer[32];
        snprintf(buffer, sizeof(buffer), "\x1b[%d%sm",
                        color >= LRED ? (color - 10) : color,
                        color >= LRED ? ";1" : ""
                        );
        write(fd, buffer, strlen(buffer));
}

void reset_color(int fd) {
	const char* s = "\x1b[0m";
	write(fd, s, strlen(s));
}

int main(void)
{
    int color;
    int count = 0;
    std::cout<<"please input color eum(30 - 47):\t";
    while(1)
    {
	std::cout << "this is " << count++ << " times..."<<std::endl;
        std::cin>>color;
        if (color >= 30 && color <38 || color >= 40 && color < 48)
        {
            set_color(STDOUT_FILENO, (Color)color);
            std::cout << "set color success...."<<std::endl;
        }
        else if(-1 == color)
        {
            reset_color(STDOUT_FILENO);
            std::cout << "reset_color success...."<<std::endl;
            break;
        }
        else
        {
            std::cout<<"Warning: please input color range [30, 37] [40, 47]"<<std::endl;
        }
    }
    std::cout<<"bye~bye ...."<<std::endl;
    exit(EXIT_SUCCESS);
}

演示:
Demo输出

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Linux终端中,可以使用ANSI转义序列来设置字体颜色。具体方法如下: 1. 设置前景色(即字体颜色): \033[30m 黑色 \033[31m 红色 \033[32m 绿色 \033[33m 黄色 \033[34m 蓝色 \033[35m 紫色 \033[36m 青色 \033[37m 白色 2. 设置背景色: \033[40m 黑色 \033[41m 红色 \033[42m 绿色 \033[43m 黄色 \033[44m 蓝色 \033[45m 紫色 \033[46m 青色 \033[47m 白色 例如,要将字体颜色设置为红色,可以在终端中输入: echo -e "\033[31mHello World!\033[m" 其中,\033[31m表示设置字体颜色为红色,\033[m表示恢复默认颜色。 ### 回答2: 在Linux终端中,我们可以通过修改字体的颜色来增加终端的可读性或美观度。以下是一些常用的方法: 1. 通过ANSI转义序列来设置颜色 ANSI转义序列是一系列控制码,用于改变文本输出颜色、背景、样式等。在终端中,我们可以使用ANSI转义序列来设置文本的前景色和背景色。 例如,使用以下命令设置字体颜色为红色: ``` echo -e "\033[31mThis is red text\033[0m" ``` 其中,`\033[31m`表示将接下来的文本颜色设置为红色,`\033[0m`表示将文本颜色恢复为默认颜色。其他常用颜色对应的代码如下: | 颜色 | 前景色 | 背景色 | |---|---|---| | 黑色 | \033[30m | \033[40m | | 红色 | \033[31m | \033[41m | | 绿色 | \033[32m | \033[42m | | 黄色 | \033[33m | \033[43m | | 蓝色 | \033[34m | \033[44m | | 紫色 | \033[35m | \033[45m | | 青色 | \033[36m | \033[46m | | 白色 | \033[37m | \033[47m | 2. 修改终端的配置文件 在Linux下,我们可以通过修改终端的配置文件来设置终端的字体、颜色、光标等外观特性。在GNOME Terminal中,配置文件为`~/.config/gtk-3.0/gtk.css`。在该文件中,我们可以使用CSS样式来设置终端的外观。 例如,使用以下代码设置终端的背景色为灰色,字体颜色为白色: ```css TerminalWindow, vte-terminal { background-color: #2b2b2b; color: #ffffff; } ``` 3. 使用终端配色方案 除了手动设置颜色之外,我们还可以使用终端配色方案来快速设置终端的外观。在Linux下,常用的终端配色方案有Solarized、Dracula、Monokai等。 例如,在GNOME Terminal中,我们可以通过在“首选项”中选择“配色方案”来加载预设的配色方案。如果需要自定义配色方案,可以通过安装`gnome-terminal-colors-solarized`等工具来实现。 总之,无论是使用ANSI转义序列、修改终端配置文件还是使用配色方案,设置终端字体颜色都是很容易实现的。有了好的字体配色,我们可以更愉快地使用终端,提高工作效率。 ### 回答3: 在Linux终端中,我们可以通过设置字体颜色来改变终端的外观。下面介绍几种常用的设置方式。 一、直接使用ANSI转义序列 ANSI转义序列指的是一些特殊的字符序列,可以在终端中展示不同的颜色和样式。具体格式为:\033[显示方式;前景色;背景色m 其中,显示方式、前景色和背景色的值可以对应不同的颜色效果,具体值如下: 显示方式:0默认,1高亮,4下划线,5闪烁,7反显 前景色:30黑,31红,32绿,33黄,34蓝,35紫,36深绿,37白色 背景色:40黑,41红,42绿,43黄,44蓝,45紫,46深绿,47白色 例子: echo -e "\033[31mThis is red text\033[0m" 该命令将输出红色的"This is red text" 二、修改终端配置文件 Step 1:打开终端,输入命令:vi ~/.bashrc Step 2:找到以下两行 PS1=’\h:\w\$ ’ unset color_prompt force_color_prompt Step 3:修改成如下内容 PS1=’\[\e[1;31m\]\h:\w\$ \[\e[m\]’ unset color_prompt force_color_prompt Step 4:保存,退出,输入命令:source ~/.bashrc 其中,\[\e[1;31m\]指定字体为红色,\[\e[m\]则关闭颜色设置。 三、使用Zsh Zsh是一个功能强大的终端Shell,提供了许多自定义设置选项,可以通过修改~/.zshrc文件来设置颜色。 Step 1:打开终端,输入命令:vi ~/.zshrc Step 2:在文件末尾添加以下内容 export PS1="%F{red}%n@%m%f:%F{blue}%~%f%% " Step 3:保存,退出 其中,%F{red}指定字体为红色,%F{blue}指定字体为蓝色。 以上就是几种常用的Linux终端字体颜色设置方式,不同的设置方式有不同的适用场景,可以根据个人需要选择合适的设置方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Erice_s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值