1.3 אז מה זה באש הרצאה
פקודות ב-bash¶
- ישנם שני סוגים של פקודות ב-bash:
- פקודות מובנות, פקודות שה-bash מכיר, ניתן לראותן עם הפקודה
help. לדוגמה:cd,pwd,exitחשבו עליהן כפקודות שממש בנויות בתוך bash והן חלק מהפיצ'רים של הshell עצמו. - פקודות חיצוניות, תוכנות שאנשים פיתחו (בדרך כלל GNU) ואפשר להריצן כפקודות. לדוגמה:
ls,mkdir,rmdirהן תוכנות שנמצאות על המחשב והshell יודע להריץ אותם כפקודות ממש כמו הפקודות המובנות. - בדומה ל-batch בווינדוס.
- פקודות מובנות, פקודות שה-bash מכיר, ניתן לראותן עם הפקודה
- ב-bash ניתן לבדוק אם פקודה היא מובנית או חיצונית עם הפקודה
which.
ניתן לראות כי שעשינו which ls קיבלנו את הנתיב של הפקודה ls, ומכאן אפשר להסיק שזו פקודה חיצונית. ולא מובנית בbash

לעומת זאת שעשינו which cd לא קיבלנו שום תוצאה וזה אומר שהפקודה היא מובנית ולא נמצאת באיזשהו קובץ במערכת ההפעלה כמו ls.

משתני סביבה¶
משתני סביבה בלינוקס הן משתנים של הshell שכל תוכנה שרצה מתוך הshell יכולה לגשת אליהם.
- ניתן להשתמש בפקודה המובנית set כדי לראות משתני סביבה בshell

- יש המון משתני סביבה, בניהם משתנה הסביבה PATH, שמכיל רשימה של תיקיות מופרדות בנקודה-פסיק שבהן bash משתמש כדי למצוא פקודות חיצוניות כשאנחנו מריצים אותן. וכדי לגשת למשתני סביבה, נשתמש ב$.
- כך שאם נרצה להדפיס משתני סביבה, נריץ: echo $PATH למשל.

הדפסנו את משתנה הסביבה PATH, שימו לב שהוא מכיל את כל התיקיות שהshell שלנו bash יעבור עליהן כדי למצוא פקודות להרצה. (פקודות חיצוניות), למשל אחת התיקיות היא "/usr/local/bin" איפה שנמצאת הפקודה ls.
- ניתן להגדיר משתני סביבה כך:

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

-
בנוסף הפקודה
declareעוזרת לנו גם כדי ליצור משתני סביבה חדשים, ויש לה המון דגלים. בניהם יש את דגל-xשמשמש בדיוק כמו export. כך שאפשר לעשותdecalre -x a=1וזה יעבוד בדיוק כמוexport. - הפקודה
unsetמשמשת להסרת משתנים:unset a - אם נרצה להעביר לפקודה מסויימת, משתני סביבה מסויימים, מבלי ליצור אותם גלובלית לכל הshell עם export, נוכל פשוט לתת אותם לפני הפקודה בצורה הבאה:
- כאשר נריץ את הפקודה date, שמדפיסה את התאריך, אנחנו משנים environment variable שנוצר על ידי bash שמכיל את השפה של הshell שלנו שהפקודה date משתמשת בו.
- דוגמה נוספת היא לשנות את הenvrioment variable המוכר PATH, כך שכאשר נרצה להריץ פקודה חיצונית כמו ls, נוכל לשים תיקייה אחרת בPATH- ובכך להריץ תוכנת ls אחרת. שנוכל לכתוב בעצמנו.
- חשוב להכיר: כל פעם לאחר שהshell נסגר, כל הenvrioment variables נמחקים.
- בנוסף: למורות שהשתמשנו ב
setכדי לראות משתני סביבה, ניתן להשתמש ב-setכדי להגדיר אפשרויות שונות ל-shell, הריצוman setכדי לראות דברים שאפשר לעשות עם הפקודה. קיימים המון אפשרויות שונות, בהמשך הקורס וככל שתלמדו יותר על bash תבינו איך האפשרויות השונות יכולות לעזור לנו. - הפקודה
envמשמשמת אותנו כדי להריץ פקודות בסביבה עם משתני סביבה אחרים. (אפשר גם לעשות את אותם דברים בלי הפקודה הזו, היא פשוט נוחה.) למשל נוכל להשתמש בenv כדי לעשות בדיוק מה שעשינו קודם עם date:
- אפשר להשתמש ב
envגם כדי למחוק את כל משתני הסביבה:
- אם נריץ את
envמבלי פרמטרים, נקבל רשימה של כל המשתני סביבה בדיוק כמו עםset. - אפשר להשתמש ב
envגם כדי להריץ פקודה עם המשתני סביבה בbash, רק בלי משתנה ספציפי.
הפקודה למעלה לא תעבוד, כי בלי PATH, באש לא יצליח למצוא את הנתיב שלls.
אופרטורים לפקודות¶
- האופרטור
command > file- מפנה את הפלט של הפקודה לקובץ - האופרטור
command >> file- מוסיף את הפלט של הפקודה לקובץ
הריצו את הפקודה למטה.
- האופרטור
command1 | command2- צינור (pipe) - מפנה את הפלט של הפקודה הראשונה לקלט של הפקודה השנייה
הריצו את הפקודה למטה.
- האופרטור
command 1> file- מפנה את הפלט של הפקודה לקובץ בלבד - האופרטור
command 2> file- מפנה את שגיאות הפקודה לקובץ בלבד
לדוגמה, הפקודה הבאה מחזירה המון שגיאות:
- נוכל להריץ את הפקודה כך ואז כל השגיאות והפלט לקבצים שונים
קיים קובץ מיוחד בלינוקס בתקייה/dev/nullשנוכל להשתמש בו שאנחנו רוצים לזרוק מהshell תוכן של משהו מסויים, נוכל לזרוק את כל השגיאות לdev null וכך להשאיר רק את הפלט שאנחנו אוהבים על המסך.
- האופרטור
command1; command2- נקודה-פסיק - משלב פקודות
- האופרטור
command1 && command2- אם הפקודה הראשונה רצה בהצלחה, מריצה את הפקודה השנייה
- האופרטור
command1 || command2- אם הפקודה הראשונה רצה בהצלחה, לא מריצה את הפקודה השנייה ואם הפקודה הראשונה לא צלחה, אז תרוץ הפקודה השנייה.
- ישנם עוד אופרטורים שנלמד בעתיד
התקנת תוכנות¶
- בלינוקס, וספציפית בubuntu קיימת דרך להתקין תוכנות דרך הטרמינל. בהמשך הקורס נפרט יותר על האפשרות, אך כרגע כדי לתקדם נראה
נשים במקום<your-package>את החבילה (התוכנה) שאותה נרצה להתקין, למשל נתקין תוכנת עורך text מתקדמת יותר מnano: בשם mousepad, הריצו:
- שימו לב, זה הפעולה תבקש מכם כנראה סיסמא, שימו את הסיסמא שבחרתם כשהתקנתם את הubuntu.
לאחר שההתקנה הסתיימה והתוכנה mousepad הותקנה בהצלחה, הריצוmousepad a.txtכדי להשתמש בה. (קצת מזכיר את notepad, לחצו על ctrl+s כדי לשמור את הקובץ לפני שאתם סוגרים) - בשיעורים הבאים נדבר עוד על apt, ואיך מתקינים תוכנות עם apt.
סיכום¶
- התחילו להשתמש בטרמינל כמה שיותר, ככה תשתפרו ותכירו פקודות חדשות.
- השתמשו המון בman כדי ללמוד על הפקודות שאתם משתמשים בהם, בנוסף בman קיימים עוד המון תיעוד על עוד דברים שהם לא פקודות, תגלו בהמשך :)
- בשיעורים הבאים נמשיך ללמוד על פקודות, קונספים בלינוקס, ועל כתיבת סקריפטים עם bash.