לקבץ פקודות ותת מעטפת
רמת קושי: #advanced
באש מאפשרת לנו לאגוד מספר פעולות יחד ולשרשר את הפלט הסופי רק בגמר הריצה של כל הפקודות ל stdout, בכדי לעשות כך ניתן להריץ את הפקודות בתוך סוגרים / מסולסלות ואת הפלט לשרשר החוצה.
לדוגמה
הקוד הבא לא ישרשר את שני המילים לקובץ test אלא ידפיס אחד למסך ואחד לקובץ המדובר
זה לא משנה אם נשתמש בסוגריים מסולסלות או בסוגריים רגילות, בשני המקרים הפקודות ירוצו בגרופ. העניין הוא ששימוש בסוגריים רגילות הפקודות ירוצו ב
השמה בתת מעטפת
#grouping_commands
@bash_tips
רמת קושי: #advanced
באש מאפשרת לנו לאגוד מספר פעולות יחד ולשרשר את הפלט הסופי רק בגמר הריצה של כל הפקודות ל stdout, בכדי לעשות כך ניתן להריץ את הפקודות בתוך סוגרים / מסולסלות ואת הפלט לשרשר החוצה.
לדוגמה
הקוד הבא לא ישרשר את שני המילים לקובץ test אלא ידפיס אחד למסך ואחד לקובץ המדובר
$ echo first; echo second > /tmp/test
first
$ cat /tmp/test
second
במקום זאת בכדי להפנות את שני הפלטים של פקודת ה echo לקובץ אחד ניתן לתחום את הפקודות כגרופ על ידי סוגריים / מסולסלות, ורק כשהפקודות יסיימו לרוץ הפלט יועבר הלאה.$ (echo first echo second) > /tmp/test
$ cat /tmp/test
first
second
חשוב לשים לבזה לא משנה אם נשתמש בסוגריים מסולסלות או בסוגריים רגילות, בשני המקרים הפקודות ירוצו בגרופ. העניין הוא ששימוש בסוגריים רגילות הפקודות ירוצו ב
subshell
ואילו שימוש בסוגריים מסולסלות יריץ את הפקודות בshell הנוכחיהשמה בתת מעטפת
$ (a=1; b=2; c=3; echo $a-$b-$c)
1-2-3
$ echo $a-$b-$c
--
השמה במעטפת הראשית$ {a=1; b=2; c=3; echo $a-$b-$c}
1-2-3
$ echo $a-$b-$c
1-2-3
#subshell#grouping_commands
נ.ב. ימים אחרונים לאתגר ולאחר מכן אפרסם פתרון אפשרי.@bash_tips
להעביר מספר שורות לקובץ (ב)
רמת קושי: #beginners
שימוש ב echo
הדרך הקלה ביותר ליצירת קובץ היא על ידי echo, ניתן להשתמש עם מחרוזת בעלת משתנים או סתם מחרוזת בעלת גרש בודד
שימוש ב Grouping Commands
על תכונה זו דיברנו בעבר, בקצרה היא מאפשרות לאגוד מספר פקודות תחת פלט אחד, אם נרצה לכתוב תוכן לקובץ נוכל לעשות זאת בצורה הבאה
#echo
#grouping_commands
@bash_tips
רמת קושי: #beginners
שימוש ב echo
הדרך הקלה ביותר ליצירת קובץ היא על ידי echo, ניתן להשתמש עם מחרוזת בעלת משתנים או סתם מחרוזת בעלת גרש בודד
$ echo "there's no place like $HOME" > /tmp/test.txt
זה מתחיל להיראות מעט שונה כשצריך ליצור קובץ בעל כמה שורות, או לחילופין קובץ שמכיל שרשור גרשיים ומשתנים מסוגים שונים כחלק מהמחרוזת, התוכן בקוד הופך להיות פחות קריא וקל לשבור אותושימוש ב Grouping Commands
על תכונה זו דיברנו בעבר, בקצרה היא מאפשרות לאגוד מספר פקודות תחת פלט אחד, אם נרצה לכתוב תוכן לקובץ נוכל לעשות זאת בצורה הבאה
$ {
echo "first line"
echo "second line"
} > myfile.sql
אין הרבה מה לומר פרט לכך שהקוד נראה ברור נקי ויפה, וכבר לפני יצירת הקובץ קל לראות איך התוכן שלו יראה, ניתן להשתמש בקומבינציה של מחרוזות כפולי גרשיים עם משתנים ועם מחרוזות של גרש בודד, הטוב שבכל העולמות.#echo
#grouping_commands
@bash_tips