חזור לתיקייה: dry

חלק יבש

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • 3 - חלק יבש
  • 3.1 - היכרות ותמצאות ב-Shell
  • 3.2 - עבודה עם קבצים
  • 3.3 - חיפוש בקובץ
  • 3.4 - פקודות נוספות
  • 3.4.1 - הפקודה touch
  • 3.4.2 - הפקןדה zip
  • 3.4.3 - הפקודה nano
  • 3.4.4 - הפקודה cut
  • 3.4.5 - הפקודה time
  • 4 - חלק רטוב בתיבול יבש
  • 4.1 - ניפוי שגיאות
  • 4.1.1 - שגיאת קומפילציה

חלק יבש

02340124

מבוא לתכנות מערכות

רשימות הרצאה לקריאה בשבת

חלק יבש

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

uni-folder.vercel.app

3 - חלק יבש

3.1 - היכרות ותמצאות ב-ShellShellShell

תרגיל

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

​מתמ0-חלק-יבש1.png

3.2 - עבודה עם קבצים

תרגיל

בתקייה ישנם שני קבצים. הדפיסו את התוכן של כל אחד מהקבצים באמצעות הפקודה cat.
באמצעות הפקודה echoechoecho והפניית הפלט, צרו את הקובץ groceries.txt ורשמו בשורה הראשונה כותרת ובה שמכם.
באמצעות הפקודה cat והפניית פלט, הוסיפו לקובץ groceries.txt את התוכן של הקבצים malabi.txt ו-pancakes.txt (היזהרו לא לדרוס את תוכן הקובץ!).
הדפיסו את תוכן groceries.txt למסך והוסיפו צילום של הפקודה עם הפלט לקובץ ההגשה.

​מתמ0-חלק-יבש2.png

3.3 - חיפוש בקובץ

תרגיל

כדי לצמצם כמה שאפשר את זמן השהיה שלנו במכולת, נרצה להיות יעילים ככל הניתן עם רשימת הקניות שלנו. למשל, נוכל לברר מראש אילו סוגי חלב המתכונים שלנו דורשים כדי לעבור במחלקה המתאימה פעם אחת בלבד. בסעיף זה תידרשו להרכיב בעצמכם פקודת Shell המחפשת בקובץ את כל השורות בהן קיימת המילה “milk“. לשם כך תוכלו להשתמש בפקודה grep.
הוסיפו צילום של הפקודה עם הפלט לקובץ ההגשה.

​מתמ0-חלק-יבש3.png

3.4 - פקודות נוספות

תרגיל

בסעיף זה תתבקשו לקרוא על מספר פקודות נוספות שלא נלמדו בתרגולים.

3.4.1 - הפקודה touchtouchtouch

touch [flags] FILE

הפקודה משנה את ה-timestamp של כל קובץ. בפשטות, היא משנה במטא-דאטה של הקובץ את הערך "זמן עריכה אחרון" לזמן הנוכחי.
במקרה והקובץ אינו קיים - היא יוצרת אחד(אלא אם הדגל −c-c−c או −h-h−h מופעלים)
דגלים מעניינים:

  • הדגל −t-t−t מאפשר לשנות את הזמן שנכתב לקובץ מהזמן הנוכחי לזמן לבחירת המשתמש עם הפורמט [[CC]YY]MMDDhhmm[.ss][[CC]YY]MMDDhhmm[.ss][[CC]YY]MMDDhhmm[.ss]
  • הדגל −d-d−d מאפשר גם הוא לשנות את הזמן הנכתב באמצעות כתיבה של מחרוזת.

3.4.2 - הפקןדה zipzipzip

zip [flags] name.zip FILE1 FILE2 FILE3 ...

הפקודה מאפשרת לדחוס כמה קבצים לתוך ארכיון(או בשמו היותר נפוץ - קובץ zipzipzip)
דגלים מעניינים:

  • הדגל −d-d−d מאפשר במקום יצירת ארכיון, למחוק קובץ מתוך ארכיון קיים. כותבים כרגיל את הפקודה, וכל הקבצים שנכתבו נמחקים מתוך הארכיון שמצויין.
  • הדגל −u-u−u מאפשר להוסיף לארכיון קיים קבצים נוספים.
  • הדגל −m-m−m מאפשר להזיז קובץ לתוך ארכיון קיים. זה שונה מהדגל −u-u−u בכך שבדגל −m-m−m הקובץ המקורי מוזז ולא מועתק.
  • הדגל −r-r−r מאפשר לבצע כיווץ לתקייה שלמה באופן רקורסיבי.

3.4.3 - הפקודה nanonanonano

nano [flags] FILE1

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

  • הדגל −B-B−B גורם לכך שכל פעם שהקובץ נשמר הוא נשמר לקובץ חדש עם אותו השם בתוספת סיפא שמסמלת מתי הוא נוצר.
  • הדגל −E-E−E הופך כל TABTABTAB שנלחץ לרווחים.
  • הדגל −G-G−G משנה את מראה העורך.

3.4.4 - הפקודה cutcutcut

cut [flags] FILE1

הפקודה מאפשרת למחוק קטע מכל שורה בקובץ שהוכנס.
במידה ולא הוכנס קובץ, או שהקובץ לא קיים, הקלט יקרא מה-standared input.
דגלים מעניינים:

  • הדגל −d-d−d מאפשר לבחור סממן אחר לחלוקה כאשר הסממן הרגיל הוא TABTABTAB.
  • הדגל −s-s−s גורם לכך שהשורות שלא מכילות את הסממן לא יודפסו כלל.
  • הדגל −c-c−c מאפשר לבחור רק את התווים הרצויים.

3.4.5 - הפקודה timetimetime

time [flags] COMMAND

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

  • הדגל −o-o−o מאפשר ליצא את כל המידע לקובץ במקום לפלט הטריוויאלי.
  • הדגל −f-f−f מאפשר לשנות את הפורמט של הפלט.

4 - חלק רטוב בתיבול יבש

4.1 - ניפוי שגיאות

4.1.1 - שגיאת קומפילציה

​מתמ0-חלק-רטוב1.png
המהדר מתאר לנו כי ישנה בעיה בפונקציה mainmainmain בשורה 142142142 ובתו 404040 בשורה זו.
הבעיה היא שחסר ;;; לפני returnreturnreturn. כלומר, חסר ;;; אחרי הפקודה printfprintfprintf.

לאחר שינוי הקובץ:
​מתמ0-חלק-רטוב2.png