المُقدّمة
• echo
يخرج الأمر سلسلة معينة إلى أنبوب الإخراج القياسي، عادة ما يشير إلى المحطة. على الرغم من أن أنبوب الإخراج القياسي يمكن أن يشير إلى واجهات أخرى - فإن echo
عادة ما يتم استخدام الأمر لطباعة وعرض الرسائل في المحطة. بشكل افتراضي ، يرث نص الرسالة المعروضة لون النص الآخر في الجهاز (وهو قابل للتخصيص في حد ذاته). ومع ذلك - هناك عدة طرق يمكنك من خلالها تغيير لون الإخراج echo
- لكل من السلاسل الفردية والرسائل بأكملها.
في هذا الدليل المختصر ، سنلقي نظرة على كيفية تغيير لون الإخراج لـ
echo
في الأنظمة المستندة إلى Linux ، باستخدام أكواد الهروب من ANSI ،tput
وكيف يمكنك جعل هذه العملية أقل إطالة في نصوص Bash النصية.
قم بتغيير لون الإخراج باستخدام أكواد الهروب من ANSI
أسهل طريقة لتغيير اللون هي من خلال تسلسلات / أكواد هروب ANSI. تبدأ جميع رموز الهروب من ANSI بامتداد Escape
الشخصية ، والتي يمكن تمثيلها بتنسيقات مختلفة - 27
عشري x1B
بالنظام الست عشري ، كمفتاح التحكم ^[
الطرق أو 33
في شكل ثماني. ثم يتم اتباع التسلسل بواسطة الأمر:
33[command
أين قوس الافتتاح (مقدم تسلسل التحكم) اختياري ، ولكنه يساعد في فصل الأمر عن حرف الهروب. عندما تضع ملف رمز اللون كأمر ، فإنه يغير لون النص الوارد:
33[0;34
0;34
هو رمز اللون الأزرق ، على سبيل المثال. باستخدام هذا وحده ، يمكنك تغيير لون النص بتنسيق echo
مع:
33[0;34Text
في Text
سيكون ملونًا باللون الأزرق. بدلاً من ذلك ، ضع في اعتبارك برنامجًا نصيًا بسيطًا للطباعة "مرحبًا بك في فرنسا" بألوان العلم الفرنسي:
#!/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
(علامة تبويب) داخل سلسلة الإدخال.
بمجرد تشغيل البرنامج النصي:
$ ./colors.sh
أنه يؤدي إلى:
لا تقتصر رموز ANSI على اللون - ولكن يمكن أيضًا تطبيقها على النمط. الرموز 0..9
تمثل أنماط النص ، بينما الرموز 30...37
تمثل الألوان:
لون | Codes للحلول التقنية | أنماط النص | Codes للحلول التقنية |
اسود | 30 | نص بسيط | 0 |
أحمر | 31 | نص غامق | 1 |
أخضر | 32 | نص منخفض الكثافة | 2 |
بني / برتقالي | 33 | تسطير النص | 4 |
الأزرق | 34 | نص وامض | 5 |
بنفسجي | 35 | نص غير مرئي | 8 |
السماوي | 36 | نص يتوسطه خط | 9 |
رمادي فاتح | 37 |
لنقم بإنشاء برنامج نصي باش لاستكشاف بعض هذه الخيارات:
#!/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 ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!
وبالمثل ، يمكنك تغيير لون خلفية هذه النصوص باستخدام الأكواد 40..47
:
اللون | Codes للحلول التقنية |
اسود | 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
يسمح لك أيضًا بتغيير لون الخلفية ، وإضافة اللون الغامق ، وخفض الكثافة ، وما إلى ذلك باستخدام أوامر أخرى:
أنماط النص | أوامر |
لون المقدمة | سيتاف |
لون الخلفية | setab |
لا أسلوب | ملف sgv0 |
نص غامق | الخطّ الغامق |
نص منخفض الكثافة | أح |
تسطير النص | سمول |
نص وامض | وميض |
عكس النص | تزيد السرعة |
لنقم بإنشاء برنامج نصي آخر يستخدم 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
في Linux - باستخدام ANSI Escape Sequences و tput
أمر.
لقد اكتشفنا أيضًا كيف يمكنك جعل العملية أقل إطالة باستخدام متغيرات Bash وتعديل ألوان الخلفية ونص النمط.