באש

מתוך ויקיפדיה, האנציקלופדיה החופשית
(הופנה מהדף Bash)
קפיצה אל: ניווט, חיפוש
Bash
Bash demo.png
הדגמה של הרצת פקודות במעטפת Bash
מפתח
גרסה אחרונה 4.2 ב־13 בפברואר 2011
מערכת הפעלה דמויי יוניקס
רישיון GPL גרסה 2+
קטגוריה מעטפת פקודה
אתר גנו

באש (באנגלית: bash. משמעות השם היא ראשי תיבות של Bourne-again shell, כמשחק מילים על Bourne Shell. המשפט נשמע כמו "מעטפת [פקודה] שנולדה מחדש"‏[1]) היא מעטפת פקודה למערכות UNIX ומערכות דמויות יוניקס (לדוגמה: גנו/לינוקס) מאת פרויקט GNU.

המעטפת פותחה בשנת 1989 על ידי בריאן פוקס כמיזם תוכנה חופשית וכתחליף ל Bourne Shell (המוכרת בשם המקוצר sh) עבור פרויקט GNU. שם המעטפת נגזר משם המעטפת Bourne shell שהופצה לראשונה בגרסה 7 של מערכת ההפעלה UNIX בשנת 1978, שקדמה לה ונחשבה מתקדמת אך נחותה ביכולתה מ-Bash. מבחינה תחבירית, תחביר הפקודות של Bash הוא הרחבה של Bourne Shell ומציע מספר שיפורים לעומתו שביניהם: עריכת פקודות, הסרת ההגבלה על גודל הזיכרון המוקצה לשמירת היסטוריות הפקודות שבוצעו דרך המעטפת, שליטה בתהליכי משתמש (jobs), כתיבת פונקציות, יצירת קיצורי שם לפקודות מורכבות (aliases), עבודה עם מערכים ללא הגבלת גודל, ביצוע חישובים אריתמטיים מבסיס 2 עד 64, שמירה לזיכרון מחסנית של מסלולים בעץ הקבצים (מנגון pushd/popd), תמיכה במערכים אסוציאטיביים (מערכים שהגישה אליהם אינה בעזרת אינדקס מספרי; החל מגרסה 4).

ברוב מערכות גנו/לינוקס, מופצת Bash כברירת מחדל ומהווה בסיס חיוני למערכת (יחד עם כלים בסיסיים נוספים, גם כן מבית GNU). המעטפת מופצת גם עם מערכת Mac OS X מבית אפל (גם היא מערכת דמוית יוניקס, המבוססת על BSD). ניתן להריץ את המעטפת גם על מערכת ההפעלה Windows מבית מיקרוסופט בעזרת Cygwin, אך המעטפת לא מיועדת לכך.

Bash Scripting[עריכת קוד מקור | עריכה]

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

#!/bin/bash
 
#this line is just a plain comment and will be ignored by the executing shell.
if [ $# -lt 3 ] ; then
        echo "expecting at least 3 arguments for this script"
        exit 1
fi
#loop over all input arguments and print them in order
for x in $* ; do
        echo "the next argument is ${x}"
done
#loop over all input argument and print them in order
#but also shift them such that the second argument becomes the first one, etc.
while [ $# -gt 0 ] ; do
        echo "the next argument is ${1}"
        shift
done
# done, exit script with success code 0.
exit 0

שורות הערה יחלו בסימן # למעט השורה הראשונה של הקובץ המתחילה ב !# שמציינת לליבת מערכת הפעלה באיזו מעטפת יש להריץ את הפקודות המופיעות בקובץ. החלק הראשון של הסקריפט מכיל קטע התניה מהצורה if [...] ; then ... fi שבודק את מספר הארגומנטים שהועברו לסקריפט משורת הפקודה בעזרת בחינה של המשתנה השמור #$ שמציין את מספר הפרמטרים שמועברים לסקריפט. lt- הוא אופרטור השוואה המחזיר ערך אמת או שקר בהתאם לכך שהאופרנד השמאלי קטן ממש מן האופרנד הימני. במקרה הזה נבדק שנשלחו לפחות שלושה פרמטרים משורת הפקודה. במידה ואין זה כך, מבוצע גוף הקטע המותנה שבו מודפסת הודעה בחזרה למעטפת בעזרת פקודת echo ומסתיים הסקריפט בקוד שגיאה 1 בעזרת הפקודה exit 1. אם הקלט נמצא תקין, ממשיך הסקריפט לביצוע קטע לולאה מהצורה for x in list ; do ... done שבמקרה זה עובר על רשימת הפרמטרים שהועברו לסקריפט דרך שורת הפקודה (בעזרת בחינה של תוכן המשתנה השמור *$) והדפסתם למעטפת על פי סדר הופעתם. הלולאה האחרונה שנראית בדוגמה מציגה שימוש בלולאת מותנית להדפסה ובה נבחן מספר הפרמטרים על ידי גישה למשתנה השמור #$ נוכח ביצוע פקודת shift בגוף הלולאה שמבצעת הזזה של הפרמטרים שמועברים לסקריפט מימין לשמאל במקום אחד בכל פעם. בתום הסקריפט מוחזר ערך הצלחה 0 בעזרת הפקודה exit 0.

קישורים חיצוניים[עריכת קוד מקור | עריכה]

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ הסבר על Bash מתוך התיעוד של Bash