תירגול 1 אדמיניסטרציה עבודה עם t2 מערכת הקבצים ב - unix...
Post on 19-Dec-2015
266 views
TRANSCRIPT
1תירגול אדמיניסטרציה
t2עבודה עם מערכת הקבצים ב-
UnixUnix, gccתכנית ראשונה ב-
ברוכים הבאים למת"ם !
234122
מטרת הקורס
לימוד שיטות וכלים בסיסיים בפיתוח תוכנה•
המשך של מבוא למדעי במחשב, שם לומדים •לכתוב תוכניות קטנות
במת''ם מדובר בפיתוח של תוכנה גדולה•שיטות וכלים בסיסיים לפיתוח תוכנה–
3
אדמיניסטרציה
אתר הבית: •http://webcourse.cs.technion.ac.il/234122
האתר מכיל מידע רב וחשוב המתעדכן במהלך הסמסטר.
מהקורס: בכדי להירשם לרשימת e-mailקבלת • של הקורס, יש להיכנס לאתר e-mailה
http://grades.cs.technion.ac.il להיכנס , ולוודא כי תחת Settings/AutoUpdateללשונית
"Announcements Update מסומן "e-mail.
4
של הקורסe-mailקבלת
5
תרגילי בית
במהלך הסמסטר יינתנו ארבעה תרגילי בית בנושאים •הבאים:
–C – 5%–ADT – 10%–C-Shell – 5%–C++ -10%
תקפיםציוני תרגילי בית •לכל תרגיל ישנו מתרגל האחראי על התרגיל. שאלות •
הנוגעות לתרגיל מסוים, יש להפנות למתרגל האחראי על התרגיל.
נקודות עבור כל יום 5הגשה באיחור תגרור הורדה של •איחור.
6
תרגילי בית
תרגילי הבית בזוגות : התרגילים דורשים הרבה •עבודה, מומלץ לעשותם בזוגות.
רשימת מחפשי שותף מופיעה באתר הקורס–כל סמסטר מספר אנשים נעזבים על ידי השותפים –
שלהם באמצע התרגילים. תשמרו על קשר טוב עם השותף שלכם – זה חלק מתהליך פיתוח התוכנה
סגל הקורס לא יטפל בבעיות בין שותפים ולא ייתן –שום הקלות לשותפים שנעזבו
7
חיפוש שותף
8
תרגילי בית
הגשת תרגילי בית: יש להגיש עותק מודפס של •תרגיל הבית לתא של הקורס, וגם לבצע הגשה
אלקטרונית דרך אתר הקורס.
במהלך העבודה על תרגילי הבית מומלץ לגבות •את הקבצים באופן שותף על כמה מחשבים –
זה חלק מהפיתוח תוכנה. לא יינתנו שום הקלות לסטודנטים שהקבצים שלהם
נמחקו/נהרסו מסיבה כלשהי.
9
תרגילי בית
יש לשמור מספר האישור של ההגשה •האוטומטית. מומלץ גם לא למחוק את התיקייה
שמכילה את הקבצים שהוגשו עד לקבלת t2ב-הציון עבור התרגיל ולא לגעת בקבצים שהוגשו.
כל זה עשוי לעזור למקרה של בעיות עם ההגשה האלקטרונית.
10
הגשה אלקטרונית
11
t2עבודה עם
t2הבדיקה האוטומטית של התרגילים נעשית ב-•stud.technion.ac.ilהוא t2 השם האינטרנטי של•קיימות כמה אפשרויות עבודה:•
t2לפתח ב-–לפתח רוב הזמן במחשב אחר ורק את השלב הסופי של –
)שעלול לקחת הרבה מאוד זמן( –debuggingבדיקות ו. לצורך כך יש להעביר קבצים מהמחשב האחר -t2לעשות ב
.t2ל-המחשב האחר לפיתוח יכול להיות מחשב כלשהו בבית או
בחווה. ניתן לפתח באחת הסביבות :–Windows–Cygwin (on Windows)–Linux
12
מערכת הפעלה
•Linux-ו Windows הן מערכות (Operating systems)הפעלה
למערכת הפעלה יש שני תפקידים •בהקשר של פיתוח תוכנה
מתווכת בין התוכנה לחומרה ומנהלת –משאבים בשביל התוכנה בזמן הריצה
- ניהול זיכרון, קבצים וכו'.משמשת מעין "אתר בניה" בשביל –
התוכנה
תוכנה
חומרה
מערכת הפעלה
13
t2עבודה עם
t2
חוותמחשבים
Windows / Linux
Windows / Linux / Cygwin
Linux
SSH Secure Shell Client
t2התחברות ל-
SSH Secure File Transfer Clientהעברת קבצים
14
t2 - Linux• Linux היא מערכת ההפעלה דמויית Unixשמותקנת ב- t2 . מתבצעת בצורה טקסטואלית ולא גרפית Unixהעבודה ב-•
( Windows)לא חלונאית כמו ב-ניתן להקיש פקודות למחשב ולקבל פלט Unix בחלון של•
של הפקודות באותו החלון( command line)מקישים פקודות בשורת הפקודה •כשהמחשב מוכן לקבל פקודה לביצוע, שורת הפקודה •
promptמכילה מוצג ניתן לתת למחשב כל פקודה שהיא promptכשה-•
. המחשב יבצע את הפקודה , ולאחר Enterואח"כ להקיש בכדי שנוכל לתת לו את promptשיסיים יציג שוב את ה
הפקודה הבאה.
15
SSH) דרך t2 )ב-Unixעבודה עם
command line
user’s commands
computer’s output
the network name of t2
prompt
התקנה והסברים - מהאתר של הפקולטה:
Computing Services -> Services -> software support -> SSH)ראו קישור בתחתית העמוד(
16 http://system.cs.technion.ac.il/Software/software_support.htm
העברת קבצים בין מחשבים
חלון My Computer
חלון SSH
חלון SSH FTP
ניתן לגרור ע''י העכבר קבצים בין המחשב המקומי
(t2למחשב המרוחק )
17
t2( Go-Global )עבודה עם
SSH להבדיל מ-–clients לא דורש
התקנה, נכנסים דרך אתר אינטרנט.
מאפשר עבודה עם –יישומים גרפיים בצורה
חלונאית– החשוב debugger dddבהם
http://www.technion.ac.il/GG/IPviewer.html
18
UNIXסביבה דמויית
•Cygwin סביבה דמויית – UNIX הרצה על windows
בבית ואין PCיתרונות: קלה להתקנה, עובדים על ה-–t2בעיות של עומס כמו על ה-
UNIXחסרונות: ישנם מס' הבדלים מעבודה על –רגיל: סיומות קבצים, תו שונה בסוף שורה וכו'.
www.cygwin.com
19
מידע נוסף
מידע נוסף לגבי כלים לעבודה בקורס מופיע • <- Course Materialבאתר של הקורס, בדף
Helpers
20
UNIXבסיסי
Unixמערכת הקבצים ב- (file)היחידה הבסיסית – קובץ •
אוסף סדור של תווים– אין הגבלה על מה יכול להכיל–
או להיות קובץ הרצה. ASCIIיכול להכיל למשל טקסט ע"י תוי לכל קובץ יש שם•
אין מגבלות על אורך השם– יכול להכיל כל צרוף של תווים – < name>.<extension<מקובל ששם קובץ הוא מהצורה –
C - קובץ מקור בשפת test.cלמשל: hello.o קובץ - object
סיומת של קובץ•אין מגבלה על אורכה–לקובץ הרצה יכולה להיות כל סיומת שהיא. )אין הכרח שתהיה –
(exe.סיומת
22
Unix מערכת הקבצים ב-•Unix הנה מערכת מרובת משתמשים. לכל משתמש יש
חשבון משלו במחשב. חשבון זה מקנה מרחב של קבצים שבו רק הוא יכול להשתמש.
, יש תיקיות Windowsוב- MS-DOS , כמו ב Unixב- •(Directories שבהם ניתן לשמור קבצים קשורים לוגית )
ביחד. מאפשרות לכל משתמש לבנות Unixהתיקיות ב - •
מערכת קבצים היררכית בצורה של עץ. שורש העץ יהיה תיקיית הבית של כל משתמש. הענפים יהיו התיקיות
והעלים יהיו הקבצים עצמם. נשמר המידע על תיקייה והקבצים המוכלים בה Unixב - •
בקבצים מיוחדים.
23
דוגמאUnix מערכת הקבצים ב-
במערכת הזאת ישנם שני •. הם יכולים uri ו- ariמשתמשים,
ליצור תיקיות עם אותם שמות שמות נוספים לתיקייה בעברית:•
מדריך–
ספרייה–
/ (root)
tmp bin usr
ari uri
progs progs
Hello.c Matam
hw1 hw2
24
Unix מערכת הקבצים ב-
בכל שלב העבודה המשתמש "נמצא" Unixב-•בתיקייה כלשהי – "התיקייה הנוכחית".
התיקייה העליונה של כל משתמש נקראת •(. כאשר home directoryתיקיית הבית שלו )
המשתמש נכנס לחשבון שלו, הוא נמצא בתיקיית הבית שלו. ניתן לעבור בין תיקיות
.cdע''י פקודה pathnamesניתן לציין קבצים )או תיקיות( לפי •
full או relative pathnames יחסית לתיקייה( הנוכחית(
25
Unixסימונים לתיקיות וקבצים ב-
או סימן מפריד (root) תיקיית השורש / –pathnameב-
התיקייה הנוכחית. –
התיקייה שמכילה את התיקייה הנוכחית – .. –"תיקיית האב"
תיקיית הבית של המשתמש הנוכחי~ –
– ~uri תיקיית הבית של משתמשuri
כל הקבצים והתיקיות בתיקייה מסוימת* –26
Unix מערכת הקבצים ב-מה מציינים השמות הבאים? :•/usr/uri/progs/Hello.c/usr/uri/progs/Matam
progs/~progs/.hw1
/..hw2~ari/progs~mtm/public/0809a/ex1/~progs*/
/ (root)
tmp bin usr
ari uri
progs progs
Hello.c Matam
hw1 hw2
27
פקודות לעבודה עם תיקיות
ניתן לבצע את הפעולות הבאות לצורך העבודה •עם התיקיות
לשאול מהי התיקייה הנוכחית–לעבור לתיקייה כלשהי )לשנות את התיקייה –
הנוכחית(לראות תוכן תיקייה כלשהי–ליצור תיקייה חדשה–למחוק תיקייה –
28
פקודות לעבודה עם תיקיות
pwdלשאול מהי התיקייה הנוכחית
cd <directory name>
לעבור לתיקייה אחרת
>pwd/usr/ari
>cd progs>pwd/usr/ari/progs
>cd.. >pwd
/usr/ari
29
פקודות לעבודה עם תיקיות
ls <directory name> לראות את תוכן התיקייה. לדוגמא, לראות את תוכן
התיקייה הנוכחית:>ls
progs:progsלראות את תוכן תת-תיקייה •
>ls progshellohello.c
30
פקודות לעבודה עם תיקיות
ניתן לראות את רשימת הקבצים באופן מפורט •יותר:
> ls -aldrwxr-x--- 14 ari 1536 Aug 5 14:04 .drwxr-xr-x 48 root 1024 Aug 1 04:30 ..-rw------- 1 ari 2425 Mar 12 11:59 .login-rw-r--r-- 1 ari 2425 Mar 12 11:59 moshedrwx------ 2 ari 512 May 13 03:30 progs
התאריך האחרון הרשאותשהקובץ שונה
מס' בתיםשם הקובץ
בעל הקובץ
.לתיקייה – מספר תת-תיקיות, כולל * ..וגם
מס' לינקים
*
31
פקודות לעבודה עם תיקיות
mkdir <directory name>:docsליצור תיקייה חדשה. לדוגמא, ליצור תיקייה בשם
rmdir <directory name> :docsלמחוק תיקייה. לדוגמא, למחוק את התיקייה
ניתן למחוק תיקייה רק אם היא ריקה.
> mkdir docs> lsdocs progs> ls docs>
> rmdir docs> lsprogs
32
פקודות לעבודה עם קבצים ותיקיות
ניתן לבצע את הפעולות הבאות לצורך העבודה •עם קבצים ותיקיות
להעתיק קבצים או תיקיות–להעביר קבצים או תיקיות לתיקייה כלשהי–
לשנות שם של תיקייה/קובץ
למחוק קובץ/תיקייה–
33
פקודות לעבודה עם קבצים ותיקיות
cp [options] file1 file2cp [options] file1 file2… directory
או העתקת אחד או יותר קבצים file2 ל-file1העתקת . אם קובץ היעד קיים, קובץ המקור נכתב עליו. אם directoryל-
directory .אופציות: קיימת, הקובץ נכתב בתוך התיקייה- - ii .בקש אישור לפני מחיקת קובץ קיים--rr .העתק רקורסיבית תיקייה עם כל קבציה ותת-התיקיות שבה
>cp hello.c prog1.c >ls
hello.c prog1.c
>cp hello.c prog1.c progs >ls progs
hello.c prog1.c
>cp -r my-dir new-dir new-dir בשם my-dirיצירת עותק נוסף של התיקייה :progs לתיקייה prog1.cו hello.c העתקת :prog1.cבשם hello.c יצירת עותק נוסף של
34
פקודות לעבודה עם קבצים ותיקיות
rm [options] files אחד או יותר. כדי למחוק קובץ צריכה להיות fileמוחקת
הרשאת כתיבה לתיקייה בה נמצא הקובץ. אם אין הרשאת כתיבה לקובץ יידרש אישור למחיקה.
אופציות:•-f .מחק קבצים בלי הרשאת כתיבה ללא אישור • -i.בקש אישור לפני מחיקת כל קובץ •-r אם file הוא תיקייה מחק אותה ואת כל תכולתה
כולל תת-תיקיות. אזהרה: פקודה זו יכולה להיות הרסנית•הערה:•
אין עקרונית אפשרות לשחזר קבצים שנמחקו.Unixב -
>rm –rf *
35
פקודות לעבודה עם קבצים ותיקיות mv [options] sources target
משמשת להעברה של קבצים ותיקיות או שינוי שמות שלהם. האפשרויות הן: >mv old_file_name new_file_name
במידה וקובץ בשם new_file_name משתנה ל- old_file_nameשם הקובץ new_file_name קיים בתיקייה הנוכחית, הקובץ הקיים נמחק (overwritten).
>mv old_dir_name new_dir_name במידה ותיקייה בשם new_dir_name משתנה ל -old_dir_nameשם התיקייה
new_dir_name לא קיימת נהית תת תיקייה old_dir_name קיימת, new_dir_nameבמידה ותיקייה בשם
! new_dir_nameשל >mv file1 file2 … dir_name
.dir_name… מועברים לתיקייה file1, file2הקבצים אופציות:
-i.בקש אישור לפני מחיקת קובץ קיים
36
פקודות לעבודה עם קבצים ותיקיות
mv [options] sources targetדוגמאות:
ל- hello.cלשנות את שמו של הקובץ prog2.c:
> mv hello.c prog2.c> lsprog2.c
> mv prog2.c progs> ls progshello.c prog1.c prog2.c
:progs לתיקייה prog2.cלהעביר את הקובץ
37
הרשאות קבצים
לכל קובץ יש הרשאות שקובעות למי מותרת הגישה לקובץ ולצורך אילו פעולות. כאשר קובץ חדש נוצר נרשם
במערכת הקבצים מי יצר אותו והוא נקרא בעל הקובץ. סוגים של משתמשים העשויים לגשת לקובץ:3ישנם
1.User.בעל הקובץ - 2.Group.משתמש ששייך לקבוצה של בעל הקובץ - 3.Other.כל שאר המשתמשים במערכת שאינם בנ"ל -
הרשאות שונות:3לכל סוג משתמש יש 1.Read.האם מותר לו לקרוא )להעתיק( את הקובץ - 2.Write.האם מותר לו לכתוב על )לשנות( את הקובץ - 3.Execute.האם מותר לו להריץ את הקובץ -
הגדרת קבוצות
משתמשים מחוץ לחומר
של הקורס
38
הרשאות קבצים
r w x r w x r w x
user group other
> ls -aldrwxr-x--- 14 ari 1536 Aug 5 14:04 .drwxr-xr-x 48 root 1024 Aug 1 04:30 ..-rw------- 1 ari 2425 Mar 12 11:59 .login-rw-r--r-- 1 ari 2425 Mar 12 11:59 moshedrwx------ 2 ari 512 May 13 03:30 progs
39
שינוי הרשאות קבצים
chmod mode files
mode הוא שרשור תוים של who, opcode ו permission. who ברירת המחדל היא( הוא אופציונלי a.)
Permissionr - Readw - Writex - Execute
Opcode+ - Add permission- - Remove permission= - Assign permission )and remove permission of the unspecified fields(.
Whou - Userg - Groupo - Othera – All
>chmod u+x file
>chmod g-w,o-w file
>chmod =r file
>chmod u=rwx, g=rx, o=r file
--------- --x------rwxrwxrwx rwxr-xr-x
r--r--r--rwxr-xr--
40
הרשאות לתיקיות
•Executeהרשאת כניסה לתיקייה –
•Writeהרשאת יצירת/מחיקת קבצים בתיקייה –
•Readהרשאה לראות את רשימת הקבצים –
> ls -aldrwxr-x--- 14 ari 1536 Aug 5 14:04 .drwxr-xr-x 48 root 1024 Aug 1 04:30 ..-rw------- 1 ari 2425 Mar 12 11:59 .logindrwx------ 2 ari 512 May 13 03:30 progs
מסמנת שזה תיקייהdהאות 41
הרשאות הנדרשות לביצוע פקודות על תיקיות
•Executeהרשאת כניסה לתיקייה –
•Write הרשאת יצירת/מחיקת קבצים – בתיקייה
•Read הרשאה לראות את רשימת – cd [dir]<הקבצים
>mkdir directory
>rmdir directory
>ls
42
פקודות שימושיות נוספות
more <file name>
less <file name>
man <command name>לקרוא מידע מפורט על פקודה
להציג קובץ על המסך עם עצירה אחרי כל דף>more prog2.c
>man ls>man man
43
Unix ראשונה ב-Cתוכנית
#include >stdio.h>int main)({ printf )"Hello world \n"(; return 0;}
בעורך טקסט כלשהו :hello.cכותבים קובץ 1.
>gcc hello.c –o hello . מהדרים )מקמפלים( את הקובץ 2hello.c:
helloנוצר קובץ הרצה
hello:>./hello.מריצים את קובץ ההרצה 3Hello world>44
Unix ראשונה ב-Cתוכנית
> /usr/uri/progs/hello
> ~/progs/hello
>./hello
חייבים לציין את השם המלא של קובץ •ההרצה )תמיד אפשר להשתמש
בסימונים . וגם ~ (
אם לא מציינים את השם המלא של קובץ •ההרצה, עלולים לקבל הודעת שגיאה
הבאה:
> hellohello: Command not found.
45
Unix ראשונה ב-Cתוכנית
כדי להשתמש בשם היחסי של הקובץ, יש • להריץ את הפקודה הבאה
הפקודה הזאת ומשמעותה יילמדו בתרגיל על • C-shell
> set path=)$path .(
46
gccשימוש בקומפיילר .t2 המותקן על gccבקורס נשתמש בקומפיילר •הקומפיילר מייצר, בתנאי שאין שגיאות, קובץ הרצה •
a.out.בשם :file.cלדוגמא, הפקודה הבאה מקמפלת את הקובץ
>gcc file.c•-o <destination name> האופציה הזאת גורמת לקומפיילר
לקרוא לקובץ פלט בשם אחר> gcc file.c -o my_prog
•-g האופציה הזאת גורמת לקומפיילר להכניס לקובץ הרצה )חייבים להשתמש בה כשמדבגים(debuggerמידע הנחוץ ל-
> gcc file.c -g -o my_progניתן גם ליצור קובץ הרצה אחד ממספר קבצי מקור:•
>gcc file1.c file2.c file3.c -o my_prog
47
gccשימוש בקומפיילר האופציות הבאות גורמות לקומפיילר להדפיס את רוב האזהרות •
(warnings)האפשריות -Wall
- pedantic-errors> gcc -Wall -pedantic-errors file.c -o my_prog
האזהרות נועדו להתריע על באגים ובעיות פוטנציאליות בתוכניות•תיקון ההזהרות מקטין הסתברות לבאגים– – עבודה קשה שלוקחת הרבה זמןdebugging חוסך –
חשוב מאוד להבין ולתקן את כל האזהרות של הקומפיילר•לא להתעלם–לא "להשתיק"–לא לתקן באופן מקרי בלי להבין על מה הייתה האזהרה–
48
,t2, gccהדגמת העבודה עם debugger
49