כיצד להשתמש בפקודת ההד בלינוקס

echoהפקודה היא מושלמת לכתיבת טקסט מעוצב לחלון הטרמינל. וזה לא חייב להיות טקסט סטטי. זה יכול לכלול משתני מעטפת, שמות קבצים וספריות. אתה יכול גם להפנות הד ליצירת קבצי טקסט וקבצי יומן. עקוב אחר המדריך הפשוט הזה כדי לגלות כיצד.

הד חוזר על מה שאתה אומר לו לחזור עליו

זאוס אהב לעזוב את הר האולימפוס להתגורר עם נימפות יפות. בטיול אחד הוא אמר לנימפת הרים שקראה לאקו להטיל את אשתו הרה אם תלך אחריו. הרה אכן באה לחפש את זאוס, והד עשתה כל שביכולתה כדי לשמור על הרה בשיחה. לבסוף, הרה איבדה את העשתונות וקיללה את הד המסכן, כך שהיא תחזור רק על המילים האחרונות שמישהו אחר אמר. מה שהרה עשתה לזאוס כשהיא הדביקה אותו הוא ניחוש של מישהו.

וזה, פחות או יותר, זה echoהמון בחיים. זה חוזר על מה שנאמר לחזור עליו. זו פונקציה פשוטה, אך חיונית. בלי echo, לא נוכל להשיג פלט גלוי מסקריפטים של מעטפת, למשל.

אמנם לא עמוס בהמון פעמונים ושריקות, אבל יש סיכוי טוב שיש echoלו כמה יכולות שלא ידעתם עליהם או ששכחתם.

הֵד? הֵד!

מרבית מערכות הלינוקס מספקות שתי גרסאות של echo. לקליפת ה- Bash echoמובנית משלה , ויש גם גרסת הפעלה בינארית echo.

אנו יכולים לראות את שתי הגרסאות השונות באמצעות הפקודות הבאות:

סוג הד
איפה ההד

typeפקוד אומרת לנו אם פקוד שאנחנו עוברים אליה כאל הטיעון שלה היא מובנה פגז, הפעלה בינארי כינוי, או פונקציה. הוא מדווח לנו echoשהוא מעטפת מובנית.

ברגע שהוא מצא תשובה, typeמפסיק לחפש התאמות נוספות. אז זה לא אומר לנו אם קיימות במערכת פקודות אחרות עם אותו שם. אבל זה אומר לנו איזה הוא מוצא קודם. וזה זה שישמש כברירת מחדל כאשר אנו מוציאים פקודה זו.

whereisנראה הפקודה עבור הפעלה בינארי קוד המקור, ועמוד אדם עבור הפקודה שאנו עוברים אליו כפרמטר של שורת הפקודה שלו. זה לא מחפש buildins מעטפת כי אין להם הפעלה בינארית נפרדת. הם חלק בלתי נפרד מההפעלה של Bash.

whereisהדוחות פקוד כי echoהוא בינארי ולהפעיל ממוקמת /binהספרייה.

כדי להשתמש בגרסה echoזו עליך להתקשר אליה במפורש על ידי מתן הנתיב להפעלה בשורת הפקודה:

/ bin / echo --version

המעטפת המובנית אינה יודעת מהו --versionהטיעון של שורת הפקודה, אלא רק חוזרת עליו בחלון המסוף:

הד - גרסה

הדוגמאות המוצגות כאן כולן משתמשות בגרסת ברירת המחדל של echo, במעטפת Bash.

כתיבת טקסט למסוף

כדי לכתוב מחרוזת טקסט פשוטה לחלון המסוף, הקלד echoאת המחרוזת שברצונך להציג:

הד שמי דייב.

הטקסט חוזר עלינו. אבל כשאתה מתנסה, בקרוב תגלה שהדברים יכולים להסתבך מעט יותר. עיין בדוגמה זו:

הד שמי דייב ואני חנון.

חלון המסוף מציג   > שלט ויושב שם ומחכה. Ctrl + C יחזיר אותך לשורת הפקודה. מה קרה שם?

הציטוט היחיד או האפרופרוף במילה "אני" מבולבלים echo. זה פירש את הציטוט היחיד ההתחלה של קטע טקסט מצוטט. מכיוון שהוא לא זיהה הצעת מחיר סגורה אחת,  echoחיכה לקלט נוסף. היא ציפתה כי קלט נוסף יכלול את הצעת המחיר היחידה שחסרה לה.

כדי לכלול ציטוט יחיד במחרוזת, הפיתרון הפשוט ביותר הוא לעטוף את כל המחרוזת בתוך מרכאות כפולות:

הד "שמי דייב ואני חנון."

עטיפת הטקסט שלך במרכאות כפולות היא עצה כללית טובה. בתסריטים זה תוחם את הפרמטרים שאליהם אתה מעביר echo. זה מקל על קריאת סקריפטים וניקוי באגים.

מה אם ברצונך לכלול תו ציטוט כפול במחרוזת הטקסט שלך? זה קל, פשוט הניחו קו נטוי אחורי \מול סימן הציטוט הכפול (ללא רווח ביניהם).

הד "שמי דייב ואני \" חנון. \ ""

זה עוטף את המילה "חנון" במרכאות כפולות עבורנו. נראה עוד מעט מהדמויות האלה שנמלטו ממתלה.

שימוש במשתנים עם הד

עד כה כתבנו טקסט מוגדר מראש לחלון המסוף. אנו יכולים להשתמש במשתנים echoכדי לייצר פלט דינמי יותר ובו המעטפת מוכנסים ערכים עבורנו. אנו יכולים להגדיר משתנה פשוט בעזרת פקודה זו:

my_name = "דייב"

נוצר משתנה שנקרא my_name. הוקצה לו ערך הטקסט "דייב". אנו יכולים להשתמש בשם המשתנה במיתרים שאנו מעבירים אליהם echo , וערך המשתנה ייכתב לחלון המסוף. עליך לשים סימן דולר $מול שם המשתנה כדי ליידע echoשהוא משתנה.

יש אזהרה. אם עטפתם את המיתרים שלכם במרכאות בודדות echo , תתייחסו לכל דבר באופן מילולי. כדי להציג את ערך המשתנה , ולא את שם המשתנה, השתמש במרכאות כפולות.

הד 'שמי $ my_name'
הד "שמי $ my_name"

באופן מתאים למדי, כדאי לחזור על כך:

  • שימוש בסימני מרכאות בודדים מביא לכתיבת הטקסט באופן חלופי באופן מילולי .
  • שימוש  כפול תוצאות מרכאות בתוך ההוויה משתנית-גם לפרש שנקרא הרחבה-ו המשתנית הערך כתוב לחלון הטרמינל.

קשורים: כיצד לעבוד עם משתנים ב- Bash

שימוש בפקודות עם הד

אנו יכולים להשתמש בפקודה echoולשלב את הפלט שלה במחרוזת שנכתבת לחלון המסוף. עלינו להשתמש בסימן הדולר $כאילו הפקודה הייתה משתנה ולעטוף את כל הפקודה בסוגריים.

אנו נשתמש בפקודה תאריך. טיפ אחד הוא להשתמש בפקודה בפני עצמה לפני שתתחיל להשתמש בה איתו echo. בדרך זו, אם יש משהו לא בסדר בתחביר הפקודה שלך, אתה מזהה אותו ומתקן אותו לפני שתכלול אותו echoבפקודה. ואז, אם echoהפקודה לא עושה את מה שאתה מצפה, תדע שהבעיה חייבת להיות echoבתחביר מכיוון שכבר הוכחת את תחביר הפקודה.

אז נסה זאת בחלון המסוף:

תאריך +% ד

ושבע רצון שאנו מקבלים את מה שאנחנו מצפים מפקודת התאריך, נשלב אותו echoבפקודה:

הד "התאריך של היום הוא: $ (תאריך +% D)"

שימו לב שהפקודה נמצאת בסוגריים וסימן הדולר $ נמצא מיד לפני הסוגריים הראשונים.

עיצוב טקסט עם הד

האפשרות -e(אפשר בריחה מקו נטוי) מאפשרת לנו להשתמש בתווים מסוימים שנמלטו מקו אחורי כדי לשנות את פריסת הטקסט. אלה הדמויות שנמלטו מסטייה שאנו יכולים להשתמש בהן:

  • \ a : התראה (המכונה היסטורית BEL). זה מייצר את צליל ההתראה המוגדר כברירת מחדל.
  • \ b : כותב תו אחורי.
  • \ c : נוטש כל תפוקה נוספת.
  • \ e : כותב דמות בריחה.
  • \ f : כותב תו להזנת טפסים.
  • \ n : כותב שורה חדשה.
  • \ r : כותב מעבר לשורה חדשה.
  • \ t : כותב לשונית אופקית.
  • \ v : כותב לשונית אנכית.
  • \\ : כותב דמות קו נטוי.

בואו נשתמש בכמה מהם ונראה מה הם עושים.

הד -e "זו שורה ארוכה של טקסט \ n פיצול על פני שלוש שורות \ n עם \ ttabs \ ton \ t \ tthird \ tline"

הטקסט מחולק לשורה חדשה שבה השתמשנו \nבתווים ומוחלפת לשונית שבה השתמשנו \tבתווים.

הד - e "כאן \ vare \ vvertical \ vtabs"

כמו \nתווי השורה החדשים, גם לשונית אנכית \vמעבירה את הטקסט לשורה שמתחת. אך בניגוד  \n לתווי השורה החדשה, \vהכרטיסייה האנכית אינה מתחילה את השורה החדשה בעמודה אפס. הוא משתמש בעמודה הנוכחית.

\bתווי backspace להזיז את הסמן בחזרה תו אחד. אם יש לכתוב טקסט נוסף למסוף, הטקסט הזה יחליף את התו הקודם.

הד -e "123 \ b4"

את "3" כותב יתר על המידה על ידי ה" 4 ".

\rהאופי לשורה החדש גורם  echoלחזרה לתחילת השורה הנוכחית וכדי לכתוב כל טקסט נוסף מעמודה אפס.

הד -e "123 \ r456"

התווים "123" מוחלפים על ידי התווים "456".

\aהאופי הערני ייצר "בליפ". נשמע הוא משתמש בצליל ההתראה המוגדר כברירת מחדל לנושא הנוכחי שלך.

הד - e "עשה צלצול \ a"

האפשרות -n(ללא קו חדש) אינה רצף שנמלט מקו-נטוי, אך היא משפיעה על מוצרי הקוסמטיקה של פריסת הטקסט, ולכן נדון בה כאן. זה מונע echoלהוסיף שורה חדשה לסוף הטקסט. שורת הפקודה מופיעה ישירות אחרי הטקסט שנכתב לחלון המסוף.

הד - n "אין שורה חדשה סופית"

שימוש בהד עם קבצים וספריות

אתה יכול להשתמש echoבו כמעין גרסה של איש עני ls. האפשרויות שלך מעטות כאשר אתה משתמש echoככה. אם אתה זקוק לנאמנות או שליטה כלשהי, עדיף לך להשתמש lsבלגיון האפשרויות שלה.

פקודה זו מפרטת את כל הקבצים והספריות בספריה הנוכחית:

הד *

פקודה זו מפרטת את כל הקבצים והספריות בספריה הנוכחית ששמה מתחיל ב- "D":

הד D *

פקודה זו מפרטת את כל קבצי ". Desktop" בספריה הנוכחית:

הד * .שולחן העבודה

כֵּן. זה לא משחק echoלנקודות החוזק. השתמש ls.

כתיבה לקבצים בהד

אנו יכולים להפנות את הפלט ממנו echoוליצור קובצי טקסט או לכתוב לקובצי טקסט קיימים.

אם אנו משתמשים >באופרטור ההפניה, הקובץ נוצר אם הוא לא קיים. אם הקובץ אכן קיים, הפלט ממנו echoמתווסף בתחילת הקובץ, ומחליף כל תוכן קודם.

אם אנו משתמשים >>באופרטור ההפניה, הקובץ נוצר אם הוא לא קיים. הפלט מ- echoנוסף לסוף הקובץ ולא מחליף שום תוכן קיים בקובץ.

הד "יצירת קובץ חדש." > sample.txt
הד "הוספה לקובץ." >> sample.txt
sample.txt של חתול

קובץ חדש נוצר על ידי הפקודה הראשונה, וטקסט מוכנס אליו. הפקודה השנייה מוסיפה שורה של טקסט לתחתית הקובץ. catהפקודה מציג את התוכן של הקובץ לחלון הטרמינל.

וכמובן, אנו יכולים לכלול משתנים כדי להוסיף מידע שימושי לקובץ שלנו. אם הקובץ הוא קובץ יומן, ייתכן שנרצה להוסיף לו חותמת זמן. אנו יכולים לעשות זאת באמצעות הפקודה הבאה.

שימו לב לציוני הציטוט הבודדים סביב הפרמטרים dateלפקודה. הם מונעים את הרווח בין הפרמטרים להתפרש כסוף רשימת הפרמטרים. הם מבטיחים שהפרמטרים מועברים  date נכון.

הד "יומן הרישום התחיל: $ (תאריך + '% D% T')"> logfile.txt
חתול logfile.txt

תיק היומן שלנו נוצר עבורנו catומראה לנו כי חותמת התאריך וחותמת הזמן נוספו אליו.

קשורים: מה הם stdin, stdout ו- stderr ב- Linux?

זה הרפרטואר של הד

פקודה פשוטה, אך הכרחית. אם זה לא היה קיים, היינו צריכים להמציא את זה.

השאנניגנים של זאוס עשו טוב.