Bash Tips

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

בערוץ הבא תמצאו אוסף טיפים שימושיים ב-Bash והכרות עם כלים שונים שעשויים לחסוך מאמץ ועבודה בכתיבת סקריפטים ומימוש אוטומציות.
Advertising
We recommend to visit

דניאל עמרם ללא צנזורה בטלגרם
דניאל עמרם ללא צנזורה

לפניות
וואצפ: wa.me/12017438674
טלגרם: @danielamram1


טוויטר: twitter.com/danielamram3
אינסטגרם: instagram.com/danielamram6
טיקטוק: tiktok.com/@danielamram22
דיסקורד: https://discord.gg/6QqSm3hX2d

Last updated 1 month ago

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

Last updated 3 months, 3 weeks ago

הערוץ הרשמי☑️ Official Channel

ברוכים הבאים פה תקבלו את כל מה שקורה בארץ ובעולם🌏 ללא👁️⁩צנזורה - מיטב התיעודים הכי מעניינים שיש ברשת.

לשיתוף תכנים⬅️ @tzenzora1

👉 t.me//tzenzora 👈 שתפו

היזהרו מחיקויים❗️

#ללאצנזורה

Last updated 2 weeks, 6 days ago

1 year, 9 months ago

Today I learned:

ls \-\-hyperlink

1 year, 10 months ago

# יצירת סיסמאות משורת הפקודה עם pwgen
אחד הכפתורים שהכי אהבתי ב lastpass ודי חסר לי ב 1Password היה כפתור Generate Password. נכון, גם 1Password מג'נרט אוטומטית סיסמאות בטפסי רישום לאתרים, אבל הרבה פעמים בבדיקות אני צריך סיסמה אקראית שלא תישמר בכספת הסיסמאות. וכאן pwgen יכולה לעזור.

בהפעלה רגילה pwgen מדפיסה המון סיסמאות אקראיות למסך:

```
$ pwgen

cahhoh2G oofah7Wo Kain5pha eeKue9th Shieng9i ail5Mai3 ahgh1Woh uuQuu2oh
IVahg0ro Ahju2tah Zuox3laS ual3Iece Ohx7ua2e ib2riyoG UuYie9Oh eicuc7Ib
loh5ja7T Nen9biTh Zee5vaiw ies6AoBo eGheip3m eiyeeNg9 Aish1ohn eM6isees
oR7Zeam4 ithang7O Aing4hah eeNae6Ro ahRashi2 xo2eiVie Eew4ohp8 uusaeCh0
chaic0Vu eu2phaeJ oFee7ei8 zohBu4xe mu9iTeik oow0Ia7e Noothah5 yuuph2Ie
keiFair2 Chutoh1i ji9Quei5 OoX5Ophe yay3AeNo Ahoong3C keeS5Eih Ohbaivi4
pheiPh1A aaloof4B ahsoMai6 they7Xoo IeN1aiqu eoGhai7e ahLaqu9u EiGh3ook
kooCh3ah niGieb7E Chohpai9 uibi2Lah Aiqueiz9 the7ua1T fooS2Ohl Cha9aene
aeT9ahzi teeG8axa the9Wahy WooT0eis tieW5yoh aiYeip1l eTh0iewu azucew3A
oofoKu6h Wievei4c xoo0Quae Lah7Nue0 ieZ8ahqu Oi1ahjee OoW6eeZ3 yei1fi7A
ohb9phuN Gee5see4 eeD5jaik Figha4oo Jet2uo6e Eir9re3i OhDohk9e Yai8ahsu
Ahjaev2i ea8ohJ0e yeiHai4i Cev4Wuuh sheih9Hi akeiZa8t Aic3ahro zoo2AeCa
Ohgoong0 Bouhoo5a wai7Eih0 ZooP7eif ba5eiy3R eewooCh7 Aga2ueZ1 aiT8Shah
Aethee0h Eir9cieg Wo6zoodi iV6idohv Iezei7am chaeR5uf Ooree0ie aequa5Wi
Eeyu8uiF aibac7Li fee4Ahpe HooGo1ei pahng4Ah ohXuo9tu Eeseew0u aefes4Ph
Ea8ohnie kiyaiTh9 Lai9eifu aib4eeSa ua8aaM2o Tied3tee Lo5sooVo Ieshaiw4
pe3Aib4j HiujeeX2 teiJu0Ni geeSh7hi ieNg4oov Ua9ma1oC ahpieC9k Peit0Eih
ab9Raelo jahC6eix QuahG6to aeL7iera ze5OP9Ie uoBai7ob MohK8Ohm Ahr2eemi
loh8iGhu Iu3ahwie uDa4ia8j Quoh4iek aQu6ith0 Ahs5jaiy uech4aiS eodai7Ah
kei4Noox quooy0Ae ohnais7A jeech9Ae ob8ehaeN die4Ahth Ahg8jah3 Aishe8Yi

```

אם הפלט אינו tty אז תיוצר רק סיסמה אחת, וכמו עם ls גם פה אפשר להעביר \-1 כדי לקבל את אותה התנהגות:

```
$ pwgen | cat
zo3gi3Ie

$ pwgen -1
shaiPoo2

```

יש מתגים שמאפשרים להפוך את הסיסמאות ליותר בטוחות, למשל המתג \-y שמוסיף תווים מיוחדים ו \-s שהופך את הסיסמה ליותר מסובכת לבני אדם. ואפשר גם לצרף מספר בסוף כדי לספר כמה תווים אתם רוצים:

```
$ pwgen -s -1 -y 30
bPcAig)mVL|\_hMpib|f.=?7$o^RQ|

```

חוץ מיצירת סיסמאות אפשר להשתמש ב pwgen כדי ליצור בעצם כל מחרוזת שאתם צריכים לבדיקות. לדוגמה אם אתם צריכים 10 כתובות אימייל שנראות אקראיות תוכלו לכתוב:

```
$ pwgen 10 10 | sed 's/$/@test.com/'
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

```

או הסקריפט הקצר הבא שמדפיס 10 משתמשים אקראיים ל JSON כאשר כל משתמש מקבל מזהה, שם ואימייל אקראיים:

echo "[" for i in {1..10}; do id=$(pwgen \-1 10) name=$(pwgen \-s 2 1) email="${name:l}.${id}@example.com" if [ $i \-eq 10 ]; then echo "{\"id\":\"$id\",\"name\":\"$name\",\"email\":\"$email\"}" else echo "{\"id\":\"$id\",\"name\":\"$name\",\"email\":\"$email\"}," fi done echo "]"

2 years, 2 months ago

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

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

```
mkdir foo
touch foo/bar
cp /etc/passwd foo

```

אז אני יכול אחרי זה לכתוב:

```
fc -l mkdir cp

```

ולקבל את רשימת כל הפקודות מ mkdir עד cp כולל:

```
544 mkdir foo
545 touch foo/bar
546 cp /etc/passwd foo

```

מה שיותר מדליק קורה אם אני מוותר על ה \-l, ואז fc פותח את הרשימה בתוך עורך טקסט, מאפשר לי לשנות את הפקודות ובסוף מריץ את כולן. בדוגמה שלנו אני מוותר על ה \-l ומקבל את כל הרשימה בעורך טקסט, משנה כל מופע של foo ל bar ומקבל את הקובץ:

```
mkdir bar
touch bar/bar
cp /etc/passwd bar

```

שומר ויוצא וכך יצרתי את תיקיית bar בדיוק כמו שיצרתי קודם את תיקיית foo.

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

2 years, 2 months ago

ליצור היסטוריה touch
רמת קושי: #beginners

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

מה שאנו צריכים זה כלי שיאפשר לנו ליצור קובץ כאילו הקובץ נוצר כבר לפני שבוע ועליו לבצע את הניסיונות והפעולות שלנו

פקודת touch מאפשרת לנו ליצור קבצים

$ touch newfile

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

$ touch newfile \-t 01012022 $ ls \-la ... \-rw\-rw\-r\-\- 1 bash_tips bash_tips 0 Jan 1 2022

כפי שניתן לראות זמן היצירה של הקובץ הוא מ01.01.2022

אחלה מעולה הכל עובד מושלם בקשר לקבצים, מה בקשר לתיקיות?

גם כאן פקודת touch באה לעזרנו למרות שהיא עובדת בעיקר על קבצים, אם ניצור תיקייה ו"ניגע" בה עם פקודת touch נוכל לשנות לה את
תאריך היצירה של התיקיה
ה mtime (התאריך האחרון בו הקובץ השתנה)
או ה atime (התאריך האחרון שמישהו ניגש לקובץ)

`$ mkdir newdir
$ ls -l
...
drwxrwxr-x 2 bash_tips bash_tips 4096 Oct 31 21:11 newdir

$ touch newdir -t 01012022
$ ls -l
...
drwxrwxr-x 2 bash_tips bash_tips 4096 Jan 1 2022 newdir`

#touch

@bash_tips

2 years, 6 months ago

ניקיון historyרמת קושי: #beginners

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

בשביל לנקות את כל ההיסטוריה של באש ישנן 2 דרכים

echo >| ~/.bash_history

או פשוט

history -c

בכדי להסיר שורות ספציפיות ניתן להריץ את פקודת history עם דגל -d

history -d 1988

או אפילו להסיר טווח של פקודות מההיסטוריה

history -d 1988-1999

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

שיוט! מחקתי את ההיסטוריה

#history

@bash_tips

2 years, 7 months ago

לקבל את כל הפרמטרים עם *! בעבר כתבתי על שימוש ב $! כדי להעביר את הפרמטר האחרון שהשתמשתי בו בפקודה מסוימת לפקודה חדשה. הבעיה מתחילה כשיש רשימה של פרמטרים במידה ונריץ $! נקבל רק את הפרמטר האחרון ולא את כל רשימת הקבצים שהזנו $ touch app.js index.html internal.css…

2 years, 7 months ago

לסדר ולהשוות כמו בן אדם sortרמת קושי: #beginners

פקודות sort היא מהפקודות השימושיות ביותר
הפקודה מקבלת מספר שורות ומסדרת אותם כך שהפלט יוצג מהערך הקטן לערך הגדול
שימוש בסיסי בפקודה

$ { echo 2 echo 3 echo 0 } | sortוהפלט

0 2 3להלן 2 דברים חביבים ממש שהפקודה מאפשרת

פילטור בשפה של בני אדםלפלטר לפי מספרים או אותיות זה קל, מה קורה אם רוצים לפלטר מידע שמבוסס על נפח של קובץ / מקום?
בדומה לפקודות אחרות שימוש בדגל -h יאפשר לפלטר תוכן שמבוסס על נפח כמו K M G T P וכו' (aka human-readable)

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

$ du \-h | sort \-hפילטור לפי עמודותבמידה והפלט אותו אנו רוצים לפלטר הוא טבלה אבל אנו רוצים לפלטר רק לפי עמודה מסויימת נוכל להריץ את הפקודה עם דגל -k ומספר העמודה לפיה נרצה לפלטר

$ df \-h | sort \-hk2לצורך הדוגמה הסרתי את שאר הטבלה אך כעת ניתן לראות שהתוכן של פקודת df יוצג לנו מפולטר על פי העמודה השניה היא עמודת Size

Size 497M 2.7G 14G 86G 200Gלמה זה חביב ממש?
כי כרגע ניתן ליצור פונקציית השוואה לפי משקל קובץ, מבלי להמיר את הערכים למספרים אלא פשוט להשוות 3M < 9G, אכן לא ככה כותבים קוד אבל היי, זה עובד.

#sort
#human_readable

@bash_tips

2 years, 7 months ago

לעשות פיל מזבוב fallocateרמת קושי: #advanced

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

```
$ fallocate -l 500G fill_half_disk.img

```
בכדי ליצור קובץ בגודל מסויים אנו משתמשים בדגל -l ומעבירים לו ערך בפורמט K M G וכו' כש 50G הם בעצם 50 ג'יגה בייט

```
$ du -h fill_half_disk.img
500.1G fill_half_disk.img

```
#disk
#fallocate

@bash_tips

2 years, 7 months ago

אוטומציה ל telnet
רמת קושי: #advanced

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

```
$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 My Mail Server

`` התחברנו לשרת ה SMTP דרך telnet ומשלב זה שורת הפקודה (עדיןtelnet) ממתינה שנשלח פקודות לשירות אליו התחברנו, במקרה שלנו פקודות לשירות SMTP עד שנעביר את הפקודהquit` שתסגור את החיבור.

נשמע מקסים, איפה הבעיה?הבעיה בכל הסיפור הזה היא ששורת הפקודה שאנו מקבלים היא אינטרקטיבית וזה דיי לא נוח להקליד פעם אחר פעם את הפקודות ל telnet, לכן הדבר אליו אנו שואפים הוא לעשות אוטומציה או לכתוב סקריפט שיריץ את התוכן בשבילנו ב telnetיש 2 דרכים עיקריים לביצוע אוטומציה ל telnet
הראשונה היא על ידי כלי אוטומציה של באש בשם expect עליו לא נדבר היום
האופציה השניה היא על ידי העברת ערכים ל stdin של telnet
```
echo "ehlo test" | telnet localhost 25

להלן דוגמה לסקריפט ששולח מייל על ידי `telnet`
{
echo "ehlo test"
sleep 1
echo "mail from:[email protected]"
echo "rcpt to:[email protected]"
echo "data"
sleep 1
echo "subject: bla bla bla"
echo "more bla bla bla"
echo "."
sleep 1
echo "quit"
} | telnet localhost 25

`` בדוגמה אנו משתמשים ביכולת group command של באש כדי לחסוך כתיבה של תווי \n שנדרשים לtelnet`.
כפי שניתן לראות הקוד משתמש ב sleep כדי לצלוח את המשימה, מאחר וכל הקוד מגיע כבלוק אחד של טקסט נדרש לשירות זמן להגיב לפקודות אותם הוא קיבל

#telnet
#scripting

@bash_tips

We recommend to visit

דניאל עמרם ללא צנזורה בטלגרם
דניאל עמרם ללא צנזורה

לפניות
וואצפ: wa.me/12017438674
טלגרם: @danielamram1


טוויטר: twitter.com/danielamram3
אינסטגרם: instagram.com/danielamram6
טיקטוק: tiktok.com/@danielamram22
דיסקורד: https://discord.gg/6QqSm3hX2d

Last updated 1 month ago

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

Last updated 3 months, 3 weeks ago

הערוץ הרשמי☑️ Official Channel

ברוכים הבאים פה תקבלו את כל מה שקורה בארץ ובעולם🌏 ללא👁️⁩צנזורה - מיטב התיעודים הכי מעניינים שיש ברשת.

לשיתוף תכנים⬅️ @tzenzora1

👉 t.me//tzenzora 👈 שתפו

היזהרו מחיקויים❗️

#ללאצנזורה

Last updated 2 weeks, 6 days ago