שורת הפקודה היא דרך לשלוט במחשב ללא ממשק GUI. ביחידה הזו נלמד את הפקודות הבסיסיות כדי לבצע פעולות במחשב.
מסקנות עיקריות
- התלמידים יסתובבו במחשב באמצעות פקודות.
- התלמידים יוכלו ליצור, להעביר, להעתיק ולמחוק קבצים ותיקיות.
מה היא שורת הפקודה?
רוב המשתמשים משתמשים בממשק גרפי (GUI) כדי ליצור אינטראקציה עם המחשב. ממשקי GUI בדרך כלל מסתמכים על עכבר או מגע כדי להשפיע על חלונות באמצעות סמלים, לחצנים, סרגלי גלילה וכו'.
שורת הפקודה היא תצוגה חלופית למחשב. לפעמים הוא נקרא "he-&&;; "TheTerminal", "bash" או "text text" שורת הפקודה היא:
- אמצעי לאינטראקציה עם תוכנת מחשב שבה המשתמש מקליד בפקודות. למשל:
open README.txt
- דרך לנווט ולהפעיל את המחשב ללא עכבר.
- דרך לא גרפית ליצור, לקרוא, לעדכן, להפעיל ולמחוק קבצים וספריות. למשל:
mv README.txt readme.txt
ה-GUI ושורת הפקודה בוחנים את אותו דבר! אלה דרכים שונות לאינטראקציה עם המחשב.
מתי אנחנו משתמשים בשורת הפקודה?
ממשקים בשורת הפקודה בדרך כלל מועדפים על ידי מפתחים:
- הם מספקים אמצעים תמציתיים יותר לשליטה בתוכנית או במערכת הפעלה. למה? מאחר שהכול מתרחש באותו חלון, וכדי לתרגל אותו, נדרש פחות מאמץ ממניפולציה באמצעות עכבר, ומניפולציה.
- הם חושפים אפשרויות לשליטה בפקודה. למה? התפריטים בממשקי GUI מספקים מספר מצומצם מאוד של אפשרויות. בשורת הפקודה יש מאות פקודות, וכמה תווים שנוספו לפקודה יכולים לגרום לה לבצע הרבה דברים שונים, למשל
ls
קבצים בסיסיים של רשימהls -a
הצגת כל הקבצים, כולל קבצים שמוסתרים בדרך כללls -l
רשימה ארוכה עם מידע על כל קובץls -R
רקורסיבי, הצגת התוכן של הספריותls -la
רשימה ארוכה של כל הקבצים- כך קל יותר לעבוד על הרבה קבצים בבת אחת בדרכים מורכבות.
for i in *.png; do pngtogif $i `echo $i | sed s/png/gif/`; done
- הם מספקים אמצעים לתכנת את מערכת ההפעלה (תוכניות קונכייה) לדוגמה. זוהי תוכנית של קונכיות פשוטה מאוד לשינוי תמונות עם שמות קבצים המסתיימים ב-
.png
.
שורת הפקודה בפעולה
החלקים של פקודת Command
לכל הפקודות יש שלושה חלקים:
- הפקודה (או כלי השירות) תמיד מגיעה ראשונה.
- הסימונים הם אופציונליים, בהתאם לחברת התשתיות שבה משתמשים. סימונים תמיד מתחילים בסימן - (מינוס).
- ארגומנטים הם הפעולות שהפקודה צריכה לפעול לגביהן או המידע הנחוץ. לעיתים קרובות שמות קבצים.
מסגור
הקשר &מטרה
שורת הפקודה היא דרך לשלוט במחשב ללא עכבר או ממשק GUI (ממשק משתמש גרפי). לפני שמחשב Apple התחיל לבנות מכונות עם סמלים ותיקיות שאפשר ללחוץ עליהם, הדרך היחידה לקיים אינטראקציה עם המחשב הייתה באמצעות שורת הפקודה.
כמפתחים, אנחנו משתמשים בשורת הפקודה כי היא הרבה יותר מהירה וחזקה שה-GUI לא צריך לבזבז זמן בלחיצה עליה. שורת הפקודה יכולה לאפשר לכם לבצע כמעט כל אינטראקציה שהייתה לכם במחשב.
המסוף הוא ממשק פשוט הרבה יותר, ולכן יש לו יתרון גדול לעומת ממשק ה-GUI כשיש צורך להתחבר מרחוק למחשב באמצעות קישור רשת. זו פעולה שמפתחים מבצעים לעיתים קרובות – למשל בזמן נסיעה.
בשיעור הזה נלמד את הפקודות הבסיסיות לניהול אינטראקציה עם המחשב שלנו: יצירת קבצים וספריות, העברת תיקיות, שינוי ספריות ופירוט של תוכן התיקייה.
יעדי למידה
התלמידים יוכלו
- אפשר להשתמש ב-Terminal כדי לנווט בקבצים ובתיקיות
- הצגת התוכן של תיקייה
- יצירת קבצים ותיקיות בשורת הפקודה
- העברת קבצים ותיקיות
- העתקת קבצים ותיקיות
- מחיקת קבצים ותיקיות
תחילת העבודה
גישה למסוף
מסגור הקטע ומטרתו
המסוף מספק ממשק שורת פקודה (CLI) למערכת ההפעלה. בעזרת המדריך הזה אתם יכולים לספק למחשב שלכם הוראות מבוססות-טקסט ישירות.
כדי לעשות זאת, עלינו להפעיל את המסוף על סמך המערכת שבה משתמשים.
לאחר הפעלת המסוף, הוא יתחיל בספריית הבית של המחשב (לא משנה מה השם של המחשב שלך). ספריית הבית מסומנת בטילדה~
.
כשדנים בעולם שלנו בתוך המסוף, ספריות הן זהות לתיקיות (אנחנו עשויים לקרוא להן רק ספריות).
החלפת ספריות
מסגור הקטע ומטרתו
כדי לדבר עם המחשב שלנו במסוף ולספר לנו מה אנחנו רוצים לעשות, אנחנו צריכים לדבר בשפה נפוצה. שורת הפקודה מבינה פקודות כתובות בשפת הסקריפטים של הדירוג. הפקודות הן ראשי תיבות או קיצורים של מילים באנגלית.
הדפסת ספריית העבודה (pwd
)
כשאתם מנווטים במסוף, חשוב לדעת איפה אתם נמצאים (הוא מתורגם גם ישירות למציאות – אם אתם רוצים להגיע למקום מסוים, קודם אתם צריכים לדעת את המיקום הנוכחי שלכם).
# See your current location - abbreviation for 'print working directory'
pwd
פירוט של הקבצים והספריות הזמינים
בספריית העבודה שלכם יש כנראה כמה קבצים שאפשר לגשת אליהם. בדרך כלל, אנחנו מסתמכים על רמזים חזותיים כמו סמלים כדי לספר לנו מה זמין, אבל יהיה לנו קשה לנווט במחשב אם רק נשער איפה נמצאים הקבצים והתיקיות. בשורת הפקודה, נשתמש בפקודה ספציפית כדי לרשום את התוכן שאליו אנחנו יכולים לגשת מכל ספרייה נתונה / בכל מיקום נתון.
כדי לראות אילו קבצים או תיקיות נמצאים בספרייה הנוכחית שלנו, אפשר להשתמש בפקודה ls
(קיצור של רשימה) כדי לראות את תצוגת הרשימה של התוכן.
# See files and folders in current location - abbreviation for 'list'
ls
שינוי ספריית העבודה
אם אתם זקוקים לגישה לקובץ או לספרייה שאינם קיימים ברשימה, כדאי לשנות את הספרייה הפעילה כדי לגשת אליה בקלות.
התחביר שמורה לשורת הפקודה להעביר אתכם לספרייה חדשה (שנקראת גם תיקייה) היא cd
ואחריה (באותה שורה) לפי הנתיב לתיקייה החדשה.
אם אתם מנווטים למאגר שנמצא בתוך הספרייה ושבו נמצאים (למשל תיקיית משנה של ספריית העבודה), לוחצים על cd
ואז על שם התיקייה.
# Change your current working directory (current location)
# Abbreviation for 'change directory'
cd Documents
אפשר גם לנווט בספריית הבית ~.
# Add a `~/` to begin from the home directory.
cd ~/Downloads
אם שינית ספריות אבל צריך לשנות חזרה לספריית הבית, אפשר לעשות זאת על ידי ניווט ישירות לבית באמצעות ~
או על ידי ניווט ב-..
ברמה אחת למעלה.
# Option 1: navigate directly to the home directory
cd ~
# Option 2: navigate back one level
cd ..
הערה: cd ..
עולה (בחזרה) ברמה אחת בלבד, כך שאם שינית ספריות שלוש פעמים עד עכשיו (למטה שלוש רמות), יהיה עליך להשתמש ב-cd ..
שלוש פעמים כדי לחזור הביתה, אבל יהיה עליך להשתמש ב-cd ~
פעם אחת בלבד.
מיני אתגרים
- אפשר להשתמש בשירות
ls
כדי לראות את הפריטים שבספרייה הנוכחית שלך. - חוזרים אל ספריית הבית ומשתמשים ב-
ls
כדי לראות את התוכן של תיקיית הבית. - בוחרים את השם של אחת מהתיקיות שנכללות בספריית הבית ועוברים לתיקייה החדשה.
- משתמשים בפקודת הרשימה כדי לראות מה פנימי בה.
טיפ: השלמה אוטומטית באמצעות tab
החלפת ספריות בפקודה cd
תגרום לשגיאת הקלדה אחת שמונעת את ביצוע הפעולה. עם זאת, השימוש במפתח tab
יושלם באופן אוטומטי בעזרת השם של כל הספריות הזמינות בתוך הספרייה הנוכחית. לכן, במקום להקליד cd Documents
, יש להקליד רק cd Do
וללחוץ על המקש tab
והמסוף יסיים בשבילך את הפקודה cd Documents/
באופן אוטומטי (/
בסוף היא אופציונלית, אבל אפשר לדעת שהיעד הוא ספרייה).
ההשלמה האוטומטית הזו לא רק חוסכת זמן כאשר היא פועלת, היא גם מספקת מידע חשוב כאשר זה לא עובד. אם לחצן הכרטיסייה לא מולא באופן אוטומטי, סביר להניח שנתקלת באחת משלוש בעיות נפוצות:
- הספרייה שאליה רוצים לנווט לא נגישה מהספרייה הפעילה הנוכחית.
- יש שתי ספריות עם שמות התחלה דומים (כמו
Documents
ו-Downloads
) ולא סיפקתם מספיק מידע להשלמה האוטומטית כדי לדעת איזו תיקייה מתאימה לכם. צריך להקיש שוב עלtab
כדי לראות רשימה של הספריות שיכולות להתאים למה שהקלדת. לאחר מכן יש להקליד את הטקסט מעט יותר (כדי שיהיה מספיק התאמה אחת בלבד) ולהקיש שוב עלtab
. - כבר הקלדת שגיאת הקלדה במחצית הראשונה של המילה.
ככל שתתרגלו להשתמש בהשלמה אוטומטית של פקודות, כך גובר הסיכוי שתטפלו במצבים מתסכמים שבהם הפקודות לא פועלות.
מדריכים להורים ולילדים
ספריות וקבצים יכולים לכלול קשרים בין ילדים והורים. אם directory_b
נמצא בתוךdirectory_a
, directory_b
נקרא צאצא של directory_a
. directory_a
ידועה בתור ההורה של directory_b
. אם פריט שלישי, my_file
, נמצא בתוך directory_b
, הוא נחשב כצאצא של directory_b
ו-נכד של directory_a
.
הקשרים האלה בדרך כלל מוצגים בפורומים עם תרשים טקסט, כך:
directory_a/ directory_b/ my_file
חשוב לדעת ששמות הספריות מסתיימים ב-/
בעוד ששמות קבצים לא מסתיימים. הארגון ההיררכי הזה נקרא בדרך כלל מבנה העץ של מערכת הקבצים.
אחים ואחיות
אם יש כמה קבצים או תיקיות באותה רמה, הם נקראים אחים. לדוגמה: אם file_b
וfile_c
נמצאים בתוך directory_a
, הם אחיות.
תרשים הטקסט הזה ייראה כך:
directory_a/ file_b file_c
חשוב לשים לב: מאחר ש-file_b
ו-file_c הם אחים, מתבצעת כניסת פיסקה באותו סכום.
נתיבי קבצים
הנה תרשים טקסט מורכב יותר שכולל גם קשרים בין הורים לילדים וגם אח.
north_america/ united_states/ new_york/ new_york_city/ manhattan queens staten_island bronx brooklyn california/ mountain_view los_angeles illinois/ chicago mexico/ mexico_city
בדוגמה הזו, new_york_city/
הוא שם של ספרייה, אבל יש בו גם נתיב, שמפרט איך להגיע אליו: ~/north_america/united_states/new_york/new_york_city/
.
כדי לשנות את הספרייה ל-new_york_city/,
, אפשר לנווט בשלבים באמצעות שמות, או לנווט לאורך כל הדרך בפקודה אחת באמצעות הנתיב.
# Option 1: in four steps, using directory names.
cd ~ # navigate home, where these folders are located
cd north_america/
cd united_states/
cd new_york/
cd new_york_city/
# Option 2: in one step, using the path.
cd ~/north_america/united_states/new_york/new_york_city/
סיכום של פקודות הניווט
# See your current location - abbreviation for 'print working directory'
pwd
# Change to a new location - abbreviation for 'change directory'
cd ~/Downloads
# Navigates into a child directory called `some_directory`
# Only works if `some_directory` is a child of the current directory
cd some_directory
# Navigates into the parent of the current directory
# `..` is shorthand for parent.
cd ..
# Will take you back home
cd
מיני אתגרים
- אפשר להשתמש ב-
pwd
כדי למצוא את התיקייה הנוכחית שבה נמצאים. - צריך לעבור לספרייה אחרת ולאשר את המיקום החדש.
- מנסים שוב ועוברים לתיקייה אחרת. הפקודות החדשות מאפשרות לך לראות את המיקום שלך וכן לראות את הקבצים שנמצאים בספרייה הזו.
יצירת קבצים וספריות
מסגור הקטע ומטרתו
כמפתחים, נצטרך ליצור קבצים עם קוד. כדי לשמור על סדר בקבצים, עלינו ליצור תיקיות / ספריות שבהן נוכל לאחסן את הקבצים שלנו.
יש לשים לב למיקום שלכם במסוף לפני שיוצרים את הקבצים והתיקיות.
# See your current location.
pwd
כדי ליצור קובץ, משתמשים בפקודה touch
ולאחר מכן בשם הקובץ.
# `touch` creates a new file.
touch style.css
כשיוצרים קובץ, מוסיפים סיומת קובץ כדי לציין את הסוג. סוגי קבצים לדוגמה:
.js
הופך כקובץ JavaScript.html
יוצר קובץ HTML.css
יוצר קובץ CSS.md
יוצר קובץ סימון
שמות הקבצים לא יכולים לכלול רווחים.
# make a file - this will create a file in the current folder
touch my_text_file.txt
# make a file - this will create a file on the desktop
touch ~/Desktop/my_new_style_sheet.css
יצירת קבצים מרובים
אפשר ליצור מספר קבצים בבת אחת על ידי הוספת רווחים בין השמות.
# make multiple files - this will create multiple files in the current folder
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
יצירת ספריות
כדי ליצור ספרייה או תיקייה, משתמשים בפקודה mkdir
– קיצור של 'directory'' ואז שם התיקייה.
# make a folder - this will create a directory in the current folder
mkdir my_new_folder
# make a folder - this will create a directory on your desktop
mkdir ~/Desktop/my_new_desktop_folder
יצירת ספריות מרובות
אפשר ליצור מספר תיקיות בו-זמנית על ידי הוספת רווחים בין כל השמות.
# make multiple folders - this will create multiple folders in the current
# directory
mkdir folder_one folder_two folder_three
מיני אתגרים
- יצירת קובץ חדש.
- ליצור כמה קבצים בפקודה אחת.
- יצירת ספרייה חדשה.
- כדאי ליצור עוד כמה ספריות חדשות. אפשר לעשות זאת באמצעות פקודה אחת בלבד.
- באמצעות הידע שלך על ניווט בספריות ויצירת קבצים ותיקיות, צור 'family_tree'' במחשב שולחני באמצעות קבצים ותיקיות.
מתבצעת העברה והעתקה
העברת קבצים וספריות
מסגור הקטע ומטרתו
אנחנו יכולים להעביר קובץ או תיקייה בשורת הפקודה, אבל אנחנו צריכים תמיד לציין שלושה דברים:
- אנחנו משתמשים בפקודה
mv
– קיצור דרך להעברה. - פועלים לפי פקודת ההעברה עם השם של הקובץ או התיקייה שרוצים להעביר.
- עוקבים אחר שם הקובץ עם היעד שאליו רוצים להעביר אותו.
לדוגמה, אם יש לכם מבנה קובץ כזה:
my_child_folder/ my_parent_folder/
אפשר לראות שהוא לא מאורגן כפי שהוא צריך להיות – הם אחים בעודם צריכים להיות הורים וילדים. משתמשים בפקודה הזו:
# move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder
mv my_child_folder/ my_parent_folder/
המבנה שייראה ייראה כך.
my_parent_folder/ my_child_folder/
הנה כמה וריאציות נוספות של הפקודה mv
:
# move a directory - this will move the folder `my_folder` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_folder ~/Desktop/my_desktop_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_folder` that is in the current folder
mv my_file.txt my_folder
# move a file - this will move the file `my_file.txt` into the file named
# `my_desktop_folder` that is located on the Desktop
mv my_file.txt ~/Desktop/my_desktop_folder
אזהרה: mv
היא גם הפקודה שמשנים את שם הקובץ באמצעות התחביר mv old_name new_name
. כלומר, אם מעבירים קובץ לספרייה שלא קיימת, או אם מאויתים בצורה שגויה של היעד, השם של הקובץ עצמו משתנה במקום העברה.
מיני אתגרים
- יוצרים 5 קובצי טקסט (.txt).
- יצירת ספרייה חדשה.
- מעבירים את 5 הקבצים שיצרתם לתיקייה.
- יצירת תיקייה והעברת התיקייה החדשה בתוך תיקייה אחרת.
העתקת קבצים וספריות
מסגור הקטע ומטרתו
כשאנחנו בונים את אפליקציות האינטרנט שלנו, אנחנו עשויים לשכפל קובץ (אם אנחנו מפתחים שני דפי אינטרנט דומים, אולי לא כדאי להתחיל מחדש), והתחביר של פקודת cp
(עותק) דומה מאוד לתחביר mv
.
המערכת מעתיקה קובץ
פקודת ההעתקה כוללת שלושה חלקים:
- הפקודה
cp
- קיצור דרך להעתקה - שם הקובץ להעתקה
- שם העותק (אם הוא נמצא באותה תיקייה) או המיקום והשם (אם אתם עוברים לתיקייה אחרת).
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`
# The copy will be located in your Documents folder.
cp my_file.txt ~/Documents/my_file_copy.txt
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt`.
# Since no directory was specified, this will occur within the same folder.
cp my_file.txt my_file_copy.txt
אם רוצים שהעותק יישאר עם אותו שם של המקור, אפשר לציין את מיקום ההעתקה ללא שם קובץ.
# Copy a file named `my_file.txt` to your Documents folder.
# The destination ends with a directory, so the copy will have the same name.
cp my_file.txt ~/Documents/
הרבה קבצים עלולים להיות מבלבלים, לכן כדאי להשתמש בשיטה הזו רק אם אתם בטוחים בכך.
העתקת ספרייה
העתקת תיקייה או ספרייה היא קצת יותר מורכבת, מפני שסביר להניח שאתם רוצים להעתיק לא רק את התיקייה, אלא גם את כל מה שנמצא בה.
- הפקודה
cp -R
- קיצור של recurive - יש להשתמש בה עבור תיקיות ריקות וגם לא ריקות - שם המקור (תיקייה או קובץ שאנחנו רוצים להעביר)
- שם העותק (אם הוא נמצא באותה תיקייה) או המיקום והשם (אם אתם עוברים לתיקייה אחרת).
אזהרה: כשמציינים את שם העותק, אם הקובץ או התיקייה לא נוצרו קודם לכן, הם ייווצרו כשתיצרו את העותק. אם הקובץ נוצר לפני שמריצים את פקודת ההעתקה, הוא יחליף את כל מה שהיה קודם בקובץ, לכן כדאי להיזהר!
# copy a directory named `my_folder` from your Desktop folder to a folder
# called `my_folder_copy` in your Documents folder
cp -R ~/Desktop/my_folder ~/Documents/my_folder_copy
# copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder
cp -R my_folder my_folder_copy
הערה: הרכיב -R
של cp -R
נקרא סימון. סימונים תמיד מתחילים במקף, ומשמשים בשילובים עם פקודות כדי לספק הוראות ספציפיות יותר לגבי ביצוע הפקודה.
מיני אתגרים
- יצירת קובץ בשם
my_original.txt
- אפשר ליצור עותק של
my_original.txt
בשם חדש באותה תיקייה. - יצירת ספרייה חדשה.
- יוצרים עותק של הספרייה, אבל נותנים לה שם אחר.
- מעתיקים את הקובץ שהועתק (משלב 2) אבל מעבירים אותו לספרייה שהועתקה (משלב 4).
הסרת קבצים &תיקיות
מסגור הקטע ומטרתו
אנחנו יכולים למחוק קבצים ותיקיות בשורת הפקודה, אבל פעולה זו היא בלתי הפיכה.
הסרת קובץ
כדי להסיר קובץ, אנחנו יכולים להשתמש בפקודה rm
(קיצור של remove) ואחריה שם הקובץ.
# delete a file in the working directory
rm unwanted_file.txt
# delete a file not in the working directory
rm ~/Desktop/unwanted_file.txt
הסרת ספרייה ריקה
כדי להסיר ספרייה ריקה, אנחנו יכולים להשתמש בפקודה rmdir
– קיצור דרך להסרת ספרייה ואחריה שם התיקייה.
# delete an empty folder
rmdir empty_directory
# delete an empty folder
rmdir ~/Documents/my_files/empty_directory
הסרת ספרייה שאינה ריקה
כדי להסיר תיקייה שאינה ריקה, עלינו להוסיף דגל -R
– קיצור דרך recurive – אחרי הפקודה rm
למחיקת המחשב מהתיקייה של התוכן. כקיצור דרך, חלק מהמפתחים משתמשים בסימון -Rf
שמסיר ידנית את כל התוכן (אם לא תעשו זאת, ייתכן שתקבלו הודעות על מחיקת חלק מהקבצים או התיקיות של הילדים).
# delete a folder which contains other files or folders
rm -R directory_which_isnt_empty
# delete a folder which contains other files or folders
rm -R ~/Downloads/directory_which_isnt_empty
אזהרה: השימוש בפקודה rm
אינו דומה למחזור המיחזור או לקטע שנמחק באימייל – לא ניתן לשחזר את הקבצים האלה בקלות. מומלץ מאוד להיזהר בעת מחיקת קבצים באופן זה.
מיני אתגרים
- יוצרים 4 קבצים.
- מוחקים 2 מהקבצים.
- יצירת תיקייה.
- יצירת תיקייה נוספת ויצירת קובץ בתוך התיקייה הזו.
- מחיקת שתי הספריות.
הקוד של שיעור ה-Lab הזה מופיע בתיקייה הבאה במאגר התלמידים שהורדת מ-GitHub: command-line/labs/around-the-world
רקע
ה סמסטר שלך בחו"ל ממש מעבר לפינה, והגיע הזמן להתחיל לתכנן את הנסיעות שלך באירופה...
עם שלושה חודשים של חיים חמורים בעתיד הקרוב, אתם רוצים לוודא שאתם מפיקים את המקסימום מכל נסיעה בסוף השבוע.
למזלכם, אתם לא מתחילים מאפס והחברים שלכם סיפקו לכם כמה מהפעילויות האהובות עליהם מהסמסטר שלהם בחו"ל. לצערנו, חלק מהקבצים שותפו...
אל דאגה, הקסם של שורת הפקודה מקובל עליך!
משימה
חשוב לוודא שכל עיר נמצאת במדינה הנכונה ושלכל תיקיית עיר יש מונומנטים נכונים בתוכה. זהירות, אם נמצאים בסופו של דבר באמסטרדם ומחפשים את מגדל אייפל!
אם אתם מרגישים אמיתיים לכך, הסתירו את ה-GUI שלכם והתמודדו עם אתגר זה ישירות משורת הפקודה. בזמן ביצוע כל הפעולות האלו, עדיף להישאר בתיקייה הכללית של העולם. כלומר, משתמשים בנתיבים מוחלטים בעת התייחסות לתיקיות ולקבצים!
לאחר שתוודאו שהכול נמצא במקום הנכון, הגיע הזמן ללמוד את החודשים הקרובים. סיעור מוחות של ערים, מדינות ומונומנטים חדשים שנדרשים לראות ולהוסיף אותם לעץ הקבצים שלכם!
מעולה! למדת באופן רשמי איך לדבר במחשב. רוצים לעזור לכם להתקדם? רוצה לדבר עם תוספי שיחה...
תוספים
- ערבבו את כל הקבצים שוב, ואז היכנסו לעיר שתבחרו. ארגנו מחדש את הקבצים בזמן שאתם נשארים בעיר הזו.
- כדאי לנסות את אחד ממשחקי שורת הפקודה הכיפיים המקושרים למטה
Trinus Game
Advanced Game (מוכנים ל-Google) - מעריץ ענק של מלחמת הכוכבים? אפשר לנסות להפעיל את
telnet towel.blinkenlights.nl
בשורת הפקודה ולהקיש על Enter... (שימו לב: בגרסאות אחרונות של MacOS, הפקודהtelnet
לא מותקנת יותר כברירת מחדל. במקרה זה ניתן להשתמש בפקודהnc towel.blinkenlights.nl 23
במקום זאת).
הקוד של שיעור ה-Lab הזה מופיע בתיקייה הבאה במאגר התלמידים שהורדת מ-GitHub: command-line/labs/bashing-away-repetition
רוצה להשמיד את החזרה של השימוש בשורת הפקודה היומית? מעולה, גם אני!
רקע
אם יש דבר אחד שמתכננים שונאים, זה חזרה. כמדעני מחשבים, התפקיד שלנו הוא לגרום למחשב לבצע חלק גדול ככל האפשר מהעבודה שלנו. כתיבת סקריפטים של באש תעזור לנו לייעל את השימוש בשורת הפקודה.
קודם כל, מה הוא סקריפט של Bash?
שאלה גדולה. למרבה המזל, לחבר שלנו ריאן צ'אדוויק, שנמצא במקום הנהדר הזה, כדי למצוא מדריכים בשורת הפקודה, יש לנו תשובה בשבילכם.
סקריפט Ash מאפשר לנו להגדיר סדרה של פעולות שהמחשב יבצע לאחר מכן מבלי להזין את הפקודות בעצמנו. אם משימה מסוימת מתבצעת לעיתים קרובות, או שהיא חוזרת, הסקריפט יכול להיות כלי שימושי.
אין חזרה? זה'sעל מה אני ו&339.
מדריך
קודם כל, כדי להפעיל את הסקריפט, צריך לתת למחשב הרשאה. כדי לעשות זאת, יש להריץ את הפקודה הבאה.
chmod 755 myScript.sh
טוב, הגיע הזמן לכתוב את התוכנית הראשונה שלך. יש לעבור אל myScript.sh
(אם אפשר לפתוח את הקובץ משורת הפקודה). בסוף הקובץ, מוסיפים:
echo "Hello World"
הפעלה עכשיו:
./myScript.sh
במסוף שלך. ** TA DA ** אמור להופיע ב-"שלום עולמי" במסוף.
כל מה שאתה כותב בסקריפט של bash יפעל כאילו הקלדת אותו במסוף שלך. בואו נעבור על דוגמה אחת נוספת לפני שנדלג לתוספים. ראשית, יוצרים קובץ לסקריפט, קוראים לו בכל שם שרוצים, אך הוא צריך לכלול את התוסף .sh
. הבא הקפד לתת לסקריפט הרשאה לפעול על ידי הקלדת chmod 755
, ולאחר מכן שם הסקריפט שלך במסוף ולחיצה על Enter. בכל פעם שאתה מתחיל סקריפט חדש של bash, עליך לוודא שהשלמת את שני השלבים האלה.
אתגר היכרות
עכשיו ננסה לכתוב סקריפט שיוצר תיקייה חדשה. איזו פקודה ידועה לנו יוצרת תיקייה חדשה? אם אתם חושבים על מילה שמתחילה בm
ומסתיימת ב-kdir
, אתם בדרך הנכונה. עליך לכתוב את הפקודה שתיצרו את התיקייה החדשה ולתת לה שם מגניב בקובץ .sh
החדש, ואז להריץ אותו במסוף.
אם הבעיה נפתרה, עוברים לאתגרים האחרים המפורטים בהמשך. אם עדיין מבלבלים קצת, נסו לבדוק את שיעור ה-Lab במעבדה ברחבי העולם וחשבו איך יצרתם תיקיות חדשות ברמת המדינה והעיר.
אל תהססו להשתמש במדריכים המקושרים שלמעלה ולהכין את מיומנויות Google שלכם בצורה הטובה ביותר. כותבים ומפעילים את הסקריפטים הבאים:
משימות עיקריות
- מוסיפים פקודה לקובץ שיצרתם למעלה, שמנווט לתיקייה שאתם יוצרים. (באיזו פקודה אנחנו משתמשים כדי לשנות ספריות?)
- חותמת תאריך את שם התיקייה החדשה. לדוגמה, התוכנית צריכה ליצור תיקייה בשם "
2017-12-07my_super_cool_folder
"
- מדפיס &"הספרייה הנוכחית שלי היא: " ואחריה הספרייה הפעילה שלך, ו-"זוהי רשימה של כל הפריטים בספרייה זו! "ולאחר מכן התוכן של הספרייה הנוכחית.
- תלמדו איך לתת לסקריפט bash קלט וליצור קובץ על סמך מחרוזת הקלט הזו. המדריך שקושר בעבר בשיעור ה-Lab כולל כמה דוגמאות מעולות בקטע של המשתנים שכדאי לבדוק.
- שואלים את המשתמש על השם שלו ומדפיסים אותו באמצעות &מירכאות; שלום נעים להכיר אתכם כאן מזינים את השם"
- אפשר לנסות לבקש מידע נוסף מהמשתמש וליצור הודעה מותאמת אישית.
הקשר
שורת הפקודה (או Terminal) מספקת אינטראקציה ישירה עם מערכת ההפעלה למחשב (OS) – כל מה שממשק המשתמש הגרפי (GUI) מבצע, אך באמצעות פקודות טקסט – מניווט, דרך קבצים חדשים ועד להפעלת סקריפטים. שורת הפקודה תשמש לפתיחת קבצים ולהפעלת סביבת הפיתוח כשמשתמשים ב-Google App Engine.
שורת הפקודה בפעולה
גישה למסוף
קיצור דרך ל-Mac:
- פותחים את Spotlight עם Command + רווח.
- מקלידים Terminal בחיפוש סרטונים מומלצים.
ניווט במסוף
# See your current location - abbreviation for 'print working directory'.
pwd
# Change to a new location - abbreviation for 'change directory'.
cd /Users/jsmith/Downloads
# Navigate into a child directory called `some_directory`. This only works if
# `some_directory` is a child of the current directory.
cd some_directory
# Navigate into the parent of the current directory. `..` is shorthand for parent.
cd ..
# Return home.
cd
# Change directories to a folder called `my_folder` that is within the current
# directory.
cd my_folder ```
#### File Path Shorthand `~`
The `~` is generally short for "home". Home can be configured to mean different
things for different users and across different operating systems, but in the
example above, for a Mac user named "jsmith", the `~` is short for that user's
home directory: `/Users/jsmith`.
This means that `~/Downloads` and `/Users/jsmith/Downloads` are the same for
this user. But starting with a `~` allows us to specify absolute file paths
(agnostic of your current working directory, and starting at the root `/`)
without having to write out a full path each time.
### <a id="view"></a>Viewing the Contents of Folders
```bash
# See files and folders in current location - this is an abbreviation for 'list'.
ls
יצירת קבצים &תיקיות
יצירת קבצים
# Make a file - this will create a file in the current folder.
touch my_text_file.txt
# Make a file - this will create a file on the Desktop.
touch ~/Desktop/my_new_style_sheet.css
# Make multiple files - this will create multiple files in the current folder.
touch my_new_js_file.js my_new_html_file.html my_second_html_file.html
יצירת תיקיות
# Make a folder - this will create a directory in the current folder.
mkdir my_new_folder
# Make a folder - this will create a directory on your Desktop.
mkdir ~/Desktop/my_new_desktop_folder
# Make multiple folders - this will create multiple folders in the current
# directory.
mkdir folder_one folder_two folder_three
העברת קבצים ותיקיות
בתהליך העברת קבצים
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_folder` that is in the current folder.
mv my_file.txt my_folder
# Note that this will rename the file instead of moving it if the destination
# folder does not yet exist. Read below for more details on renaming.
# Move a file - this will move the file `my_file.txt` into the folder named
# `my_desktop_folder` that is located on the Desktop.
mv my_file.txt ~/Desktop/my_desktop_folder
העברת תיקיות
# Move a directory - this will move the folder `my_child_folder` into the
# folder named `my_parent_folder` that is in the current folder.
mv my_child_folder my_parent_folder
# Move a directory - this will move the folder `my_folder` into the folder
# named `my_desktop_folder` that is located on the Desktop.
mv my_folder ~/Desktop/my_desktop_folder
שינוי השם משתנה
חשוב לזכור ש-mv
היא גם אותה פקודה המשמשת לשינוי שמות של תיקיות או קבצים.
# Rename a file from `old_name.txt` to `new_name.txt`.
mv old_name.txt new_name.txt
העתקת קבצים ותיקיות
המערכת מעתיקה את הקבצים
# Copy a file named `my_file.txt` from your Desktop folder to your Documents
# folder.
cp ~/Desktop/my_file.txt ~/Documents
# Copy a file named `my_file.txt` to a file called `my_file_copy.txt` within
# the same folder.
cp my_file.txt my_file_copy.txt
העתקת תיקיות
# Copy a directory named `my_folder` (and its contents) from your Desktop
# folder to a folder called `my_folder_copy` in your Documents folder.
cp -r ~/Desktop/my_folder ~/Documents/my_folder_copy
# Copy a directory named `my_folder` (and its contents) from the current
# working directory to a folder called `my_folder_copy` in the current working
# directory.
cp -r my_folder my_folder_copy
מחיקת קבצים ותיקיות
מחיקת קבצים
# Delete a file in the current working directory.
rm unwanted_file.txt
# Delete a file using its exact location and name.
rm ~/Desktop/unwanted_file.txt
מחיקת תיקיות
# Delete an empty folder.
rmdir empty_directory
# Delete a folder which contains other files or folders.
rm -r directory_which_isnt_empty
טיפים וטריקים
- אפשר לתרגל שימוש בשורת הפקודה, גם כשחושבים שאין צורך. אתם תשתפרו עם הזמן.
- המפתח
tab
יבצע השלמה אוטומטית של שם הקובץ או התיקייה שלכם (יכול להיות תלוי אותיות רישיות). - אם נותר רק קובץ אחד או תיקייה תואמת אחת, ההשלמה האוטומטית תתבצע.
- אם יש כמה תיקיות או קבצים תואמים, מקישים פעמיים על Tab כדי לראות את רשימת ההתאמות שנותרו.
- החץ למעלה / למטה ימחזור את היסטוריית הפקודה שלך כך שלא יהיה צורך להקליד מחדש את הפקודות.
- משתמשים בפקודה
clear
כדי לנקות את חלון המסוף. כך נשארת כל העבודה הקודמת שלך – יש לגלול למעלה כדי לראות אותה. - יש להשתמש במסוף
reset
כדי להפעיל מחדש את המסוף. הפעולה הזו לא תשמור את העבודה הקודמת שלך במסך, אבל היא עשויה לפתור כמה בעיות אם המסוף מתחיל להתנהג באופן בלתי צפוי. - כדי להזיז את הסמן לפי מילה, צריך ללחוץ על
option
+arrow
סיכום השיטות המומלצות
- אפשר לנווט בטרמינל באמצעות
cd
,cd ..
אוcd <folder name>
. - הצגת התוכן של תיקיות באמצעות
ls
. - יצירת קבצים באמצעות
touch
; יצירת תיקיות באמצעותmkdir
. - העברת קבצים ותיקיות באמצעות
mv <item to move> <destination>
. - העתקת קבצים ותיקיות באמצעות
cp <item to copy> <destination>
. - מחיקה של קבצים ותיקיות באמצעות
rm <item to remove>
.
שאלה 1
באיזה אמצעי יעזור לך לזהות את ספריית העבודה הנוכחית?
pwd
ls
cd
mkdir
touch
שאלה 2
איך עוברים למעלה משתי רמות מספריית העבודה הנוכחית?
mv ~
cd ../..
mv up/up
cd ^(2)
שאלה 3
לפי איזו פקודה ברצונך לשנות שם של קובץ?
mv
cd
ls
python
rename
שאלה 4
למה הפקודה mv script.py
גורמת לשגיאה?
- כי '
script.py
' הוא שם קובץ לא חוקי. - כי לא ניתן לעקוב אחר הפקודה ב-
mv
#39; - זוהי שאלה שמיועדת לטעות. היא לא תיצור שגיאה.
- העברת קובץ דורשת שני ארגומנטים לפחות – יעד ויעד
שאלה 5
מה הפקודה cd ~
תבצע?
- שינוי ספריית העבודה לספריית הבית שלך.
- חוזרים על הפקודה הקודמת.
- השתמשו באלגוריתם כדי לקבוע את הפקודה השימושית ביותר בשלב זה.
- זורקים שגיאה.
שאלה 6
איזו מהאפשרויות הבאות אינה סיבה לשימוש בכרטיסייה כדי להשלים שמות קבצים באופן אוטומטי?
- השימוש בשיטה הזאת חוסך זמן.
- הוא עוזר למנוע שגיאות איות.
- כדי להשתמש בו צריך פחות כוח עיבוד.
שאלה 7
אם מפתח חדש מנסה ליצור קובץ בשם "my script.py
", למה הפקודה touch my script.py
לא תפעל?
touch
לא יכול ליצור קבצים חדשים.- מכיוון ש-
.py
אינו סיומת קובץ חוקית. - היא תיצור שני קבצים, אחד בשם "
my
" ואחד בשם "script.py
" במקום אחד בלבד. - מאחר שלא ניתן ליצור קבצים חדשים משורת הפקודה.
שאלה 1
באיזה אמצעי יעזור לך לזהות את ספריית העבודה הנוכחית?
pwd
שאלה 2
איך עוברים למעלה משתי רמות מספריית העבודה הנוכחית?
עם cd ../..
עליך לעלות שתי רמות (כל ..
מייצג רמה אחת למעלה).
שאלה 3
לפי איזו פקודה ברצונך לשנות שם של קובץ?
mv
משמש להעברת קובץ ממיקום אחד למיקום אחר, וניתן להשתמש בו גם לשינוי שם הקובץ.
שאלה 4
למה הפקודה mv script.py
גורמת לשגיאה?
לפקודה mv
נדרשים שני ארגומנטים, קובץ מקור וקובץ יעד.
שאלה 5
מה הפקודה cd ~
תבצע?
הוא ישנה את ספריית העבודה שלך לספריית הבית. התו המיוחד ~ משמש לזיהוי ספריית הבית של המשתמש הנוכחי. אפשר להשתמש בו גם בשילוב עם שם משתמש אחר: ~user2 כדי להצביע על תיקיית הבית שלו.
שאלה 6
איזו מהאפשרויות הבאות אינה סיבה לשימוש בכרטיסייה כדי להשלים שמות קבצים באופן אוטומטי?
כי נדרש פחות כוח עיבוד כדי לא נכון. ל-tab
נדרשת כמות של כוח עיבוד (לעיתים עשויה להיות נמוכה) כדי לסרוק את התיקיות שמחפשות שם קובץ להשלמה אוטומטית, אבל היא חוסכת זמן ומונעת שגיאות איות בתהליך.
שאלה 7
אם מפתח חדש מנסה ליצור קובץ בשם "my script.py
", למה הפקודה touch my script.py
לא תפעל?
היא תיצור שני קבצים במקום אחד בלבד. הפקודה touch
תיצור קבצים חדשים. ברווחים של הטרמינל יש מפרידים, לא תווים שצריך לכלול בשם הקובץ. מומלץ להימנע מהן לגמרי, אבל אם צריך להשתמש בהן, צריך להקיף את שם הקובץ במירכאות כפולות:
touch "my script.py"
שאלה 1
פקודת המסוף לשינוי ספריות היא:
move
mkdir
pwd
cd
שאלה 2
איזו פקודה צריך להפעיל אם רוצים לנווט לתיקיית האב של הספרייה הנוכחית?
cd up
cd .
cd ..
cd ~
שאלה 3
איזו פקודה משמשת ליצירת קבצים?
touch
mkdir
create
pwd
שאלה 4
איזו מהפקודות הבאות תיצור שני קבצים בשם index.html
ו-style.css
?
touch index.html, touch style.css
touch index.html, style.css
touch index.html style.css
touch index.html + style.css
שאלה 5
איזו פקודה משמשת לשינוי שם של קובץ או תיקייה?
rename
move
mv
rm
שאלה 6
איזה סימון צריך הפקודות של rm
ו-cp
כדי לעבוד בתיקיות?
-f
-r
-x
-d
שאלה 7
כדי להעביר את projects
אל ~/Documents
ולשנות את השם שלו ל-Projects
, איזו פקודה חייבת להיות ריקה?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
pwd
cd projects
mv ~ projects
cd ~/Documents
ls
שאלה 8
מה תבצע הפקודה הבאה?
rm -r projects
- מחיקת קובץ בשם
projects
- מחיקת תיקייה בשם
projects
- שינוי שם של קובץ שנקרא
projects
- חיפוש בתוכן של הספרייה הנוכחית עבור
projects
שאלה 1
פקודת המסוף לשינוי ספריות היא:
פקודת המסוף לשינוי ספריות היא cd
. הפקודה עצמה היא קיצור ל "שינוי הספרייה".
שאלה 2
איזו פקודה צריך להפעיל אם רוצים לנווט לתיקיית האב של הספרייה הנוכחית?
הפקודה לניווט בתיקיית האב היא cd ..
שאלה 3
איזו פקודה משמשת ליצירת קבצים?
הפקודה ליצירת קבצים היא touch
שאלה 4
איזו מהפקודות הבאות תיצור שני קבצים בשם index.html
ו-style.css
?
הפקודה touch index.html style.css
תיצור את שני הקבצים. אין צורך בפסיק ואפשר ליצור מספר קבצים באופן כזה, ולהפריד ביניהם באמצעות רווחים.
שאלה 5
איזו פקודה משמשת לשינוי שם של קובץ או תיקייה?
השם של ראשי תיבות הוא "move" וניתן להשתמש בו כדי להעביר קבצים או תיקיות, אבל אפשר להשתמש גם ב-mv
כדי לשנות שמות של קבצים ותיקיות.
שאלה 6
איזה סימון צריך הפקודות של rm
ו-cp
כדי לעבוד בתיקיות?
הפקודות rm
ו-cp
מחייבות את הסימון -r
כדי לעבוד בתיקיות, כי הסימון -r
מייצג את "recursive" ומפעיל מחדש את הפקודה עבור כל הקבצים והתיקיות שבתיקייה.
שאלה 7
כדי להעביר את projects
אל ~/Documents
ולשנות את השם שלו ל-Projects
, איזו פקודה חייבת להיות ריקה?
cd ~
mv projects ~/Documents
# fill in the blank here
mv projects Projects
מאחר שאנחנו מתחילים בספריית הבית, אנחנו צריכים להריץ cd ~/Documents
כדי להפעיל את הפקודה הסופית בספרייה הנכונה.
שאלה 8
מה תבצע הפקודה הבאה?
rm -r projects
הפקודה תמחק קובץ או תיקייה בשם projects
כי היא נקראת עם -r
, או עם הסימון החוזר. ללא הסימון הזה, הפקודה הזו תפעל רק כדי למחוק קובץ בשם זה.