מבוא
אל האני echo
הפקודה מוציאה מחרוזת נתונה ל- צינור פלט סטנדרטי, בדרך כלל מצביע על הטרמינל. למרות שצינור הפלט הסטנדרטי יכול להצביע על ממשקים אחרים - ה echo
הפקודה משמשת בדרך כלל להדפסה והצגת הודעות בטרמינל. כברירת מחדל, הטקסט של ההודעה המוצגת יורש את הצבע של טקסט אחר בטרמינל (שניתן להתאמה אישית בפני עצמו). עם זאת - ישנן מספר דרכים בהן תוכל לשנות את צבע הפלט echo
– הן עבור מחרוזות בודדות והן עבור הודעות שלמות.
במדריך קצר זה, נסקור כיצד ניתן לשנות את צבע הפלט של
echo
במערכות מבוססות לינוקס, באמצעות קודי בריחה של ANSI,tput
ואיך אתה יכול להפוך את התהליך הזה לפחות מילולי בתסריטי Bash.
שנה את צבע הפלט עם קודי Escape של ANSI
הדרך הקלה ביותר לשנות את הצבע היא באמצעות רצפי בריחה/קודים של ANSI. כל קודי הבריחה של ANSI מתחילים ב- Escape
תו, שיכול להיות מיוצג בפורמטים שונים - 27
בעשרוניות, x1B
בהקסדצימלי, כמפתח הבקרה ^[
, או 33
בפורמט אוקטלי. לאחר מכן הרצף מלווה בפקודה:
33[command
איפה סוגר הפתיחה (מציג רצף בקרה) הוא אופציונלי, אבל עוזר להפריד בין הפקודה לדמות הבריחה. כאשר אתה שם א קוד צבע בתור הפקודה, זה משנה את צבע הטקסט המתקרב:
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
(טאב) בתוך מחרוזת הקלט.
לאחר הפעלת הסקריפט:
$ ./colors.sh
התוצאה היא:
קודי ה-ANSI אינם מוגבלים לצבע - אלא ניתנים ליישום גם עבור סגנון. הקודים 0..9
מייצגים סגנונות טקסט, בעוד הקודים 30...37
מייצגים צבעים:
צֶבַע | קופונים | סגנונות טקסט | קופונים |
שחור | 30 | טקסט פשוט | 0 |
Red | 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, עם שיטות עבודה מומלצות, סטנדרטים מקובלים בתעשייה ודף רמאות כלול. תפסיק לגוגל פקודות Git ולמעשה ללמוד זה!
באופן דומה, אתה יכול לשנות את צבע הרקע של טקסטים אלה באמצעות קודים 40..47
:
צֶבַע | קופונים |
שחור | 40 |
Red | 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
מאפשר גם לשנות את צבע הרקע, להוסיף מודגש, להוריד את העוצמה וכו' עם פקודות אחרות:
סגנונות טקסט | פקודות |
צבע החזית | setaf |
צבע רקע | setab |
אין סגנון | 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, לצבוט צבעי רקע וטקסט בסגנון.