57
םםםםםם םםםםם םםם"ם- תתתת תתתתתת תתתתתת234122 תתתת ת"ת תתתת תתתתתתתתתתת תתתת- תתתתת תת תתתתתת תת תתתתת תתתתתתתת תתת

ברוכים הבאים למת"ם

  • Upload
    alijah

  • View
    49

  • Download
    0

Embed Size (px)

DESCRIPTION

ברוכים הבאים למת"ם. מבוא לתכנות מערכות - 234122. הוכן ע"י עומר סטרולוביץ מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח. תרגול מס' 1. מנהלה התחברות ל- t2 עבודה בסביבת UNIX. מטרות הקורס. לימוד שיטות וכלים עבור פיתוח תוכנה גדולה התנסות בכתיבת תוכנה ובדיקתה - PowerPoint PPT Presentation

Citation preview

Page 1: ברוכים הבאים למת"ם

ברוכים הבאים למת"ם234122מבוא לתכנות מערכות -

הוכן ע"י עומר סטרולוביץ

מבוסס על עבודתם של ואדים אייזנברג ולי-טל משיח

Page 2: ברוכים הבאים למת"ם

1תרגול מס' מנהלה-התחברות לt2 עבודה בסביבתUNIX

Page 3: ברוכים הבאים למת"ם

3מבוא לתכנות מערכות - 234122

מטרות הקורס

פיתוח תוכנה גדולהעבור שיטות וכלים לימוד

התנסות בכתיבת תוכנה ובדיקתה

המשך לימוד עקרונות התכנות ממבוא למדעי המחשב++C/Cלימוד תכונות מתקדמות של שפות התכנות –

Page 4: ברוכים הבאים למת"ם

4מבוא לתכנות מערכות - 234122

מנהלה

:אתר הבית–http://webcourse.cs.technion.ac.il/234122

האתר מכיל מידע רב וחשוב המתעדכן במהלך הסמסטר.–

קבלתe-mail:מהאתר ודאו שאתם מקבלים עדכונים מהאתר ע"י כניסה ל-–

http://grades.cs.technion.ac.il מעבר ללשונית Settings/Auto update .e-mail מסומן Announcements Updateובדיקה שתחת

Page 5: ברוכים הבאים למת"ם

5מבוא לתכנות מערכות - 234122

מבנה הציון הסופי

70%מבחן סופי

30% תקף- תרגילי הבית תרגילי בית על נושאי הקורס השונים )+ תרגיל הכנה ללא ציון(4–

התרגילים מורכבים משאלות יבשות )כתיבת פתרון( ורטובות )כתיבת קוד, –הרצתו ובדיקתו(

חובה לעבור את המבחן הסופי במבחן55ציון ש"ב לא ייחשב במקרה של ציון קטן מ-–

Page 6: ברוכים הבאים למת"ם

6מבוא לתכנות מערכות - 234122

תרגילי בית

מומלץ לעשותם בזוגות- הרבה עבודה תרגילי הבית בקורס דורשים באתר הקורס.Find a partnerניתן למצוא שותף תחת לשונית –

בכל סמסטר נעזבים מספר אנשים ע"י השותף שלהם.–

שימרו על קשר טוב עם השותף – זהו חלק מתהליך פיתוח התוכנה.•

סגל הקורס לא יטפל בבעיות בין שותפים ולא ינתנו הקלות בהקשר זה–

היא חלק חשוב מתהליך פיתוח עמידה במסגרת זמנים – אין הארכותהתוכנה

הארכות על בסיס אישי ינתנו רק עבור מקרים קיצוניים או שירות מילואים –פעיל

Page 7: ברוכים הבאים למת"ם

7מבוא לתכנות מערכות - 234122

תרגילי הבית

ואכן עובדשנבדקשימו לב: תרגיל מוכן הוא תרגיל הקפידו לבדוק את נכונות הקוד שלכם לפני ההגשה – נקודות אינן ניתנות לפי –

זמן העבודה על התרגיל אלא לפי כמות הבדיקות שבהן הוא עומד

:לא ינתנו הקלות הקפידו לגבות באופן שוטף את הקבצים גיבוילסטודנטים שאיבדו את עבודתם בגלל הזנחה

Page 8: ברוכים הבאים למת"ם

8מבוא לתכנות מערכות - 234122

תרגילי הבית

:הגשהעקבו במדויק אחרי הוראות ההגשה לכל תרגיל המצוינות בתרגיל. הן –

מפרטות מה יש להגיש מודפס וכיצד יש להגיש את הקבצים דרך האתר.

אי ציות להוראות אלו יגרור הורדת ציון•

עבור ההגשה האלקטרוניתמספר האישור שמרו את –

ולא לגעת בו t2מומלץ לשמור עותק של הקבצים על ספרית הבית ב-–למקרה של טעויות עם ההגשה האלקטרונית

Page 9: ברוכים הבאים למת"ם

9מבוא לתכנות מערכות - 234122

תרגילי בית - העתקות

בקורס יופעלו שיטות מתקדמות למציאה אוטומטית של העתקות

תרגילי הבית ייבדקו גם בבדיקה ידנית למציאת העתקות

יהיה נתן את תרגיל הבית שלו להעתיק או כמי שמעתיקמי שייתפס כלעונשים חמוריםצפוי כולל שאלות יבשות–

Page 10: ברוכים הבאים למת"ם

10מבוא לתכנות מערכות - 234122

נושאי התרגולים

עבודה בסיסית בסביבת 1תרגול :UNIX

תכונות מתקדמות של 2-5תרגולים :C-ו Abstract Data Types

עבודה ב-6-7תרגולים :UNIXוכתיבת תסריטים

8-12תרגולים :C++

חזרה ושאלות ממבחנים13-14תרגולים :

Page 11: ברוכים הבאים למת"ם

11מבוא לתכנות מערכות - 234122

t2התחברות ל-

עבודה על השרתאפשרויות התחברותעבודה במחשב אישי

Page 12: ברוכים הבאים למת"ם

12מבוא לתכנות מערכות - 234122

t2התחברות ל--תרגילי הבית יבדקו ע"י הידור והרצת הקוד המוגש על שרת הt2 כתובת השרת היאt2.technion.ac.il

לשם כך עליכם לדעת כיצד ניתן להתחבר אל השרת ולעבוד עליואינה בהכרח נכונהתכנית שעובדת על המחשב הביתי שלכם –

לוודא את נכונותה בעזרת הידורה והרצתה על השרתעליכם –

-בt2 קיימת מערכת הפעלה מסוג UNIX ולכן עליכם לוודא שהתכנית שלכם מתנהגת בצורה נכונה בסביבה זו

Page 13: ברוכים הבאים למת"ם

13מבוא לתכנות מערכות - 234122

דרכי עבודה

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

עם זאת, סגל הקורס לא יעזור בבעיות הצצות מעבודה בכלים אחרים–

-כדי לכתוב את התוכנה כך שתעבוד נכון על הt2:קיימות שתי אפשרויות - כתיבת הקוד ובדיקתו על השרת לאורך כל הדרךעבודה על השרת –

וביצוע בדיקות על השרת מדי פעםעבודה על מחשב אישי –

Page 14: ברוכים הבאים למת"ם

14מבוא לתכנות מערכות - 234122

עבודה על השרת

בשיטה זו נשתמש בתוכנה כלשהי כדי להתחבר אל השרת דרך הרשת לאחר ביצוע ההתחברות נקבל חלון טרמינל אשר מקושר לחשבוננו

במחשב המרוחקכל הפקודות שיוכנסו לטרמינל –

מתבצעות על המחשב המרוחק.

עיקר העבודה יהיה בעזרת מנשק טקסטואלי

ניתן גם להריץ תכניות עםמנשק גרפי

Page 15: ברוכים הבאים למת"ם

15מבוא לתכנות מערכות - 234122

אפשרויות התחברות

ניתן להתחבר לשרתt2:בשיטות הבאות :SSHהתחברות בעזרת –

יש להוריד את התוכנה מהכתובת windowsעבור מחשבים בסביבת •הבאה:

ftp://ftp.cs.technion.ac.il/pub/ssh-client/sshclient.exeעבור מחשבים בסביבת לינוקס )או מק) ניתן פשוט להשתמש בפקודה •

ssh.מחלון טרמינל

(:Windows )עבור Go-Globalהתחברות בעזרת –

http://www.technion.ac.il/GG/IPviewer.htmlגלישה לכתובת •

Internet Explorerעובד רק עם •

Page 16: ברוכים הבאים למת"ם

16מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

.עבודה על השרת אינה נוחה בגלל העומס הרב על השרת

-ניתן לעבוד על מחשב בבית או בחווה ולהעביר את הקוד אל הt2לבדוק את נכונות הקוד מומלץשימו לב שייתכנו הבדלים בין המחשבים ולכן –

אחת לכמה זמן )ולא רק בסוף העבודה(t2על ה-

Page 17: ברוכים הבאים למת"ם

17מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

-עבודה בEclipse CDT.סביבת העבודה המומלצת ע"י צוות הקורס–

t2משתמשת בקומפיילר דומה לזה שב-– או לינוקסwindowsניתנת להרצה על –

מותקנת במחשבי החווה–

-עבודה בVisualStudioMSDNAAניתן להורדה בחינם מ-–

Page 18: ברוכים הבאים למת"ם

18מבוא לתכנות מערכות - 234122

עבודה במחשב אישי

:)עבודה במחשבי הלינוקס בחווה )או התקנת לינוקסהשימוש בלינוקס יכול להקל מאוד על מלאכת הדיבוג מאחר וכמות –

קטנה יותרt2 ההבדלים בין מחשב המריץ לינוקס ל-

התקנתCygwin:Windows עבור מחשבי UNIXסביבה המדמה את –3מומלצת עבור תרגיל בית –

Page 19: ברוכים הבאים למת"ם

19מבוא לתכנות מערכות - 234122

מידע נוסף

כדי להקל על השימוש במגוון הכלים הגדול אתר הקורס מכיל מספרהמסבירים את הפרטים הטכניים עבור שימוש בכלים הללו: מדריכים

: מפרט את הדרכים השונות לעבודה )כולל התקנת t2מדריך התחברות ל-–Cygwin)

: מסביר את תהליך ההתקנה ויצירת פרויקט ראשוןEclipse CDTמדריך עבור –

המדריכים נמצאים באתר תחתCourse Material, Guides. ,אשר תרגולי עזר 3ייערכו בנוסף

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

זמן התרגולים יוכרז בהמשך–

שקפי התרגולים זמינים באתר תחת–Course Material, Auxiliary Tutorials

Page 20: ברוכים הבאים למת"ם

20מבוא לתכנות מערכות - 234122

UNIXעבודה בסביבת

?מהי מערכת הפעלה-מערכת הקבצים בUNIX עבודה בחלוןShell

Page 21: ברוכים הבאים למת"ם

21מבוא לתכנות מערכות - 234122

מהי מערכת הפעלה?

שכבת ביניים בין החומרה לבין התוכנהמערכת הפעלה מהווהלמחשב עבור משתמשים ומתכנתים גישה נוחה מאפשרת

עבור המשתמש: מספקת מנשק נוח–למחשב ושירותים בסיסיים

עבור המתכנת: מספקת מנשקים לניהול זיכרון,–קבצים והתקני חומרה נוספים

:דוגמאות למערכות הפעלה–Windows–Ubuntu–OSX–Android–iOS

Page 22: ברוכים הבאים למת"ם

22מבוא לתכנות מערכות - 234122

?UNIXמהי

UNIXהינה משפחה של מערכות הפעלה

יתרון מערכות ההפעלה ממשפחה זו הוא בקיומו של סטנדרט נוח עבור(POSIXהשירותים אותן היא מספקת )הקרוי

רוב מערכות ההפעלה המוכרות לכם עומדות בסטנדרט שלUNIXLinuxהמפורסמת ביותר כיום היא –Windowsיוצאת הדופן היא כמובן –

-בפרט - מערכת ההפעלה על שרת הt2 עליו נבדקים תרגילי הבית היא Linux.

Page 23: ברוכים הבאים למת"ם

23מבוא לתכנות מערכות - 234122

UNIXמערכת הקבצים ב- ארגון הקבצים במחשבמערכת ההפעלה אחראית בין השאר על-מערכת הקבצים בUNIX-מורכבת מקבצים ותיקיות – בדומה ל Windows

הוא אוסף סדור של תווים קובץ–

( מאפשרת שמירת מספר קבצים ותיקיות נוספות בצורה Directory) תיקיה–מסודרת

לכל קובץ או תיקיה יש שםאין מגבלות על מבנה השם )לא חייבת להיות סיומת(–

<name>.<extensionמקובל ששם קובץ הוא מהצורה >–

C עבור קובץ מקור בשפת test.cלמשל •(Windows ב-exe סיומת מיוחדת לקובץ הרצה )כמו UNIXאין ב-–

כל קובץ או תיקיה נמצאים בתוך תיקיה כלשהימלבד התיקיה הראשית–

Page 24: ברוכים הבאים למת"ם

24מבוא לתכנות מערכות - 234122

התייחסות לקבציםכדי להתייחס לקובץ יש להשתמש בשמו

נקראת "/"התיקיה הראשית

שמו המוחלטניתן להתייחס לקובץ ע"י:–/usr/mtm/exercise1/main.c

התו "/" משמש כסימן מפריד להגדרת מסלול במערכת הקבצים–

תיקיה הנוכחיתבכל חיבור ובכל זמן קיימת תיקיה המוגדרת כ

מהתיקיה הנוכחית:שם יחסי ניתן להתייחס לקובץ על ידי–main.c אם התיקיה הנוכחית היא/usr/mtm/exercise1

–exercise1/main.c אם התיקיה הנוכחית היא /usr/mtm

Page 25: ברוכים הבאים למת"ם

25מבוא לתכנות מערכות - 234122

ריבוי משתמשים

UNIX מרובת משתמשים היא מערכת הפעלה

תיקית ביתלכל משתמש במערכת קיימת

בהתחברות למערכת התיקיה הנוכחית היא תיקית הבית של המשתמש

Page 26: ברוכים הבאים למת"ם

26מבוא לתכנות מערכות - 234122

קיצורים

:בנוסף מוגדרים הקיצורים הבאים עבור שמות קבציםהתיקיה הנוכחית- נקודה אחת מייצגת את .–

תיקיית האב- שתי נקודות מייצגות את ..–

התיקיה בה נמצאת התיקיה הנוכחית•

של המשתמשתיקיית הבית - מייצגת קיצור ל~ –

–~user מייצגת קיצור לתיקיית הבית של המשתמש -usert2 היא תיקית הבית של הקורס בשרת mtmלמשל ~•

ניתן להשתמש בקיצור * כדי להתייחס למספר קבצים בבת אחת ע"ישימוש בתבניות, למשל:

מתייחס לכל הקבצים *–

–.*txt ."-יותאם לכל הקבצים ששמם מסתיים בtxt"

Page 27: ברוכים הבאים למת"ם

27מבוא לתכנות מערכות - 234122

דוגמה-נתון מבנה של מערכת קבצים לדוגמה בUNIX:?למה מתייחסות המחרוזות הבאות

/usr/uri/progs/Hello.c

/usr/uri/progs/Matam

progs

/~progs

/.hw1

/..hw2

~ari/progs

~mtm/public/1011a/ex1

/~progs*/

/ (root)

Matam

usrtmp

ari uri

progs progs

Hello.c

bin

hw1 hw2

Page 28: ברוכים הבאים למת"ם

28מבוא לתכנות מערכות - 234122

ShellShellקליפה( הוא כינוי לתוכנה המקשרת בין המשתמש לבין גרעין מערכת ההפעלה(

טקסטואליshellבדרך כלל המונח בשימוש עבור –

מתבצעת על ידי קבלת פקודה מהמשתמש, ביצוע החלפות טקסט בפקודה Shellעבודת ה-– ולבסוף שליחת הפקודה המעובדת למערכת ההפעלהShellבהתאם לתכונות ה-

-דוגמאות לshell:

–Bash )ברירת המחדל ברוב הפצות הלינוקס(

–C-Shell ( ברירת המחדל עבור מחשב הt2)

–Powershell (shell מתקדם עבור windows)

בקורס זה נלמד אתBash -מלבד מנשק בסיסי לביצוע פקודות הShell בעזרת תכונות מקל עלינו את העבודה

Tabמתקדמות, לדוגמה ההשלמה האוטומטית המתבצעת ע"י לחיצה על -הShell למספר קבצים בנוחות על פקודות, להתייחס לחזור, קיצורים יאפשר לנו להגדיר

אשר נוכל להשתמש בהם בפקודותמשתניםולהגדיר

Page 29: ברוכים הבאים למת"ם

29מבוא לתכנות מערכות - 234122

Shellעבודה בחלון ה-לאחר ההתחברות מתקבל חלון טרמינל בחלון זה יכול המשתמש להכניס את הפקודה הבאה למחשב ולקבל את הפלט

עבור פקודה זו הכנסת פקודה מתבצעת ע"י רישום שמה והפרמטרים שלה ולחיצה עלEnter:לכל הפקודות יש את המבנה הבא

> command [arg1] [arg2] [arg3] ...

(0מספר הארגומנטים לפקודה משתנה בהתאם לפקודה ויכול להיות כל מספר )כולל –

בשביל להתנתק בכל שלב ניתן לסגור את חלון הטרמינל או לרשום את הפקודהexit.

prompt )לא מקלידים

אותו(

שם הפקודה לביצוע

ארגומנטים לפקודה

Page 30: ברוכים הבאים למת"ם

30מבוא לתכנות מערכות - 234122

Shellהחלפת ה--ניתן להשתמש בפקודה הבאה כדי לקבל את שם הShell-הנוכחי ב Unix

> echo $0

tcsh במחשבים בהםBash אינה Shell-כמו בשרת ה( ברירת המחדל t2 ,)לדוגמה

כדי לשנות את ברירת המחדל: chsh (change shell)ניתןלהשתמש בפקודה

-חשוב להקפיד לכתוב את שם הShell הייחוס אליו( נכון, אחרת החשבון( נהרס

-מלבד החלפת הShell המשמש כברירת מחדל, ניתן תמיד להריץ Shell אחר כמו כל פקודה אחרת

> chshChanging shell for mtm.old shell: /bin/tcshNew shell: /bin/bashShell will be changed for mtm in approximately 5 minutes>

Page 31: ברוכים הבאים למת"ם

31מבוא לתכנות מערכות - 234122

UNIXפקודות בסיסיות ב- כדי להדפיס תוכן של תיקיה נשתמש בפקודהls:

> ls [flags] [files] עבור הדפסת תוכן התיקיה הנוכחיתlsניתן לרשום פשוט –

ניתן להוסיף את שם התיקיות שאת תוכנן נרצה להדפיס–

דגליםלרוב הפקודות שנלמד אפשר להוסיף פרמטרים נוספים הנקראים: יגרום להדפסת הפלט כך שכל קובץ מופיע ls עבור הפקודה lלמשל הדגל -–

בשורת פלט נפרדת עם מידע נוסף

יגרום לפקודה להדפיס גם פריטים נסתריםaהדגל -–

הוא כל קובץ או תיקיה ששמם מתחיל ב-. )נקודה(UNIXפריט נסתר ב-•

לשלב מספר דגלים בבת-אחתבהרבה מהפקודות ניתן –

כאשר הדגלים מיוצגים ע"י אות יחידה•

ls -alזהה לפקודה ls -a -lלמשל הפקודה •

Page 32: ברוכים הבאים למת"ם

32מבוא לתכנות מערכות - 234122

lsדוגמאות - >lshello.c private/ story.txt>ls privateexample.txt>ls -ltotal 12-rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.cdrwx------ 2 mtm users 4096 Sep 1 14:28 private/-rw------- 1 mtm users 1081 Sep 1 14:28 story.txt>ls -altotal 28drwx------ 3 mtm users 4096 Sep 1 14:29 ./drwx--x--x 50 mtm users 12288 Sep 1 10:52 ../-rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.cdrwx------ 2 mtm users 4096 Sep 1 14:28 private/-rw------- 1 mtm users 1081 Sep 1 14:28 story.txt

Page 33: ברוכים הבאים למת"ם

33מבוא לתכנות מערכות - 234122

ניהול תיקיות

הדפסת שם התיקיה הנוכחית ע"י הפקודהpwd:

> pwd ניתן להחליף את התיקיה הנוכחית ע"י הפקודהcd:

> cd <directory> ניתן ליצור תיקיה חדשה ע"י הפקודהmkdir:

> mkdir <name> ע"י הפקודה ריקהניתן למחוק תיקיה rmdir:

> rmdir <directory>

Page 34: ברוכים הבאים למת"ם

34מבוא לתכנות מערכות - 234122

ניהול תיקיות - דוגמאות>cd ~>pwd/usr/030/moshe>cd matammatam: No such file or directory.>mkdir matam>cd matam>pwd/usr/030/moshe/matam>cd ..>rmdir matam

מעבר לתיקית הבית בעזרת הקיצור ~

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

מתאימה והפקודה תופסק

מעבר לתיקית האב בעזרת הסימון ..

Page 35: ברוכים הבאים למת"ם

35מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים הפקודהcp משמשת להעתקת קבצים או תיקיות:ניתן להשתמש בפקודה בשתי דרכים

> cp [options] <file1> <file2>file2 בשם file1יוצרת העתק חדש של –

> cp [options] <file1> ... <file> <directory>יוצרת העתקים חדשים של כל הקבצים בתיקיה קיימת–

( אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלףoverwritten)

:דגלים שימושיים–-rמבצע העתקה רקורסיבית של תיקיות ותוכנן :

ללא דגל זה תיקיות אינן מועתקות•

–-iמבקש אישור לפני מחיקת קובץ קיים :

Page 36: ברוכים הבאים למת"ם

36מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים הפקודהmv קבצים או תיקיות או שינוי שמם להעברתמשמשת:ניתן להשתמש בפקודה בשתי דרכים

> mv [options] <file1> <file2>file2 ל-file1משנה את שמו של –

עובדת גם עבור תיקיות–

> mv [options] <file1> ... <file> <directory>אם הפרמטר האחרון הוא שם של תיקיה קיימת הפקודה מעבירה את הקבצים –

לתוכה

( אם קיים כבר קובץ בעל השם המבוקש הוא נמחק ומוחלףoverwritten)

:דגלים שימושיים–-iמבקש אישור לפני מחיקת קובץ קיים :

Page 37: ברוכים הבאים למת"ם

37מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים

הפקודהrm :מאפשרת מחיקת קבצים או תיקיות

> rm [ options ] <files>:דגלים שימושיים

–-rמבצע מחיקה רקורסיבית של תיקיות :

ללא דגל זה ספריות אינן נמחקות•

–-iמבקש אישור לפני מחיקת קובץ :

–-fלא מבקש אישור בשום מקרה :

שימו לב: לא ניתן לשחזר קבצים שנמחקו

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

> rm -rf *

Page 38: ברוכים הבאים למת"ם

38מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים - דוגמאות

>lshello.c private/ story.txt>cp hello.c prog.c>lshello.c private/ prog.c story.txt>mv prog.c private/program.c>lshello.c private/ story.txt>ls privateexample.txt program.c>mv hello.c story.txt private>lsprivate/

Page 39: ברוכים הבאים למת"ם

39מבוא לתכנות מערכות - 234122

פקודות לניהול קבצים - דוגמאות

>ls privateexample.txt hello.c program.c story.txt>rm -i private/story.txt rm: remove regular file `private/story.txt'? y>rm privaterm: cannot remove directory `private': Is a directory>rm -ri privaterm: descend into directory `private'? n>rm -rf private>ls>

Page 40: ברוכים הבאים למת"ם

40מבוא לתכנות מערכות - 234122

הדפסת תוכן של קבצים הפקודהcat מדפיסה למסך את תוכן הקובץ

> cat <file>אם הקובץ גדול המסך יגלול ולא נוכל לראות בנוחות את התחלתו–

אם לא מופיע שם קובץ הפקודה מדפיסה את הקלט הסטנדרטי )בד"כ קלט –מהמקלדת(

בהמשך נראה למה זה מועיל•

הפקודהmore מדפיסה למסך את התוכן, אך עוצרת כאשר נגמר המקום

> more <file> תגרום להדפסת שורה נוספתenterלחיצה על –

תפסיק את ההדפסהqלחיצה על –

הפקודהless היא שיפור שלmoreומאפשרת גלילה בשני הכיוונים ועוד אפשרויות

> less <file>

Page 41: ברוכים הבאים למת"ם

41מבוא לתכנות מערכות - 234122

הרשאות קבצים

לכל קובץ יש הרשאות הקובעות למי מותרת הגישה לקובץ ולצורך אילופעולות.

סוגי משתמשים3ישנם :.1User .בעל הקובץ -

בעל הקובץ הוא המשתמש שיצר את הקובץ במערכת.•

.2Group משתמש אשר שייך לקבוצה של בעל קובץ -

הגדרת קבוצות משתמשים הינה מחוץ לחומר הקורס•

.3Other שאר המשתמשים במערכת -

הרשאות שונות3לכל סוג משתמש יש :.1Read )מאפשרת קריאת תוכן הקובץ )כולל העתקתו -

.2Write מאפשרת שינוי הקובץ הקיים -

.3Execute מאפשרת להריץ את הקובץ -

Page 42: ברוכים הבאים למת"ם

42מבוא לתכנות מערכות - 234122

user group other

הרשאות קבצים

כדי לראות מהן ההרשאות ניתן להשתמש בפקודהls -l:לדוגמה ,> ls -l

-rwx--x--x 1 mtm users 6647 Aug 31 17:25 a.out*

-rw-r--r-- 1 mtm users 3047 Jun 20 10:35 hello.c

drwx------ 2 mtm users 4096 Aug 31 17:23 private/

drwxrwxrwx 2 mtm users 4096 Aug 31 17:23 public/

:שורת ההרשאות עבור כל קובץ היא רצף האותיות הבא

d r w x r w x r w x

אם מופיעה אות ההרשאה קיימת–

אם מופיע מקף ההרשאה אינה קיימת–

מצייני ההרשאות

מציין אם dהתו מדובר בתיקיה

Page 43: ברוכים הבאים למת"ם

43מבוא לתכנות מערכות - 234122

שינוי הרשאות קבציםבעל הקובץ רשאי לשנות את ההרשאות של הקובץ שינוי ההרשאות ניתן בעזרת הפקודהchmod:

> chmod <mode> <files>–<mode-שרשור תווים המורכב מ - >who, opcode-ו permission.a, ברירת המחדל היא whoאם לא מצוין –

Who Opcode Permission

u - User + - Add permission r - Read

g - Group - - Remove permission w - Write

o - Other = - Assign permission x - Execute

a - All

:דוגמאות

> chmod u+x file

> chmod g-w,o-w file

> chmod =r file

> chmod u=rwx, g=rx, o=r file

---------rwxrwxrwx

--x------rwxr-xr-xr--r--r--rwxr-xr--

Page 44: ברוכים הבאים למת"ם

44מבוא לתכנות מערכות - 234122

הרשאות עבור תיקיות

:עבור תיקיות להרשאות המשמעות שונה–Read רשימת הקבצים– הרשאה לראות את

–Write בתיקייה קבצים שינויתיקייה או מחיקת/יצירת– הרשאה של

–Execute לתיקייה כניסה– הרשאת

?לדוגמה, מה ההרשאות הנדרשות לביצוע כל אחת מהפעולות הבאות> cd my_dir> mkdir directory> rmdir directory> ls

ExecuteWriteWriteRead

Page 45: ברוכים הבאים למת"ם

45מבוא לתכנות מערכות - 234122

manהפקודה המידע שהוצג כאן לגבי כל אחד מהפקודות חלקי ניתן בכל שלב להשתמש בפקודהman כדי לראות קובץ עזרה עבור

פקודה מסוימת.

> man <command name> של פקודה מכיל את צורת ההפעלה שלה, דגלים אפשריים ועוד.manה-–

:למשל

> man ls

> man rm

> man man

Page 46: ברוכים הבאים למת"ם

46מבוא לתכנות מערכות - 234122

ערוצי קלט/פלט

לכל תכנית יש ערוצי קלט וערוצי פלט – אלו הם הדרכים בהם היא מקבלתקלט ומציגה את הפלט שלה

-לכל תכנית קיימים בUNIX 3:ערוצי ברירת מחדל : ממנו מקבלת התכנית את הקלטערוץ הקלט הסטנדרטי–

ברירת המחדל היא הפקודות המוכנסות בחלון הטרמינל•

: אליו מודפס הפלטערוץ הפלט הסטנדרטי–

ברירת מחדל היא הדפסה לחלון הטרמינל•

: ערוץ פלט נוסף המשמש להדפסת הודעות שגיאהערוץ השגיאות הסטנדרטי–

ברירת המחדל היא הדפסה לחלון הטרמינל•

ערוצי קלט/פלט נוספים יכולים להיות למשל קבצים, נתייחס למקרים אלובהמשך הקורס

Page 47: ברוכים הבאים למת"ם

47מבוא לתכנות מערכות - 234122

הפניית קלט/פלט בעת קריאה לפקודה בטרמינל ניתן להפנות את ערוצי הקלט והפלט

הסטנדרטיים לקבצים הפניית ערוץ הפלט הסטנדרטי נעשית באמצעות האופרטור"<":

> command [arguments] > <output_file>

הפניית ערוץ הקלט הסטנדרטי נעשית באמצעות האופרטור">":> command [arguments] < <input_file>

2"הפניית ערוץ השגיאות הסטנדרטי נעשית באמצעות האופרטור">:> command [arguments] 2> <errors_file>

.אם ננסה לכתוב לתוך קובץ קיים, נדרוס את תוכן הקובץ הקיים-אם ברצוננו להוסיף את הפלט להמשכו של קובץ קיים ניתן להשתמש ב">>"

)בהתאמה(<<"2"או

Page 48: ברוכים הבאים למת"ם

48מבוא לתכנות מערכות - 234122

הפניית קלט/פלט

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

> command [arguments] < input > output

:כדי להפנות את ערוץ השגיאות ואת ערוץ הפלט ניתן לרשום

> command [arguments] > output 2> errors

:כדי להפנות את ערוץ השגיאות לערוץ הפלט יש לכתוב

> command [arguments] 2>1

:כדי להדפיס את ערוץ הפלט וערוץ השגיאות לאותו הקובץ יש לכתוב

> command [arguments] > output 2>1

Page 49: ברוכים הבאים למת"ם

49מבוא לתכנות מערכות - 234122

הפניית קלט/פלט - דוגמאות בעזרת הפניית קלט/פלט ניתן לעשות שימושים שונים בפקודהcat:למשל

>cat > file.txt

Hello world!

>ls

file.txt

>cat file.txt

Hello world!

>cat file.txt > file2.txt

>cat file2.txt

Hello world!

>cat file.txt >> file2.txt

>cat file2.txt

Hello world!

Hello world!

הכנסת קלט מהמקלדת

Page 50: ברוכים הבאים למת"ם

50מבוא לתכנות מערכות - 234122

הפניית קלט/פלט - דוגמאות

>cat < file2.txt > file.txt

>cat file.txt

Hello world!

Hello world!

>rmdir foo

rmdir: `foo': No such file or directory

>rmdir foo > output.txt

rmdir: `foo': No such file or directory

>rmdir foo 2> error.txt

>cat error.txt

rmdir: `foo': No such file or directory

הודעת השגיאה נשלחת לערוץ השגיאות ולכן אינה מופנית לקובץ

Page 51: ברוכים הבאים למת"ם

51מבוא לתכנות מערכות - 234122

t2תכנית ראשונה ב-

-הידור תכניות בt2הרצת ודיבוג תכניות

Page 52: ברוכים הבאים למת"ם

52מבוא לתכנות מערכות - 234122

Hello world-ב t2 נדגים כעת כיצד ניתן לכתוב תכנית עלt2ולהריצה

:לשם כך עלינו לעבור את השלבים הבאיםt2ל- התחברות1.

ראינו כבר כיצד ניתן לעשות זאת במספר דרכים•

הקוד בעורך כלשהו כתיבת2.

(compilerהקוד בעזרת מהדר )הידור 3.

הקוד הרצת4.

Page 53: ברוכים הבאים למת"ם

53מבוא לתכנות מערכות - 234122

כתיבת הקודכדי לכתוב קוד נצטרך להשתמש בתכנית כלשהי לעריכת טקסט-מספר עורכי טקסט המותקנים בt2:

:ללא מנשק גרפיתכניות –

•nanoפשוטה לשימוש, אבל לא נוחה לעריכת קוד בטווח הארוך -

•vim מכילה את כל התכונות שמשתמש צריך, אבל דורשת זמן הסתגלות ארוך יותר -

•emacs כבדה וגם דורשת קצת זמן הסתגלות אבל בעלת אפשרויות רבות למשתמשים -מתקדמים

:בעלות מנשק גרפיתכניות –

•gvim גרסה גרפית של -vim•nedit -דומה להתנהגות תוכנות דומות ב( תכנית פשוטה לשימוש -Windows אך בעלת )

אפשרויות מתקדמות יותר

•emacs אם מנשק גרפי זמין התוכנה תופעל עם מנשק גרפי -

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

Page 54: ברוכים הבאים למת"ם

54מבוא לתכנות מערכות - 234122

קמפול הקוד

.כדי לקמפל את הקוד שכתבנו לשפת מכונה יש להשתמש בקומפיילר בסביבתUNIX מותקן כקומפיילר ברירת מחדל הקומפיילר gcc

–GNU Compiler Collection

:אופן השימוש

> gcc <flags> <files> [-o <output file>]

למשל על מנת לקמפל את הקוד בקובץhello.c:

> gcc hello.c -o hello יווצר קובץ הרצה בשם המתאיםאין שגיאות אם ערוץ השגיאותהן יודפסו למסך לקיימות שגיאות אם

Page 55: ברוכים הבאים למת"ם

55מבוא לתכנות מערכות - 234122

gccשימוש ב- אם הדגל-o אינו מוגדר הקומפיילר יבחר בשם קובץ הפלט a.out

כברירת מחדל

הדגל-g-משמש להוספת מידע הנחוץ ל debuggerכשאתם מתכננים לדבג הקפידו להשתמש בדגל זה–

יכול להדפיס מידע מדויק על השורות בהן קורות debuggerבעזרת דגל זה ה-–השגיאות

:ניתן לקמפל מספר קבצים בבת אחת

> gcc file1.c file2.c files3.c –o my_prog

> gcc *.c –o my_prog

Page 56: ברוכים הבאים למת"ם

56מבוא לתכנות מערכות - 234122

gccשימוש ב-:במהלך הקורס נדרוש לקמפל את הקוד עם הדגלים הבאים

> gcc -std=c99 -Wall -Werror -pedantic-errors ...:משמעות הדגלים

–-std=c99 קובע את הסטנדרט :C99המוסיף כמה תכונות חשובות לשפה

–-Wall מציג את כל האזהרות האפשריות. אזהרות הן בעיות בקוד שאמנם ניתן :להדר אך בדרך כלל מעידות על באגים

–-Werrorמתייחס לאזהרה כאל שגיאה :

אין הצדקה לקוד המתקמפל עם אזהרות ולכן הדרישה בקורס היא לקוד •המתקמפל ללא אזהרות

–-pedantic-errors מגביל את הקוד לסטנדרט הנבחר כך שדברים אשר המהדר :יודע להתמודד איתם אך אינם חלק מהסטנדרט ייחשבו כשגיאות

מאחר והם מקלים על העבודה תמיד להשתמש בדגלים אלו מומלץ (חובה במהלך הקורסומשפרים את איכות הקוד )

Page 57: ברוכים הבאים למת"ם

57מבוא לתכנות מערכות - 234122

הרצת הקוד

לאחר הקומפילציה מתקבל קובץ הרצהכאמור, אין לקובץ סיומת מיוחדת–

–gccדואג בצורה אוטומטית להוסיף הרשאות ריצה לקובץ

בשביל להריץ את הקובץ עלינו לרשום את שמו כשם הפקודה להרצהלהרצת פקודה בספריה הנוכחית יש להוסיף “./” לפי שם הקובץ–

בהמשך נראה כיצד ניתן לאפשר לקובץ לרוץ ללא הוספת “./”–

> ./helloHello World!