আমি কীভাবে একটি লিনাক্স টার্মিনালে রঙিন পাঠ্য আউটপুট করব?


300

আমি লিনাক্স টার্মিনালে এটির সমর্থিত রঙিন বর্ণগুলি কীভাবে মুদ্রণ করব?

টার্মিনাল রঙ কোডগুলি সমর্থন করে কিনা তা আমি কীভাবে বলব?


9
টার্মিনালটি সক্ষম কি তা নির্ধারণ করতে, টার্মিনাল সক্ষমতার ডাটাবেসটি পরীক্ষা করে দেখুন। দেখতে termcap(5)
jrockway

1
আমি এখানে রেখেছি একটি কোড স্নিপেট নির্দ্বিধায় দেখতে । এটি একটি ছোট সরঞ্জাম যা কিছু ম্যাক্রোগুলির সাহায্যে এর ফলাফলকে রঙ করে।
এপ্যাটেল

7
"টার্মক্যাপ ডাটাবেসটি চরিত্র-সেল টার্মিনাল এবং প্রিন্টারগুলির দক্ষতা বর্ণনা করার জন্য একটি অপ্রচলিত সুবিধা It এটি কেবল পুরানো প্রোগ্রামগুলির সক্ষমতা জন্যই ধরে রাখা হয়; নতুনদের terminfo(5)ডাটাবেস এবং সম্পর্কিত লাইব্রেরি ব্যবহার করা উচিত use " -termcap(5)
অরেঞ্জডগ

আপনি সহজেই টার্মিনাল
রুডি

1
আপনি যদি রঙিন প্রিন্টিং সহ কিছু উন্নত জিনিস করতে চান তবে আমি আপনাকে এই নিবন্ধটি পড়ার পরামর্শ দিচ্ছি । আমি এটি খুব সহায়ক বলে খুঁজে পেয়েছি
সাবম্যাচাইন

উত্তর:


408

আপনাকে এএনএসআই রঙ কোড আউটপুট করতে হবে । নোট করুন যে সমস্ত টার্মিনাল এটি সমর্থন করে না; যদি রঙ সিকোয়েনগুলি সমর্থন না করে তবে আবর্জনা প্রদর্শিত হবে।

উদাহরণ:

 cout << "\033[1;31mbold red text\033[0m\n";

এখানে, \033ইসি অক্ষরটি ASCII 27. এটির পরে [, তারপরে শূন্য বা আরও বেশি সংখ্যার দ্বারা পৃথক করা হয় ;এবং অবশেষে চিঠিটি m। সংখ্যাগুলি সেই বিন্দু থেকে সরে যেতে রং এবং ফর্ম্যাটটিকে বর্ণনা করে।

অগ্রভাগ এবং পটভূমির রঙগুলির জন্য কোডগুলি হ'ল:

         foreground background
black        30         40
red          31         41
green        32         42
yellow       33         43
blue         34         44
magenta      35         45
cyan         36         46
white        37         47

অতিরিক্ত হিসাবে, আপনি এগুলি ব্যবহার করতে পারেন:

reset             0  (everything back to normal)
bold/bright       1  (often a brighter shade of the same colour)
underline         4
inverse           7  (swap foreground and background colours)
bold/bright off  21
underline off    24
inverse off      27

অন্যান্য, কম বিস্তৃত সমর্থিত কোডগুলির জন্য উইকিপিডিয়ায় সারণীটি দেখুন ।


আপনার টার্মিনাল রঙের অনুক্রমগুলি সমর্থন করে কিনা তা নির্ধারণ করতে, TERMপরিবেশের ভেরিয়েবলের মানটি পড়ুন । এটি ব্যবহার বিশেষ টার্মিনাল প্রকার নির্দিষ্ট করা উচিত (যেমন vt100, gnome-terminal, xterm, screen, ...)। তারপরে টার্মিনফো ডাটাবেজে এটি দেখুন ; colorsক্ষমতা পরীক্ষা করুন ।


15
এটি
বিবিএসে

11
কি mজন্য / দাঁড়ানো?
নিপোনসীয়

4
@ স্নোপোনস \033[এবং mএএনএসআই রঙের কোডগুলির জন্য পালানোর ক্রমের শুরু এবং শেষ চিহ্নিত করুন। সূত্র: en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
thameera

20
আমি এটা যেমন "manipulators", সংজ্ঞা ব্যবহার const std::string red("\033[0;31m");বা const std::string reset("\033[0m");। তারপরে, আমি সহজভাবে লিখতে পারি cout << red << "red text" << reset << endl;
ড্যানিয়েল ল্যাঙ্গার

4
: আমি রঙের একটি ঠাহর জন্য এই তাকান চাই misc.flogisoft.com/bash/tip_colors_and_formatting
Liran Funaro

97

বুনিয়াদি

আমি একটি সি ++ ক্লাস লিখেছি যা আউটপুটটির অগ্রভাগ এবং পটভূমির রঙ সেট করতে ব্যবহার করা যেতে পারে। এই নমুনা প্রোগ্রামটি মুদ্রণ This ->word<- is red.এবং ফর্ম্যাট করার উদাহরণ হিসাবে কাজ করে যাতে এর অগ্রভাগের রঙটি wordলাল হয়।

#include "colormod.h" // namespace Color
#include <iostream>
using namespace std;
int main() {
    Color::Modifier red(Color::FG_RED);
    Color::Modifier def(Color::FG_DEFAULT);
    cout << "This ->" << red << "word" << def << "<- is red." << endl;
}

সূত্র

#include <ostream>
namespace Color {
    enum Code {
        FG_RED      = 31,
        FG_GREEN    = 32,
        FG_BLUE     = 34,
        FG_DEFAULT  = 39,
        BG_RED      = 41,
        BG_GREEN    = 42,
        BG_BLUE     = 44,
        BG_DEFAULT  = 49
    };
    class Modifier {
        Code code;
    public:
        Modifier(Code pCode) : code(pCode) {}
        friend std::ostream&
        operator<<(std::ostream& os, const Modifier& mod) {
            return os << "\033[" << mod.code << "m";
        }
    };
}

অগ্রসর

আপনি ক্লাসে অতিরিক্ত বৈশিষ্ট্য যুক্ত করতে চাইতে পারেন। উদাহরণস্বরূপ, রঙ ম্যাজেন্টা এবং বোল্ডফেসের মতো শৈলী যুক্ত করাও সম্ভব । এটি করার জন্য, Codeগণনায় কেবল একটি এন্ট্রি । এটি একটি ভাল রেফারেন্স।


গ্রেট। আপনি যদি অন্যান্য রঙ এবং পটভূমির রঙগুলি যোগ করতে পারেন তবে এটি সহায়ক হতে পারে।
ন্যানো

7
আরও কিছু: `এফজি_ডিএফএএলএফএলটি = 39, এফজি_ব্ল্যাক = 30, এফজি_RED = 31, এফজি_গ্রেইন = 32, এফজি_ইয়েললও = 33, এফজি_ব্লায়ি = 34, এফজি_ম্যাগেন্টা = 35, এফজি_সিআইএএন = 36, এফজি_লাইট_জিআরইজি = 39_ এফজিডিআরইড_আর 92, FG_LIGHT_YELLOW = 93, FG_LIGHT_BLUE = 94, FG_LIGHT_MAGENTA = 95, FG_LIGHT_CYAN = 96 FG_WHITE = 97, BG_RED = 41, BG_GREEN = 42, BG_BLUE = 44, BG_DEFAULT = 49`
Phantrast

6
যদি আপনি এর operator<<জন্য সংজ্ঞা দেন Code, তবে আপনি সরাসরি std::cout << Color::FG_RED;পরিবর্তে লিখতে পারেন std::cout << Modifier(Color::FG_RED);। যে, Modifierপ্রয়োজন হবে না।
নওয়াজ

2
@ নাওয়াজ ভাল ধারণা। এখানে এর মতো একটি বাস্তবায়ন রয়েছে: পেস্টবিন . com / zWC3t9hC । তবে আমি উত্তরে আমার আসল বাস্তবায়ন রাখব কারণ আমি মনে করি এটি আরও বর্ধিত।
জোয়েল সিজগ্রেন

1
প্রকৃতপক্ষে আমি প্রথম প্রয়োগটি আরও ভাল পছন্দ করি কারণ আপনি রঙগুলি চালু বা বন্ধ করতে একটি পতাকা যুক্ত করতে পারেন: bool sh;শ্রেণিতে যুক্ত করুন এবং এতে কনস্ট্রাক্টর পরিবর্তন করুন Modifier (Code pCode, bool show = true) : code(pCode), sh(show) {}। অবশেষে, <<অপারেটরের মূল অংশে বর্তমান লাইনটি ফিরিয়ে দিন if (sh)এবং return << os;অন্যথায়। এটি আপনার কোডটি লেখার অনুমতি দেয় Color::Modifier red(Color::FG_RED, BoolVar);যেখানে আপনি BoolVarপ্রোগ্রামের সূচনা হিসাবে সত্য বা মিথ্যা হিসাবে সেট করতে পারেন । আপনি এটি স্ক্রিনে দেখতে চালু করতে এবং কোনও ফাইলে পুনর্নির্দেশ বন্ধ করতে পারেন।
আরপিএসএমএল

42

যে কোনও রঙের আউটপুট দেওয়ার আগে আপনাকে নিশ্চিত করতে হবে যে আপনি কোনও টার্মিনালে রয়েছেন:

[ -t 1 ] && echo 'Yes I am in a terminal'  # isatty(3) call in C

তারপরে আপনাকে রঙিন সমর্থন করে যদি টার্মিনাল দক্ষতা পরীক্ষা করতে হবে

terminfo (লিনাক্স ভিত্তিক) সিস্টেমগুলিতে আপনি সমর্থিত রঙের পরিমাণ অর্জন করতে পারেন

Number_Of_colors_Supported=$(tput colors)

termcap (BSD ভিত্তিক) সহ সিস্টেমে আপনি সমর্থিত রঙের পরিমাণ অর্জন করতে পারেন

Number_Of_colors_Supported=$(tput Co)

তারপরে আপনি সিদ্ধান্ত নিন:

[ ${Number_Of_colors_Supported} -ge 8 ] && {
    echo 'You are fine and can print colors'
} || {
    echo 'Terminal does not support color'
}

বিটিডাব্লু, ইএসসি অক্ষরগুলির সাথে আগে যেমন পরামর্শ দেওয়া হয়েছিল তেমন রঙিন ব্যবহার করবেন না। টার্মিনাল সক্ষমতার জন্য স্ট্যান্ডার্ড কল ব্যবহার করুন যা আপনাকে নির্দিষ্ট টার্মিনাল সমর্থনকে সঠিক রঙ নির্ধারণ করবে।

বিএসডি ভিত্তিক
fg_black="$(tput AF 0)"
fg_red="$(tput AF 1)"
fg_green="$(tput AF 2)"
fg_yellow="$(tput AF 3)"
fg_blue="$(tput AF 4)"
fg_magenta="$(tput AF 5)"
fg_cyan="$(tput AF 6)"
fg_white="$(tput AF 7)"
reset="$(tput me)"
লিনাক্স ভিত্তিক
fg_black="$(tput setaf 0)"
fg_red="$(tput setaf 1)"
fg_green="$(tput setaf 2)"
fg_yellow="$(tput setaf 3)"
fg_blue="$(tput setaf 4)"
fg_magenta="$(tput setaf 5)"
fg_cyan="$(tput setaf 6)"
fg_white="$(tput setaf 7)"
reset="$(tput sgr0)"
ব্যবহৃত হচ্ছে
echo -e "${fg_red}  Red  ${fg_green} Bull ${reset}"

3
এই বাশ নির্দিষ্ট না? -t 1 স্পষ্টতই C ++ এ কাজ করবে না, এবং এই টিপুট প্রোগ্রামটি কল করা যখন কোনও সি ++ প্রোগ্রামে থাকে তখন এটি খুব চতুর্দিকে ঘুরবে।
মাচা

2
@ মাছা, হ্যাঁ, [ -t 1 ]এটি শ / বাশ নির্দিষ্ট, তবে ডানদিকে #(comment)সাইন এর পরে সি ফাংশন রয়েছে যা একই কাজ করে। man 3 isattyএটিতে সহায়তা করা উচিত;) মূল পয়েন্টটির ব্যাখ্যা সহজ করার জন্য শেল কমান্ড হিসাবে প্রদর্শিত উদাহরণ। সম্বন্ধে tputএটা ক্যোয়ারী মান টার্মিনাল সামর্থ্য ইন্টারফেসে ওপেন সোর্স উপযোগ আছে।
অ্যালেক্স

1
আমি নিশ্চিত না কেন লোকেরা সরাসরি এই কোডগুলি ব্যবহার করার পরামর্শ দিচ্ছে। এই ধরনের অনুমান করা সত্যিই খারাপ অভ্যাস। এটি শেল নির্দিষ্ট কোড হলেও, এটি শেল অভিজ্ঞতা এমনকি একটি বিবিধ পরিমাণে যে কেউ দ্বারা অনুবাদ করা যেতে পারে।
ওসিরিগোথর

34

অন্যরা যেমন বলেছে, আপনি পালানোর অক্ষর ব্যবহার করতে পারেন। এটিকে আরও সহজ করতে আপনি আমার শিরোনামটি ব্যবহার করতে পারেন :

#ifndef _COLORS_
#define _COLORS_

/* FOREGROUND */
#define RST  "\x1B[0m"
#define KRED  "\x1B[31m"
#define KGRN  "\x1B[32m"
#define KYEL  "\x1B[33m"
#define KBLU  "\x1B[34m"
#define KMAG  "\x1B[35m"
#define KCYN  "\x1B[36m"
#define KWHT  "\x1B[37m"

#define FRED(x) KRED x RST
#define FGRN(x) KGRN x RST
#define FYEL(x) KYEL x RST
#define FBLU(x) KBLU x RST
#define FMAG(x) KMAG x RST
#define FCYN(x) KCYN x RST
#define FWHT(x) KWHT x RST

#define BOLD(x) "\x1B[1m" x RST
#define UNDL(x) "\x1B[4m" x RST

#endif  /* _COLORS_ */

শিরোনামের ম্যাক্রো ব্যবহার করে একটি উদাহরণ হতে পারে:

#include <iostream>
#include "colors.h"
using namespace std;

int main()
{
    cout << FBLU("I'm blue.") << endl;
    cout << BOLD(FBLU("I'm blue-bold.")) << endl;
    return 0;
}

এখানে চিত্র বর্ণনা লিখুন


দুর্দান্ত শিরোনাম!
ঝেং কো

16

আমি নিম্নলিখিত সমাধানটি ব্যবহার করি, এটি বেশ সহজ এবং মার্জিত, সহজেই উত্সে আটকানো যায় এবং লিনাক্স / ব্যাশে কাজ করে:

const std::string red("\033[0;31m");
const std::string green("\033[1;32m");
const std::string yellow("\033[1;33m");
const std::string cyan("\033[0;36m");
const std::string magenta("\033[0;35m");
const std::string reset("\033[0m");

std::cout << "Measured runtime: " << yellow << timer.count() << reset << std::endl;

14

আমার বুঝতে থেকে, একটি সাধারণ এএনএসআই রঙ কোড

"\033[{FORMAT_ATTRIBUTE};{FORGROUND_COLOR};{BACKGROUND_COLOR}m{TEXT}\033[{RESET_FORMATE_ATTRIBUTE}m"

(নাম এবং কোডেক) এর সমন্বয়ে গঠিত

  • ফর্ম্যাট অ্যাট্রিবিউট

    { "Default", "0" },
    { "Bold", "1" },
    { "Dim", "2" },
    { "Underlined", "3" },
    { "Blink", "5" },
    { "Reverse", "7" },
    { "Hidden", "8" }
  • অগ্রিম রঙ C

    { "Default", "39" },
    { "Black", "30" },
    { "Red", "31" },
    { "Green", "32" },
    { "Yellow", "33" },
    { "Blue", "34" },
    { "Magenta", "35" },
    { "Cyan", "36" },
    { "Light Gray", "37" },
    { "Dark Gray", "90" },
    { "Light Red", "91" },
    { "Light Green", "92" },
    { "Light Yellow", "93" },
    { "Light Blue", "94" },
    { "Light Magenta", "95" },
    { "Light Cyan", "96" },
    { "White", "97" }
  • পেছনের রঙ

    { "Default", "49" },
    { "Black", "40" },
    { "Red", "41" },
    { "Green", "42" },
    { "Yellow", "43" },
    { "Blue", "44" },
    { "Megenta", "45" },
    { "Cyan", "46" },
    { "Light Gray", "47" },
    { "Dark Gray", "100" },
    { "Light Red", "101" },
    { "Light Green", "102" },
    { "Light Yellow", "103" },
    { "Light Blue", "104" },
    { "Light Magenta", "105" },
    { "Light Cyan", "106" },
    { "White", "107" }
  • টেক্সট

  • ফর্ম্যাট অ্যাট্রিবিউট রিসেট করুন

    { "All", "0" },
    { "Bold", "21" },
    { "Dim", "22" },
    { "Underlined", "24" },
    { "Blink", "25" },
    { "Reverse", "27" },
    { "Hidden", "28" }

এই তথ্য দিয়ে, একটি স্ট্রিং রঙ করা সহজ "" আমি একটি কলা! " ভূলভুজ রঙ "হলুদ" এবং পটভূমির রঙ "সবুজ" এর মতো

"\033[0;33;42mI am a Banana!\033[0m"

অথবা একটি সি ++ লাইব্রেরি রঙিন সহ

auto const& colorized_text = color::rize( "I am a banana!", "Yellow", "Green" );
std::cout << colorized_text << std::endl;

এখানে ফর্ম্যাট অ্যাট্রিবিউট সহ আরও উদাহরণএখানে চিত্র বর্ণনা লিখুন


এটি অনেক ভাল এবং আমি আমার পিএইচপি সি ++ এক্সটেনশনে এটি ব্যবহার করতে সক্ষম হয়েছি।
আফতাব নাভিদ

12

এটি একটি পুরানো বিষয়, তবে আমি সাধারণ সি ম্যাক্রো দ্বারা সংজ্ঞায়িত রঙের জন্য নেস্টেড সাবক্লাস এবং স্থির সদস্যদের সহ একটি ক্লাস লিখেছিলাম।

আমি colorএই পোস্টে রঙিন টেক্সট ইন সি প্রোগ্রামিং থেকে ক্রিয়াকলাপটি পেয়েছি ইউজার নো টোপেনসিল দ্বারা স্বপ্নকোড.নেট।

আমি এটি এইভাবে তৈরি করেছি যাতে স্টাডি :: কাউট স্ট্রিমে স্ট্যাটিক কনস্ট্যান্টগুলি ব্যবহার করতে সক্ষম হতে:

cout << zkr::cc::fore::red << "This is red text. " 
     << zkr::cc::console << "And changing to console default colors, fg, bg."
     << endl;

ক্লাস এবং একটি পরীক্ষার প্রোগ্রামের সোর্স কোডটি এখানে ডাউনলোড করা যায়

cc::consoleডিফল্ট রঙ এবং বৈশিষ্ট্যগুলি কনসোলটিতে পুনরায় সেট cc::underlineকরবে, পাঠ্যের আন্ডারলাইন করবে, যা পুটিটির উপর কাজ করে যা আমি পরীক্ষার প্রোগ্রামটি পরীক্ষা করেছি।

রং:

black
blue
red
magenta
green
cyan
yellow
white

lightblack
lightblue
lightred
lightmagenta
lightgreen
lightcyan
lightyellow
lightwhite

যা স্ট্যাটিক শ্রেণীর উভয় foreএবং backস্থির সাবক্লাসের সাথে ব্যবহার করা যেতে পারে cc

সম্পাদনা 2017

আমি এখানে আরও ব্যবহারিক হতে ক্লাস কোড যুক্ত করছি।

রঙ কোড ম্যাক্রো:

#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"

এবং মূল রঙের ফাংশন যা কোনও রঙ বা স্ক্রিনের একটি বৈশিষ্ট্যকে সংজ্ঞায়িত করে:

char *cc::color(int attr, int fg, int bg)
{
    static char command[13];

    /* Command is the control command to the terminal */
    sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
    return command;
}

ccolor.h

#include <stdio.h>

#define CC_CONSOLE_COLOR_DEFAULT "\033[0m"
#define CC_FORECOLOR(C) "\033[" #C "m"
#define CC_BACKCOLOR(C) "\033[" #C "m"
#define CC_ATTR(A) "\033[" #A "m"

namespace zkr
{
    class cc
    {
    public:

        class fore
        {
        public:
            static const char *black;
            static const char *blue;
            static const char *red;
            static const char *magenta;
            static const char *green;
            static const char *cyan;
            static const char *yellow;
            static const char *white;
            static const char *console;

            static const char *lightblack;
            static const char *lightblue;
            static const char *lightred;
            static const char *lightmagenta;
            static const char *lightgreen;
            static const char *lightcyan;
            static const char *lightyellow;
            static const char *lightwhite;
        };

        class back
        {
        public:
            static const char *black;
            static const char *blue;
            static const char *red;
            static const char *magenta;
            static const char *green;
            static const char *cyan;
            static const char *yellow;
            static const char *white;
            static const char *console;

            static const char *lightblack;
            static const char *lightblue;
            static const char *lightred;
            static const char *lightmagenta;
            static const char *lightgreen;
            static const char *lightcyan;
            static const char *lightyellow;
            static const char *lightwhite;
        };

        static char *color(int attr, int fg, int bg);
        static const char *console;
        static const char *underline;
        static const char *bold;
    };
}

ccolor.cpp

#include "ccolor.h"

using namespace std;

namespace zkr
{
    enum Color
    {
        Black,
        Red,
        Green,
        Yellow,
        Blue,
        Magenta,
        Cyan,
        White,
        Default = 9
    };

    enum Attributes
    {
        Reset,
        Bright,
        Dim,
        Underline,
        Blink,
        Reverse,
        Hidden
    };

    char *cc::color(int attr, int fg, int bg)
    {
        static char command[13];
        /* Command is the control command to the terminal */
        sprintf(command, "%c[%d;%d;%dm", 0x1B, attr, fg + 30, bg + 40);
        return command;
    }

    const char *cc::console = CC_CONSOLE_COLOR_DEFAULT;
    const char *cc::underline = CC_ATTR(4);
    const char *cc::bold = CC_ATTR(1);

    const char *cc::fore::black = CC_FORECOLOR(30);
    const char *cc::fore::blue = CC_FORECOLOR(34);
    const char *cc::fore::red = CC_FORECOLOR(31);
    const char *cc::fore::magenta = CC_FORECOLOR(35);
    const char *cc::fore::green = CC_FORECOLOR(92);
    const char *cc::fore::cyan = CC_FORECOLOR(36);
    const char *cc::fore::yellow = CC_FORECOLOR(33);
    const char *cc::fore::white = CC_FORECOLOR(37);
    const char *cc::fore::console = CC_FORECOLOR(39);

    const char *cc::fore::lightblack = CC_FORECOLOR(90);
    const char *cc::fore::lightblue = CC_FORECOLOR(94);
    const char *cc::fore::lightred = CC_FORECOLOR(91);
    const char *cc::fore::lightmagenta = CC_FORECOLOR(95);
    const char *cc::fore::lightgreen = CC_FORECOLOR(92);
    const char *cc::fore::lightcyan = CC_FORECOLOR(96);
    const char *cc::fore::lightyellow = CC_FORECOLOR(93);
    const char *cc::fore::lightwhite = CC_FORECOLOR(97);

    const char *cc::back::black = CC_BACKCOLOR(40);
    const char *cc::back::blue = CC_BACKCOLOR(44);
    const char *cc::back::red = CC_BACKCOLOR(41);
    const char *cc::back::magenta = CC_BACKCOLOR(45);
    const char *cc::back::green = CC_BACKCOLOR(42);
    const char *cc::back::cyan = CC_BACKCOLOR(46);
    const char *cc::back::yellow = CC_BACKCOLOR(43);
    const char *cc::back::white = CC_BACKCOLOR(47);
    const char *cc::back::console = CC_BACKCOLOR(49);

    const char *cc::back::lightblack = CC_BACKCOLOR(100);
    const char *cc::back::lightblue = CC_BACKCOLOR(104);
    const char *cc::back::lightred = CC_BACKCOLOR(101);
    const char *cc::back::lightmagenta = CC_BACKCOLOR(105);
    const char *cc::back::lightgreen = CC_BACKCOLOR(102);
    const char *cc::back::lightcyan = CC_BACKCOLOR(106);
    const char *cc::back::lightyellow = CC_BACKCOLOR(103);
    const char *cc::back::lightwhite = CC_BACKCOLOR(107);
}

2
কোডের জন্য ধন্যবাদ। সাহসী পাঠ্য প্রদর্শন করার জন্য আমি আরেকটি এএনএসআই এস্কেপ কোড যুক্ত করেছি :const char *cc::bold = CC_ATTR(1);
ড্রু নোকস

সংযোজনের জন্য ধন্যবাদ। আমি এটি ক্লাস কোডে অন্তর্ভুক্ত করেছি।
ক্রিস্টোস লাইট্রাস

9

আপনি যদি টার্মিনালটি সমর্থন করে তবে আপনি এস্কেপ সিকোয়েন্স ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

echo \[\033[32m\]Hello, \[\033[36m\]colourful \[\033[33mworld!\033[0m\]

9

গন 1332 এর শিরোনামের একটি বর্ধিত সংস্করণ:

//
//  COLORS.h
//
//  Posted by Gon1332 May 15 2015 on StackOverflow
//  /programming/2616906/how-do-i-output-coloured-text-to-a-linux-terminal#2616912
//
//  Description: An easy header file to make colored text output to terminal second nature.
//  Modified by Shades Aug. 14 2018

// PLEASE carefully read comments before using this tool, this will save you a lot of bugs that are going to be just about impossible to find.
#ifndef COLORS_h
#define COLORS_h

/* FOREGROUND */
// These codes set the actual text to the specified color
#define RESETTEXT  "\x1B[0m" // Set all colors back to normal.
#define FOREBLK  "\x1B[30m" // Black
#define FORERED  "\x1B[31m" // Red
#define FOREGRN  "\x1B[32m" // Green
#define FOREYEL  "\x1B[33m" // Yellow
#define FOREBLU  "\x1B[34m" // Blue
#define FOREMAG  "\x1B[35m" // Magenta
#define FORECYN  "\x1B[36m" // Cyan
#define FOREWHT  "\x1B[37m" // White

/* BACKGROUND */
// These codes set the background color behind the text.
#define BACKBLK "\x1B[40m"
#define BACKRED "\x1B[41m"
#define BACKGRN "\x1B[42m"
#define BACKYEL "\x1B[43m"
#define BACKBLU "\x1B[44m"
#define BACKMAG "\x1B[45m"
#define BACKCYN "\x1B[46m"
#define BACKWHT "\x1B[47m"

// These will set the text color and then set it back to normal afterwards.
#define BLK(x) FOREBLK x RESETTEXT
#define RED(x) FORERED x RESETTEXT
#define GRN(x) FOREGRN x RESETTEXT
#define YEL(x) FOREYEL x RESETTEXT
#define BLU(x) FOREBLU x RESETTEXT
#define MAG(x) FOREMAG x RESETTEXT
#define CYN(x) FORECYN x RESETTEXT
#define WHT(x) FOREWHT x RESETTEXT

// Example usage: cout << BLU("This text's color is now blue!") << endl;

// These will set the text's background color then reset it back.
#define BackBLK(x) BACKBLK x RESETTEXT
#define BackRED(x) BACKRED x RESETTEXT
#define BackGRN(x) BACKGRN x RESETTEXT
#define BackYEL(x) BACKYEL x RESETTEXT
#define BackBLU(x) BACKBLU x RESETTEXT
#define BackMAG(x) BACKMAG x RESETTEXT
#define BackCYN(x) BACKCYN x RESETTEXT
#define BackWHT(x) BACKWHT x RESETTEXT

// Example usage: cout << BACKRED(FOREBLU("I am blue text on a red background!")) << endl;

// These functions will set the background to the specified color indefinitely.
// NOTE: These do NOT call RESETTEXT afterwards. Thus, they will set the background color indefinitely until the user executes cout << RESETTEXT
// OR if a function is used that calles RESETTEXT i.e. cout << RED("Hello World!") will reset the background color since it calls RESETTEXT.
// To set text COLOR indefinitely, see SetFore functions below.
#define SetBackBLK BACKBLK
#define SetBackRED BACKRED
#define SetBackGRN BACKGRN
#define SetBackYEL BACKYEL
#define SetBackBLU BACKBLU
#define SetBackMAG BACKMAG
#define SetBackCYN BACKCYN
#define SetBackWHT BACKWHT

// Example usage: cout << SetBackRED << "This text's background and all text after it will be red until RESETTEXT is called in some way" << endl;

// These functions will set the text color until RESETTEXT is called. (See above comments)
#define SetForeBLK FOREBLK
#define SetForeRED FORERED
#define SetForeGRN FOREGRN
#define SetForeYEL FOREYEL
#define SetForeBLU FOREBLU
#define SetForeMAG FOREMAG
#define SetForeCYN FORECYN
#define SetForeWHT FOREWHT

// Example usage: cout << SetForeRED << "This text and all text after it will be red until RESETTEXT is called in some way" << endl;

#define BOLD(x) "\x1B[1m" x RESETTEXT // Embolden text then reset it.
#define BRIGHT(x) "\x1B[1m" x RESETTEXT // Brighten text then reset it. (Same as bold but is available for program clarity)
#define UNDL(x) "\x1B[4m" x RESETTEXT // Underline text then reset it.

// Example usage: cout << BOLD(BLU("I am bold blue text!")) << endl;

// These functions will embolden or underline text indefinitely until RESETTEXT is called in some way.

#define SetBOLD "\x1B[1m" // Embolden text indefinitely.
#define SetBRIGHT "\x1B[1m" // Brighten text indefinitely. (Same as bold but is available for program clarity)
#define SetUNDL "\x1B[4m" // Underline text indefinitely.

// Example usage: cout << setBOLD << "I and all text after me will be BOLD/Bright until RESETTEXT is called in some way!" << endl;

#endif /* COLORS_h */

আপনি দেখতে পাচ্ছেন, এর মধ্যে আরও ক্ষমতা রয়েছে যেমন অস্থায়ীভাবে, অনির্দিষ্টকালের জন্য এবং অন্যান্য বৈশিষ্ট্যগুলির পটভূমির রঙ সেট করার ক্ষমতা। আমি আরও বিশ্বাস করি যে এটি সমস্ত কার্যকারিতা মনে রাখা আরও খানিকটা প্রাথমিক বন্ধুত্বপূর্ণ এবং সহজ।

#include <iostream>
#include "COLORS.h"

int main() {
  std::cout << SetBackBLU << SetForeRED << endl;
  std::cout << "I am red text on a blue background! :) " << endl;
  return 0;
}

কেবল আপনার প্রকল্পের শিরোনাম ফাইলটি অন্তর্ভুক্ত করুন এবং আপনি রঙিন টার্মিনাল আউটপুট দিয়ে রক এবং রোল করতে প্রস্তুত।


3

রঙিন পাঠ্যের দ্রুত এবং সহজ পদ্ধতির জন্য আমার শিরোনামটি এখানে চেষ্টা করুন: এডির রঙ শিরোনাম


Escape-সিকোয়েন্স-রঙ-শিরোলেখ

আপনার আউটপুটটিকে ইউনিক্সে সি ++ ব্যবহার করে রঙ করুন!


পাঠ্য বৈশিষ্ট্য বিকল্পসমূহ:

ATTRIBUTES_OFF, BOLD, UNDERSCORE, BLINK, REVERSE_VIDEO, CONCEALED


রঙ বিকল্পগুলি:

BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE


বিন্যাস:

সাধারণ ফর্ম্যাট, want ভেরিয়েবল in এ আপনি চান মানটি অন্তর্ভুক্ত করুন $

COLOR_$Foreground_Color$_$Background_Color$
COLOR_$Text_Attribute$_$Foreground_Color$_$Background_Color$
COLOR_NORMAL  // To set color to default

যেমন

COLOR_BLUE_BLACK // Leave Text Attribute Blank if no Text Attribute appied
COLOR_UNDERSCORE_YELLOW_RED
COLOR_NORMAL


ব্যবহার:

আউটপুট পাঠ্যের আগে আপনি যে রঙটি চান তা কেবল স্ট্রিম করতে ব্যবহার করুন এবং পাঠ্য আউটপুট করার পরে রঙটিকে স্বাভাবিক হিসাবে সেট করতে আবার ব্যবহার করুন।

cout << COLOR_BLUE_BLACK << "TEXT" << COLOR_NORMAL << endl;
cout << COLOR_BOLD_YELLOW_CYAN << "TEXT" << COLOR_NORMAL << endl;

এটি একটি লিঙ্ক-কেবল উত্তর এবং লিঙ্কটি নিচে নামলে অকেজো হয়ে যায়। দয়া করে কিছু কোড যুক্ত করুন বা আপনার উত্তরটি বিস্তারিতভাবে বর্ণনা করুন
dgilperez

2
দুঃখিত, নবাগত এখানে ... আরও কিছু তথ্য যুক্ত করেছেন। এই কাজ ডোজ?
উডুস

@ sjm324 আমি অনুমান করি যে BLINK সমর্থিত কিনা আপনার সিস্টেমের উপর ভিত্তি করে
উডুস

3

আপনি এএনএসআই রঙ কোড ব্যবহার করতে পারেন।

এই ফাংশন ব্যবহার করুন।

enum c_color{BLACK=30,RED=31,GREEN=32,YELLOW=33,BLUE=34,MAGENTA=35,CYAN=36,WHITE=37};
enum c_decoration{NORMAL=0,BOLD=1,FAINT=2,ITALIC=3,UNDERLINE=4,RIVERCED=26,FRAMED=51};
void pr(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
  cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m";
}

void prl(const string str,c_color color,c_decoration decoration=c_decoration::NORMAL){
   cout<<"\033["<<decoration<<";"<<color<<"m"<<str<<"\033[0m"<<endl;
}

2

সেরা উপায় হ'ল এনক্রস লাইব্রেরিটি ব্যবহার করা - যদিও আপনি যদি কোনও সাধারণ রঙিন স্ট্রিং আউটপুট করতে চান তবে বাদাম ফাটানো এই স্লেজহ্যামার হতে পারে


3
@ নিক এটি প্রতিধ্বনির মাধ্যমে কিছু রঙ অর্জনের জন্য ncurses ব্যবহার করা ব্যথা হবে। :)
রিং বহনকারী

2

ওএসএক্স শেলের উপর, এটি আমার জন্য কাজ করে ("লাল পাঠ্যের" সামনে 2 স্পেস সহ):

$ printf "\e[033;31m  red text\n"
$ echo "$(tput setaf 1)  red text"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.