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

בערוץ הבא תמצאו אוסף טיפים שימושיים ב-Bash והכרות עם כלים שונים שעשויים לחסוך מאמץ ועבודה בכתיבת סקריפטים ומימוש אוטומציות.
Download Telegram
רצפים ופורמטים עם seq
רמת קושי: #beginners

כפי שאנו מכירים באש מאפשרת ליצור רצפים של מספרים על ידי שימוש ב Brace expansion (הביטוי שמתאר את הפעולה הבאה {10..1} ) וזה עובד יפה מאוד כשמשתמשים בזה עם מספרים
cat myscript.sh
for i in {1..10}; do
echo $i
done

$ bash myscript.sh
1
2
3
...

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

$ cat myscript.sh
start=1
end=10
for i in {$start..$end}; do
echo $i
done

$ bash myscript.sh
{1..10}

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


נעים להכיר seq
פקודה חביבה נוספת שמאפשרת ליצור רצפים היא seq, השימוש בה קל וכל שצריך הוא פשוט להעביר ערכים של התחלה וסוף ומקבלים רצף

$ cat myscript.sh
start=1
end=10
for i in $(seq $start $end); do
echo $i
done

$ bash myscript.sh
1
2
3
...

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

$ seq 0 2 20
0
2
4
6

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

$ seq -w 100
001
002
003
...
010
011
012
...
099
100


#seq
#brace_expansion

@bash_tips
Bash Tips
רצפים ופורמטים עם seq רמת קושי: #beginners כפי שאנו מכירים באש מאפשרת ליצור רצפים של מספרים על ידי שימוש ב Brace expansion (הביטוי שמתאר את הפעולה הבאה {10..1} ) וזה עובד יפה מאוד כשמשתמשים בזה עם מספרים cat myscript.sh for i in {1..10}; do echo $i…
איחוד רצפים seq
רמת קושי: #beginners

פקודת seq עליה דיברנו בעבר מאפשרת ליצור רצף של תווים
תכונה שימושית נוספת שהפקודה מכילה היא האפשרות לקבוע איזה תו יפריד בין כל תו/מילה/מספר שהיא יוצרת

דוגמה שימושית בתכונה זו היא יצירת מחרוזת לregex שבוחרת שנים בין 2016 ל 2021 מבלי להיכנס לסינטקס הלא ברור של regex

$ seq -s "|" 2016 2021
2016|2017|2018|2019|2020|2021



#seq
#regex

@bash_tips