ללמוד באש (Bash) - מבוא

בפוסט זה אנו רוצים להתמקד במבוא לשפת bash, השפה בה אנו מנהלים אינטראקציה עם המערכת דרך ממשק CLI (ר”ת: Command Line Interface - ממשק שורת פקודה).

כשאנו רוצים לנהל דברים יותר מורכבים מפתיחת הדפדפן או עריכת קובץ רייטר, אנו נשתמש בשורת הפקודה (הטרמינל - Terminal, מסוף בעברית) . כיום, רוב ממשקי שורת הפקודה בלינוקס עובדים עם שפת bash שפותחה במסגרת פרויקט GNU.

היתרונות של ידיעת שפת באש

להלן מספר יתרונות משמעותיים של מי שיודע להתנהל עם הטרמינל בלינוקס - גם במחשב ביתי (ולא שרת),

ביצועים מיטביים

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

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

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

ולכן הביצועים של המערכת הינה בהתאם, קלה, קלילה, ומובנת יותר.

גישה לכל “רזי המערכת”

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

בסיס ידע לעולם השרתים

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

לסיכום, המעלות של ידיעת ההתנהלות עם הטרמינל הם:

  1. ביצועים מיטביים,
  2. גישה לכל תצורת המערכת,
  3. בסיס ידע לעולם השרתים.

מה ניתן לעשות עם שפת באש?

התשובה היא: הכל!

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

יצירת סקריפטים בבאש

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

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

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

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

לאחר שניתחנו כל מרכיב, אנו צריכים לתרגם זאת אל שפת באש. זאת אומרת אם כשאנו חושבים ומדברים על משימה מתוזמנת במילים שלנו כבני אדם כל איש ושפתו, אז כאן אנו צריכים לתרגם את המונח לשפת באש. אנו צריכים לשאול את עצמנו: מה היא הפקודה של משימה מתוזמנת? איך קובעים משימה מתוזמנת לפעם בחודש (לדוגמא)? ולפעמים יש צורך בהרשאות - איך לוקחים הרשאות? וכך מנתחים כל פעולה ומתרגמים לפקודות ולכללים של באש.

כלים לעזרה בלימוד ותרגול באש

נפרט כמה כלים שיכולים לעזור בלימוד השפה והפקודות שלה, חוץ מחיפוש בסיסי בגוגל…

הכלי הבסיסי - הפקודה עזרה

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

ls --help

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

אתרי אינטרנט

אתר אינטרנט עם עזרה מפורטת על באש ss64.com

כמובן איך לא - AI

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

בנוסף לזה יש טרמינלים משולבים עם AI, חלק עם עזרה לפקודות ישירות לתוך השורת פקודה וחלק עם צ’אט. ניתן למנות את wave terminal (קוד פתוח וחינמי לגמרי), ואת warp terminal (דורש התחברות לחשבון אצלם, ומוגבל ל-40 בקשות ל-AI בחודש).

הערה בנוגע ל-warp terminal:

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

עורך קוד - IDE

לעבודה עם עורך קוד (IDE) בכתיבת סקריפטים יש יתרון משמעותי. החל מיצירת פרויקט מוגדר, עם תיקיות ותתי תיקיות וקבצים, אפשרות להוספת קבצי תיעוד (documentation) בפורמט Markdown, ופתיחת הטרמינל להרצת הסקריפט או בדיקת פקודה ספציפית. להלן שני עורכי קוד ידועים ומומלצים:

ויזואל סטודיו קוד (VSCode)

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

תוספים מומלצים:

  • Bash IDE
  • Shell Format

עורך הקוד פייצ’ארם (PyCharm Community Edition)

הגירסא החינמית של עורך הקוד הפופלארי PyCharm הוא תומך במגוון רחב של שפות תכנות (ולא רק פייתון). יש בו תוסף עבור סקריפטים של מעטפת (Shell Scripts) והוא תומך גם בשפת באש. התוסף בדרך כלל מגיע מובנה, ואם לא ניתן להתקין אותו בקלות וכמובן בחינם מחנות התוספים של פיצ’ארם (file > settings > plugins).

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

לסיכום,

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

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

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

ולבסוף הצענו כמה כלים ללימוד ותרגול שפת באש, החל מהפקודה “עזרה”, המשך בחיפוש ברשת, וכלה בעבודה עם עורכי קוד (IDE).

פוסטים פופולריים מהבלוג הזה

נטפרי בלינוקס

מעטפת גרפית ללינוקס