معرفی
La echo
فرمان یک رشته داده شده را به خروجی می دهد لوله خروجی استاندارد، معمولاً به ترمینال اشاره می کند. اگرچه لوله خروجی استاندارد می تواند به رابط های دیگر اشاره کند - echo
دستور معمولا برای چاپ و نمایش پیام ها در ترمینال استفاده می شود. به طور پیش فرض، متن پیام نمایش داده شده رنگ متن دیگر را در ترمینال به ارث می برد (که به خودی خود قابل تنظیم است). با این حال - راه های مختلفی وجود دارد که می توانید رنگ خروجی را تغییر دهید echo
- هم برای رشته های فردی و هم برای کل پیام ها.
در این راهنمای کوتاه، نحوه تغییر رنگ خروجی را بررسی خواهیم کرد
echo
در سیستم های مبتنی بر لینوکس، با استفاده از کدهای فرار ANSI،tput
و چگونه می توانید این فرآیند را در اسکریپت های Bash کمتر پرمخاطب کنید.
رنگ خروجی را با کدهای فرار ANSI تغییر دهید
ساده ترین راه برای تغییر رنگ از طریق دنباله ها/کدهای فرار ANSI است. همه کدهای فرار ANSI با علامت شروع می شوند Escape
کاراکتر، که می تواند در قالب های مختلف نمایش داده شود - 27
به صورت اعشاری، x1B
در هگزادسیمال، به عنوان کلید کنترل ^[
، یا 33
در قالب اکتال سپس دنباله ها با دستور زیر دنبال می شوند:
33[command
جایی که براکت باز (معرفی کننده توالی کنترل) اختیاری است، اما به جداسازی دستور از کاراکتر escape کمک می کند. هنگامی که شما یک کد رنگ به عنوان دستور، رنگ متن روبرو را تغییر می دهد:
33[0;34
0;34
برای مثال کد رنگ آبی است. تنها با این کار می توانید رنگ متن را تغییر دهید echo
با:
33[0;34Text
جایی که Text
آبی رنگ خواهد شد روش دیگر، یک اسکریپت bash ساده را برای چاپ در نظر بگیرید "به فرانسه خوش آمدید" در رنگ های پرچم فرانسه:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
اختیاری -e
پرچم از echo
دستور به شما امکان می دهد از کاراکترهای خاصی مانند n
(خط جدید) و t
(tab) در داخل رشته ورودی.
پس از اجرای اسکریپت:
$ ./colors.sh
نتیجه می دهد:
کدهای ANSI به رنگ محدود نمی شوند - بلکه می توانند برای استایل نیز اعمال شوند. کدها 0..9
نشان دهنده سبک های متن، در حالی که کدها 30...37
رنگ ها را نشان می دهد:
رنگ | کد | سبک های متن | کد |
سیاه پوست | 30 | متن ساده | 0 |
قرمز | 31 | متن پررنگ | 1 |
سبز | 32 | متن با شدت کم | 2 |
قهوه ای/نارنجی | 33 | زیر متن خط بکش | 4 |
آبی | 34 | متن چشمک زن | 5 |
رنگ بنفش | 35 | متن نامرئی | 8 |
فیروزه ای | 36 | متن خط خورده | 9 |
خاکستری روشن | 37 |
بیایید یک اسکریپت bash برای بررسی برخی از این گزینه ها ایجاد کنیم:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
اجرای این اسکریپت به این نتیجه می رسد:
راهنمای عملی و عملی ما برای یادگیری Git را با بهترین روش ها، استانداردهای پذیرفته شده در صنعت و برگه تقلب شامل بررسی کنید. دستورات Google Git را متوقف کنید و در واقع یاد گرفتن آی تی!
به همین ترتیب، می توانید رنگ پس زمینه این متون را با استفاده از کدها تغییر دهید 40..47
:
رنگ | کد |
سیاه پوست | 40 |
قرمز | 41 |
سبز | 42 |
قهوه ای/نارنجی | 43 |
آبی | 44 |
رنگ بنفش | 45 |
فیروزه ای | 46 |
خاکستری روشن | 47 |
تغییر پسزمینه یک رشته داده شده به همان قاعدهای خلاصه میشود که هنگام تغییر رنگ فونت - خود کد رفتار را تغییر میدهد:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
توجه داشته باشید: به عنوان یک قاعده کلی - می توانید رنگ فونت را با اضافه کردن 10 به رنگ های پس زمینه ترجمه کنید. 30
رنگ فونت سیاه است، 40
رنگ زمینه مشکی است
رنگ خروجی را با tput تغییر دهید
یک جایگزین برای کدهای ANSI استفاده از tput
فرمان:
$ tput setaf color_code
setf
اجازه می دهد تا برای 8 رنگ، در حالی که setaf
اجازه 256 رنگ را می دهد، بنابراین بسته به دستوری که استفاده می کنید، می توانید بین آن ها حرکت کنید 0..7
و 0..255
به عنوان کدهای رنگ هر دو دستورات اختصاص می دهد 0..7
به کدهای رنگی مشابه، در حالی که با setaf
, 8..15
رنگ های با شدت بالا هستند و 16..231
رنگ های مختلف 8 اول هستند و 232..255
رنگ های خاکستری هستند:
اعتبار: ویکیپدیا
در نهایت، tput
همچنین به شما امکان می دهد رنگ پس زمینه را تغییر دهید، پررنگ اضافه کنید، شدت را کاهش دهید و غیره با دستورات دیگر:
سبک های متن | دستورات |
رنگ پیش زمینه | ستاف |
رنگ پس زمینه | تنظیم |
بدون سبک | sgv0 |
متن پررنگ | جسور |
متن با شدت کم | خورشید |
زیر متن خط بکش | smul |
متن چشمک زن | چشمک زدن |
متن معکوس | احیای |
بیایید اسکریپت دیگری ایجاد کنیم که از آن استفاده می کند tput
برای تغییر رنگ خروجی echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
این اسکریپت خروجی زیر را در ترمینال چاپ می کند:
دستور tput راهی آسان برای چاپ هر رنگی از طریق یک کد رنگی ساده ارائه می دهد. بیایید اکنون یک اسکریپت ایجاد کنیم که بتواند هر کد رنگی موجود برای دستور tput را چاپ کند:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
0 تا 255 رنگ و کدهای آنها را چاپ می کند:
نتیجه
در این راهنمای کوتاه - ما نگاهی به نحوه تغییر رنگ آن انداختهایم echo
خروجی در لینوکس – با استفاده از ANSI Escape Sequences و tput
فرمان
ما همچنین بررسی کردهایم که چگونه میتوانید با استفاده از متغیرهای Bash، تغییر رنگهای پسزمینه و متن سبک، فرآیند را کمتر پیچیده کنید.