Ubuntuでの制御コード:
一般的に使用されるANSI制御コードは次のとおりです(一部はサポートされていません)。
\ 033 [0mすべてのプロパティを閉じる
\ 033 [1mハイライト
\ 033 [2mの明るさが半分になりました
\ 033 [3mイタリック
\ 033 [4mアンダースコア
\ 033 [5m点滅
\ 033 [6mフラッシュ
\ 033 [7mリバースディスプレイ
\ 033 [8mブランキング
\ 033 [9m真ん中の横線
10-19フォントについて
21-29は基本的に1-9の反対です
30-37前景色を設定する
40-47セットの背景色
30:黒
31:赤
32:緑
33:黄色
34:青
35:紫
36:ダークグリーン
37:白
38下線をオンにして、デフォルトの前景色を設定します
39下線をオフにして、デフォルトの前景色を設定します
40黒の背景
41赤い背景
42緑の背景
43茶色の背景
44青い背景
45マゼンタの背景
46ピーコックブルーの背景
47白い背景
48何かわからない
49デフォルトの背景色を設定する
50-89役に立たない
90-109は、前景と背景を再び設定します。これは、前の色よりも明るい色です。
\ 033 [nAカーソルをn行上に移動します
\ 033 [nBカーソルをn行下に移動します
\ 033 [nCカーソルを右にn行移動します
\ 033 [nDカーソルをn行左に移動します
\ 033 [y; xHカーソル位置を設定
\ 033 [2J画面をクリア
\ 033 [Kカーソルから行末までの内容をクリアする
\ 033 [sはカーソル位置を保存します
\ 033 [uカーソル位置を復元
\ 033 [?25lカーソルを非表示にする
\ 033 [?25h表示カーソル
ソースコード
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
const int CMD_SETTYPE = 0;
const int CMD_SETBGCOLOR = 1;
const int CMD_SETFGCOLOR = 2;
const int CMD_HELP = 3;
const size_t STYLE_LENGTH = 10;
const string STYLE[] = {"DEFAULT", "INTENSITY", "HALF_INTENSITY", "ITALIC", "UNDERLINE", "FLASH",
"FAST_FLASH", "INVERT_SHOW", "HIDE", "DELETELINE"};
const size_t BGCOLOR_LENGTH = 8;
const string BGCOLOR[] = {"BLACK", "RED", "GREEN", "YELLOW", "BLUE", "PURPLE", "PEACOCK_BLUE", "WHITE"};
const size_t FGCOLOR_LENGTH = 8;
const string FGCOLOR[] = {"BLACK", "RED", "GREEN", "YELLOW", "BLUE", "PURPLE", "PEACOCK_BLUE", "WHITE"};
using namespace std;
void toUpCase(string &);
void help()
{
cout << "\n******设置终端颜色的工具******\n";
cout << "参数列表:\n";
cout << "-s: \n 后面接样式类型:default--默认样式,intensity--高亮加粗,half_intensity--高亮减半,italic--斜体,"
<< "underline--下划线,flash--闪烁,fast_flash--快速闪烁,invert_show--反显,hide--隐藏,deleteline--删除线。\n\n";
cout << "-bg:\n 设置背景颜色,后面接颜色:black--黑,red--红,green--绿,yellow--黄,blue--蓝,purple--紫,"
<< "peacock_blue--孔雀蓝,white--白。\n\n";
cout << "-fg:\n 设置字的颜色,后面接颜色:black--黑,red--红,green--绿,yellow--黄,blue--蓝,purple--紫,"
<< "peacock_blue--孔雀蓝,white--白。\n\n";
cout << "-h: \n 显示帮助。\n";
cout << "\n*******************************\n";
}
string setBgColor(const string &color)
{
string sColor(color);
string result;
string &s = sColor;
toUpCase(sColor);
size_t i = 0;
while (i < BGCOLOR_LENGTH)
{
if (sColor.compare(BGCOLOR[i]) == 0)
{
break;
}
++i;
}
ostringstream osm;
if (i >= BGCOLOR_LENGTH)
return result;
else
i += 40;
osm << i;
result += "\033[" + osm.str() + "m";
return result;
}
string setFgColor(const string &color)
{
string sColor(color);
string result;
toUpCase(sColor);
size_t i = 0;
while (i < FGCOLOR_LENGTH)
{
if (sColor.compare(FGCOLOR[i]) == 0)
{
break;
}
++i;
}
ostringstream osm;
if (i >= FGCOLOR_LENGTH)
return result;
else
i += 30;
osm << i;
result += "\033[" + osm.str() + "m";
return result;
}
string setStyle(const string &style)
{
string sStyle = style;
string result;
toUpCase(sStyle);
size_t i = 0;
while (i < STYLE_LENGTH)
{
if (sStyle.compare(STYLE[i]) == 0)
{
break;
}
++i;
}
ostringstream osm;
if (i >= STYLE_LENGTH)
return result;
osm << i;
result += "\033[" + osm.str() + "m";
return result;
}
int getParamType(const string &cmd)
{
if (cmd.compare("-s") == 0)
{
return CMD_SETTYPE;
}
else if (cmd.compare("-bg") == 0)
{
return CMD_SETBGCOLOR;
}
else if (cmd.compare("-fg") == 0)
{
return CMD_SETFGCOLOR;
}
else if (cmd.compare("-h") == 0)
{
return CMD_HELP;
}
else
{
return -1;
}
}
typedef string (*strFP)(const string &);
strFP getFuncByCmdType(int cmdType)
{
switch (cmdType)
{
case CMD_SETTYPE:
return setStyle;
case CMD_SETBGCOLOR:
return setBgColor;
case CMD_SETFGCOLOR:
return setFgColor;
default:
return nullptr;
}
}
string format(int count, char *argv[])
{
string result;
if (count <= 1)
return result;
if (getParamType(argv[1]) == CMD_HELP){
help();
return result;
}
int i = 1;
int cmdIndex = -1;
while (i < count)
{
if(i+1 >= count)
return result;
cmdIndex = getParamType(argv[i]);
strFP func = getFuncByCmdType(cmdIndex);
if (func != nullptr)
{
result += func(argv[i + 1]);
}
else
{
result = "";
return result;
}
i += 2;
}
return result;
}
void toUpCase(string &s)
{
size_t len = s.length();
size_t interval = 'a' - 'A';
for (size_t i = 0; i < len; i++)
{
s[i] = (s[i] >= 97 && s[i] <= 122) ? s[i] - interval : s[i];
}
}
int main(int argc, char *argv[])
{
if (argc <= 1)
{
help();
return 0;
}
string formatStr = format(argc, argv);
cout << formatStr;
return 0;
}
コードをchcolor.cppファイルとして保存します。
コンパイル
g ++ -std = c ++ 11 -o chcolor chcolor.cpp
chcolorを/ bin /ディレクトリにコピーします:sudo cp chcolor / bin /
使用する
rootに切り替えます:sudo su
ターミナルに入力します:chcolor -h
輸入入:chcolor-s下線-bg青-fg黄色
スタイル、背景色、前景色を同時に設定できます。
cout << "\033[1;31;45mHello, ubuntu!\n";
//中间用;进行分隔
質問があります:それがrootユーザーの下で使用されない場合、効果はありません、専門家の指導をお願いします、ありがとう!