מדריך שורת הפקודה - חלק ראשון

הקדמה למדריך שורת הפקודה, מהי שורת הפקודה?

Authors
  • Name
    YossiZ
    Published on
    Twitter

הקדמה, מהי שורת הפקודה

לרוב האנשים המילה "תוכנה" אומרת: "חלון, ובתוכו אובייקטים גראפיים, שבאמצעות אינטראקציה איתם אפשר לעשות פעולות מסויימות". זוהי התוכנה האינטראקטיבית. היא נמצאת ורצה כל הזמן (עד שתסגור אותה), כל מרכולתה פרושה לפניך, היא יושבת ומחכה לתגובה שלך, ולך רק נשאר לבחור מה אתה רוצה לעשות איתה.
אתה בוחר משהו, היא עושה את הפעולה, ושוב חוזרת ומחכה לתגובה הבאה שלך.
התוכנה ה"לא איטראקטיבית" או ה"פקודה", לעומת זאת, לא מחכה לתגובה שלך (כמעט) אף פעם, מריצים אותה, היא עושה את מה שביקשת ומיד היא מסיימת תהליך ונסגרת. רוצה עוד משהו? צריך להריץ אותה שוב.
בד"כ מריצים תוכנה באמצעות תוכנה אחרת שנקראת ה-shell (מעטפת). יש shell גראפי (בווינדוס נקרא explorer.exe) ובאמצעותו אפשר להריץ תוכנות אינטראקטיביות ע"י לחיצה על אייקון, ויש shell טקסטואלי שבו מריצים תוכנות ע"י כתיבת שמם - זוהי שורת הפקודה.

שורת הפקודה = סביבה מבוססת טקסט שבה מריצים תוכנות (לרוב, פקודות לא אינטראקטיביות), (CMD ב-Windows ו-DOS (ז"ל) או Powershell בווינדוס, bash, sh, וכו' בלינוקס, וכו')

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

רכיבים של שורת פקודה

  • מקום לקלט (input) - כאן מזינים את הפקודות.
  • מקום לפלט (output) - כאן מקבלים תוצאות. (בד"כ זה אותו חלון של הקלט)
  • PROMPT (הנחיה?) - רמז ויזואלי שהסביבה מוכנה לקבל קלט. כאשר פקודה רצה, הסמן המהבהב נמצא בשורה בפנ"ע בלי PROMPT לפניו (לפעמים יש פלט של הפקודה שרצה, לפעמים לא). כאשר הפקודה מסתיימת ושורת הפקודה מוכנה לקבל עוד פקודה, מודפסת שוב שורת ה-PROMPT ולאחריה סמן מהבהב, זה מראה שאפשר להתחיל לכתוב פקודה נוספת.
    בווינדוס זה נראה משהו כזה:
C:\Users\yossi>_

(למה כתוב נתיב ב-PROMPT? נגיע לזה מאוחר יותר).

רכיבים של "פקודה" (תוכנה לא אינטראקטיבית)

הרכיבים: קלט, פלט, וחישוב
הפקודה מקבלת קלט עושה עם זה חישוב ומחזירה את הפלט. (לא תמיד חייבים כל הרכיבים).

קלט

יש כמה דרכים להכניס קלט לפקודה

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

דוגמא:

echo "Hello, World!"

echo הוא שם הפקודה. פקודה זו לוקחת את הפרמטרים ופולטת אותם החוצה, מבלי להפעיל עליהם שום חישובים.
"Hello, World!" הוא פרמטר שהפקודה מקבלת.

הפלט:

Hello, World!

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

echo Hello, World!

ואז זה היה מתורגם לפקודה עם 2 פרמטרים - "Hello," ו-"World!". במקרה שיש יותר מפרמטר אחד, הפקודה echo פולטת אותם החוצה עם רווח ביניהם, ונקבל את אותו פלט.
אמנם, מה יקרה אם נכתוב:

echo "Hello,       World!"
echo Hello,       World!

הפלט יהיה:

Hello,       World!
Hello, World!

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

דרכים נוספות להזנת קלט:

  • קבצים
  • משתני סביבה

פלט

  • טקסט מודפס בחלון שורת הפקודה
  • פעולה שנעשתה (למשל כיבוי המחשב)
  • קבצים
  • קוד (מספר) שהתוכנה מחזירה - (return code)
  • ...

המשך יבוא...