Bash Tips
977 subscribers
14 photos
4 files
45 links
רוצים להשתמש בלינוקס אבל לא ממש מכירים את הכלים שהיא מספקת לעבודה?

בערוץ הבא תמצאו אוסף טיפים שימושיים ב-Bash והכרות עם כלים שונים שעשויים לחסוך מאמץ ועבודה בכתיבת סקריפטים ומימוש אוטומציות.
Download Telegram
לקבץ פקודות ותת מעטפת
רמת קושי: #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, ניתן להשתמש עם מחרוזת בעלת משתנים או סתם מחרוזת בעלת גרש בודד

$ 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