Скачать презентацию 7 תרגול מס UNIX- תוכניות סטנדרטיות ב Скачать презентацию 7 תרגול מס UNIX- תוכניות סטנדרטיות ב

8f2007ba9eafaa6b3937ec1e843d69fa.ppt

  • Количество слайдов: 40

7 ' תרגול מס UNIX- תוכניות סטנדרטיות ב Ø C-ShellØ litalma@cs. technion. ac. il 7 ' תרגול מס UNIX- תוכניות סטנדרטיות ב Ø C-ShellØ [email protected] technion. ac. il לי-טל משיח

 תוכניות סטנדרטיות ב- UNIX Ø בכל מחשב אשר מותקנת בו מערכת הפעלה מסוג תוכניות סטנדרטיות ב- UNIX Ø בכל מחשב אשר מותקנת בו מערכת הפעלה מסוג Unix מותקנות בנוסף מספר תוכנות סטנדרטיות אשר ניתן להיעזר בהן Ø ניראה מספר תוכניות ודרכים לשלב בינהן

 קבלת רשימת הקבצים במדריך Ø הפקודה ls > ls progs מדפיסה את רשימת קבלת רשימת הקבצים במדריך Ø הפקודה ls > ls progs מדפיסה את רשימת הקבצים הנמצאים במדריך הנוכחי. אפשרויות נוספות: ls Ø מדפיסה את רשימת הקבצים הנמצאים בתת המדריך. > ls progs hello Ø הפקודה ls עם הדגל -l מאפשרת לראות את רשימת הקבצים במדריך הנוכחי באופן מפורט יותר > ls -l 7 total -rw-r--r-- 1 ari 2425 Mar 12 11: 59 moshe drwx------ 2 ari 512 May 13 03: 30 progs Ø הפקודה ls עם הדגל -a מאפשרת לראות בנוסף גם קבצים נסתרים )קבצים ששמם מתחיל ב". " – בד"כ קבצי אתחול לתוכניות שונות( . login . cshrc . > ls -a . moshe progs

 סקירת תוכן קבצים Ø הפקודה cat >cat file_1 file_2 … file_k מדפיסה את סקירת תוכן קבצים Ø הפקודה cat >cat file_1 file_2 … file_k מדפיסה את תוכן הקבצים file_1, file_2, …, file_k לפלט הסטנדרטי Ø הפקודה ] head [-n] [files מדפיסה רק מספר מהשורות הראשונות של קובץ. האופציה -n מאפשרת להדפיס n מהשורות הראשונות )ברירת המחדל היא 01(. >head -20 phone ידפיס את 02 השורות הראשונות בקובץ phone Ø הפקודה] tail [options] [files מדפיסה רק מספר מהשורות האחרונות של קובץ האופציה -n מאפשרת להדפיס את n השורות האחרונות בקובץ )ברירת המחדל היא 01(. האופציה +n מאפשרת להדפיס את כל השורות האחרונות החל מהשורה ה -n ית בקובץ.

 שילוב תוכניות Ø נרצה להדפיס את השורות השניה והשלישית של קובץ בשם myfile שילוב תוכניות Ø נרצה להדפיס את השורות השניה והשלישית של קובץ בשם myfile 3 > head – 3 < myfile > first 3 > tail – 2 < first Ø יצרנו קובץ זמני בשם 3 first אשר נידרש למחקו אח"כ Ø נראה דרך פשוטה יותר לביצוע משימה זו של הפניית פלט של תוכנית אחת לקלט של התוכנית הבאה ע"י שמוש ב –pipelining העברה ישירה של פלט של תוכנית אחת לקלט של תוכנית אחרת

 Pipelining >2 <program 1> | <program 2 program לוקחת כקלט את הפלט של Pipelining >2 | cat myfile | head – 3 | tail ddd ccc >ls aaa bbb 3– >ls | head aaa bbb ccc

 הפקודה tee ] tee [options] [files Ø לעיתים נרצה לשמור את הפלט אשר הפקודה tee ] tee [options] [files Ø לעיתים נרצה לשמור את הפלט אשר מוציאה פקודה הנמצאת באחד השלבים הפנימיים של ה piepeline Ø הפקודה משכפלת את כל מה שנכנס לקלט הסטנדרטי שלה ושולחת אותו הן לפלט הסטנדרטי והן לכל אחד מהקבצים ב ] [files Ø לדוגמא: אם בנוסף להצגת השורה השניה והשלישית נרצה לשמור את שלושת השורות הראשונות של הקובץ myfile בשני קבצים שונים, נוכל לבצע : 2– > head – 3 myfile | tee file 1 file 2 | tail Ø אופציות נוספות: l האופציה -a מאפשרת שרשור של הפלט לסוף הקבצים ] [files במקום מחיקתם.

 הפקודה sort ] sort [options] [files Ø ממיינת את שורות הקבצים ] , הפקודה sort ] sort [options] [files Ø ממיינת את שורות הקבצים ] , [files בדרך כלל בסדר א"ב. Ø אופציות נוספות: l l l l l -b התעלם מרווחים בתחילת השורה -d מבצע מיון בסדר מילוני )מתעלם מפיסוק( -f מתעלם מהבדלי uppercase/lowercase -m ממזג מספר קבצים שכבר מויינו לקובץ אחד )יותר יעיל מאשר למיין אותם שוב אם הם כבר ממויינים(. -n משווה על פי ערך מספרי. -ofile מדפיס את הפלט לקובץ . file -r הופך את סדר המיון. -u שורות זהות תופענה בפלט פעם אחת בלבד. +n לפני ביצוע המיון דלג על n המילים הראשונות.

 - דוגמאות sort הפקודה > cat data World whould for Fater > sort - דוגמאות sort הפקודה > cat data World whould for Fater > sort data Fater World for whould > sort data -f Fater for whould World > sort data -r whould for World Fater > ls -l total 6 -rw------- 1 romano root -rw------- 1 romano 368 > ls -l | sort +4 > lsdata > more lsdata total 6 -rw------- 1 romano 368 -rw------- 1 romano root -rw------- 1 romano 368 > 23 Nov 8 23: 09 data 243 Nov 8 23: 12 ex 1 428 Nov 8 23: 22 ex 2 0 Nov 10 13: 30 ex 3 0 Nov 10 13: 31 lsdata 23 Nov 8 23: 09 data 243 Nov 8 23: 12 ex 1 428 Nov 8 23: 22 ex 2

 הפקודה grep ] grep [options] [^]word [files Ø מחפשת בקבצים ] [files שורות הפקודה grep ] grep [options] [^]word [files Ø מחפשת בקבצים ] [files שורות בהן מופיעה המילה word וכותבת אותם לפלט הסטנדרטי. Ø אם רוצים לחפש שורות בהן מופיע ביטוי המורכב ממספר מילים המופרדות ע"י רווחים, כותבים את הביטוי בין גרשיים >grep "It is" file Ø אפשרויות נוספות: -c הדפס רק את מספר השורות שנמצאו -h הדפס את השורות עצמן ללא שמות הקבצים, בהם השורות נמצאו -i התעלם מהבדלי uppercase/lowercase -l הדפס רק את שמות הקבצים בהם השורות נמצאו ללא הדפסת השורות עצמן -n הדפס את השורות ואת מספרן בקבצים -v הדפס את כל השורות, בהן לא מופיעה word -w הדפס את כל השורות בהן מופיעה word בדיוק )לא כתת מחרוזת( - ^word הדפס את כל השורות המתחילות ב word

 - דוגמאות grep הפקודה > more file 1 > ls Arik ex/ ! - דוגמאות grep הפקודה > more file 1 > ls Arik ex/ ! ex 2 file 2~ file 1 file 2 ex 4 typescript Have ex 3 ex 1 file 1 heard news ? file 1~ > cat you file 2 If not > ls | grep ex! Arik ! , listen > cat ex/ you heard news ? Have file 2 Tomorrow we ex 1 , listen ! have a new exam ! If not So ex 2 we cannot have a new exam !. Tomorrow we go to Ran's birthday By ex 3 we cannot go to Ran's birthday. So. > ex 4. Bygrep -v -n new * | sort | head -3 file 1: 1: Arik -c ex > cat grep file 1 | grep new | sort -d –onews ls | file 2 ! file 1: 3: If not , 5 more news listen ! > file 2: 2: So we cannot ? Have you heard newsgo to Ran's birthday. Tomorrow we have a new exam !

 הפקודה uniq ]]2 uniq [options] [file 1 [file Ø מורידה מהקובץ הממוין 1 הפקודה uniq ]]2 uniq [options] [file 1 [file Ø מורידה מהקובץ הממוין 1 file את כל השורות הזהות הסמוכות, ושולחת עותק אחד של כל שורה לקובץ 2 ) file או בהעדר הקובץ 2 , file לערוץ הפלט הסטנדרטי(. Ø אפשרויות נוספות: -c הדפס כל שורה פעם אחת בלבד וספור עותקים של כל שורה. -d הדפס שורות המופיעות יותר מפעם אחת, אך לא שורות המופיעות פעם אחת בלבד. -u הדפס רק את השורות המופיעות פעם אחת בדיוק. -n התעלם מ- n המילים הראשונות )לפני קבלת ההחלטה אם שתי מילים זהות( הערה: השתמש בו זמנית רק באחת משלוש האופציות הראשונות

 - דוגמאות uniq הפקודה > more file 3 one two three > uniq - דוגמאות uniq הפקודה > more file 3 one two three > uniq file 3 list > more list one two three > > more names Uri Dan Uri Elena Alex Ofra Uri Ofra > sort names | uniq -d Ofra Uri >

 הפקודה cut ] cut options [files הפקודה cut בוחרת תווים או שדות רצוים הפקודה cut ] cut options [files הפקודה cut בוחרת תווים או שדות רצוים מכל אחת מהשורות מקבצי הקלט . files Ø Ø אפשרויות נוספות: -c list מאפשר לבחור תו מסויים או קבוצת תוים מתוך שורה מסויימת, כאשר ב - list מופיעים המספרים של התוים הרצוים -f list מאפשר לבחור שדה או קבוצת שדות מתוך שורה מסויימת, כאשר ב - list מופיעים המספרים של השדות הרצוים ” -d”c משמשת בנוסף לאופציה . -f מאפשרת לקבוע מי התו המפריד בין השדות. שדה הינה קבוצת תווים המסתיימת בתו . c ברירת המחדל היא התו >

 הפקודה - cut דוגמאות 1 file ריקה, במידה וקיים התו המפריד בשורה אך הפקודה - cut דוגמאות 1 file ריקה, במידה וקיים התו המפריד בשורה אך ניתן מספר שדה שאינו קיים אזי תתקבל שורה > cat אולם אם התו המפריד לא קיים בשורה, תודפס כל השורה. 51 a 12 a 13 a 14 a 52 b 21 b 22 b 23 b 24 b 53 c 31 c 32 c 33 c 34 c 2 > cut file 1 cat -c 1 -3, 5, 8 -10 file 1 a 11 a a 31 a 11: a 12: a 2 b 21 b b 22 b 21: b 33 c 31 c c 3 c 23 c 31 c 1 > cut file 2 |-f 2, 4 -d": " –f 1 cat -d" " cut file 41 a 12 a 11 a 42 b 22 b 12 b 33 c 32 c 34 c 23 c 31 c 3 > cat file 2 | cut -d": " –f 31 a 33 c 31 c 32 c

 הפקודה wc ] wc [options] [files מאפשרת הדפסת ספירת מספר התוים, המילים או הפקודה wc ] wc [options] [files מאפשרת הדפסת ספירת מספר התוים, המילים או השורות בקבצים שונים Ø אפשרויות נוספות: -c הדפס את מספר התוים בלבד. -l הדפס את מספר השורות בלבד. -w הדפס את מספר המילים בלבד.

 - דוגמאות wc הפקודה > wc -l phonebook 12 phonebook > wc -w - דוגמאות wc הפקודה > wc -l phonebook 12 phonebook > wc -w bible 333333 bible > wc -c data 8843 data : אם לא ניתנת אופציה ניתן הפלט בפורמט <# lines> <# words> <# chars> filename >wc data >193 1808 8843 data : אם ניתנים כמה שמות קבצים מופיע גם סיכום > wc data phonebook 193 1808 8843 data 12 100 654 phonebook 295 1908 9497 total

 הפקודה printf format strings מדפיסה את המחרוזת string לפי הפורמט . format הפורמט הפקודה printf format strings מדפיסה את המחרוזת string לפי הפורמט . format הפורמט יכול להכיל תווים רגילים או תווי עריכה. Ø דוגמאות של תווי עריכה: l l - %s מדפיסה את המחרוזת המתאימה מתוך הרשימה . strings - %[-]m[. n]s מדפיסה את המחרוזת המתאימה מרשימת המחרוזות כך שהתוצאה תהיה באורך של m תווים, אם אפשרות להגבלת מספר התווים המודפסים )מתוך המחרוזת הספציפית( ל - . n המחרוזת מיושרת לימין אלא אם כן משתמשים באופרטור -.

 - דוגמאות printf הפקודה > echo $HOME /home/rotics > printf “My files are - דוגמאות printf הפקודה > echo $HOME /home/rotics > printf “My files are in %sn“ $HOME My files are in /home/rotics > printf “number is : %10. 5 s” 123456789 a number is: 12345 > printf “number is : #%-10. 3 s# %sn” "123456789 a" xxx number is: #123 # xxx > printf “My files are in %sn“ $HOME “my PC” My files are in /home/rotics My files are in my PC (%s) מאשר תווי עריכה strings שמו לב מה קורה כאשר ישנן יותר מחרוזות ברשימה Ø

 CSHELL Ø במערכת ההפעלה Unix יש רכיב תוכנה שתפקידו לשמש מנשק בין המשתמש CSHELL Ø במערכת ההפעלה Unix יש רכיב תוכנה שתפקידו לשמש מנשק בין המשתמש למערכת ההפעלה. שמו של רכיב זה הוא shell Ø תפקידו של ה Shell הנו לקיים את הקשר עם המשתמש ולקבל ממנו את הפקודות לביצוע משתמש Ø Ø Ø Shell מערכת ההפעלה הקשר עם המשתמש מתבצע ע"י ה prompt מיד לאחר ביצוע ה login מוצג ) prompt לדוגמא > (. ה prompt מהווה סימן של ה- shell שהינו מוכן לבצע פקודה של המשתמש לאחר שהמשתמש כותב את הפקודה, ה- shell מנתחה, ומעבירה למערכת ההפעלה לביצוע. לאחר שהפקודה סיימה להתבצע ה shell מציג את ה prompt ומוכן לקבל את הפקודה הבאה > echo hello >

 Shells in UNIX Ø ה Shell הנה תוכנית ככל תוכנית. קיימות ב Unix Shells in UNIX Ø ה Shell הנה תוכנית ככל תוכנית. קיימות ב Unix מספר תוכניות shell שונות. כולן מבצעות את אותה משימה, אך מספקות קישור ב"גוונים שונים" המאפשרים למשתמש לקבל סביבת מחשב שונה לבחירתו. Ø ישנם מספר shells נפוצים ב , kshell , cshell : Unix bourne shell ועוד. Ø אנו נלמד על ה cshell שהנו אחד ה shell הפופולרים.

 תפקידיו של ה- SHELL Ø תפקידו של ה Shell הנו לבצע את הקשר תפקידיו של ה- SHELL Ø תפקידו של ה Shell הנו לבצע את הקשר עם המשתמש Ø ה- shell מבצע את תפקידו בשתי דרכים: Ø אינטראקטיבית – ה- shell מקבל פקודה מהמשתמש ומעבירה למערכת ההפעלה לביצוע. באופן עבודה זה, ה- shell מאפשר למשתמש לבצע "קיצורי דרך" : l l - Alias הגדרת שמות קצרים לפקודות שהמשתמש מבצע פעמים רבות - History זכירת הפקודות שהמשתמש ביצע בעבר ואפשור ביצוע מהיר שלהן ללא צורך בהקלדתן מחדש - File name expansion אפשרות להתייחס למספר קבצים בקיצור משתנים - הגדרה ושימוש במשתנים Ø תסריט – ) (script ה shell מאפשר לשמור סדרת פקודות בקובץ ומאפשר למשתמש להריץ קובץ זה. הרצת קובץ זה תתבצע "כאילו" המשתמש הקיש פקודה אחר פקודה. ה shell מספק שפה פשוטה הכוללת משתנים ומבני בקרה, המאפשרים כתיבת תסריטים "אינטליגנטיים". היתרון בכתיבת תסריט על פני תוכנית ב- C לדוגמא, הנו היכולת הקלה להשתמש בתוכניות שכבר נכתבו וקיימות במערכת

Command Aliases alias <new name> <command name> command name לפקודה new name נותן את Command Aliases alias command name לפקודה new name נותן את השם Ø > alias del rm > del file 2 פקודות אלו מוחקות את הקובץ Ø : הנ"ל הוגדר alias . לדוגמא, נניח כי רק ה aliases - מציגה את כל ה alias Ø > alias del rm : דוגמא נוספת Ø alias cdex 2 "cd ~mtm/public/0506 b/ex 2"

 history מכניזם לחזור על פקודות קודמות - !! Ø יבצע שוב את הפקודה history מכניזם לחזור על פקודות קודמות - !! Ø יבצע שוב את הפקודה האחרונה - !vi Ø יבצע שוב את הפקודה האחרונה המתחילה ב- vi - history Ø מציג את רשימת הפקודות ברשימה. ניתן לקבוע את מספר הפקודות אשר ה- " shell זוכר אחורה" על ידי קביעת ערכו של המשתנה history - ! Ø יבצע שוב את הפקודה שמספרה n ברשימה Ø בנוסף ה- Shell מאפשר לבצע פקודות הנשמרות בהיסטוריה בעזרת מקשי החיצים 001= >set history Ø הפקודה קובעת את מספר הפקודות הנזכרות ל 001

 File name expansions Ø רב הפקודות ב- UNIX מקבלות שמות של קבצים, לכן File name expansions Ø רב הפקודות ב- UNIX מקבלות שמות של קבצים, לכן ה- Shell מספק מנגנון מקל בכתיבתם. הפקודה מכילה תבנית במקום שם קובץ, ה- Shell מרחיב את הביטוי בהתאם Ø את התבנית בונים בעזרת תווים הנקראים Wildcards l l l * מתאים לכל מחרוזת תווים באורך אפס או יותר ? מתאים לכל תו בודד אחד a[rxz]b -> arb, axb, azb ][ מתאים לכל אחד מהתווים בין ] ל- [

 File name expansions דוגמאות *. c כל הקבצים עם סיומת c * *AD File name expansions דוגמאות *. c כל הקבצים עם סיומת c * *AD קבצים שבשמותיהם צירוף האותיות AD > gcc -c *. c תקמפל את כל הקבצים עם הסיומת . c ? . 1 >rm prog תמחק את כל הקבצים שמתחילים ב-. 1 prog ולאחר מכן יש בדיוק תו אחד ]31[ file מציין את כל הקבצים ששמותיהם מתחילים ב- file ושאחרי אותיות אלו מופיע או 1 או 3. ]31 file[A-Za-z מציין את כל הקבצים ששמותיהם מתחילים ב- file ושאחרי אותיות אלו מופיעה אחת מאותיות ה-א"ב האנגלי או אחת מהספרות 1 או 3.

 משתנים > set <variable> = <value Ø Ø מגדירה כי קיים משתנה בשם משתנים > set = $ set v = abc > echo $v abc 321 = > set v > echo $v 321

 משתנים מספריים Ø ב - cshell ניתן להשתמש במשתנים המכילים מספרים שלמים ולבצע משתנים מספריים Ø ב - cshell ניתן להשתמש במשתנים המכילים מספרים שלמים ולבצע עליהם פעולות חשבון פשוטות Ø הסימן '@' בתחילת פקודה מסמן לחשב את הביטוי המספרי בפקודה. במידה ורוצים לאתחל את ערכו של משתנה לקבוע ניתן להעזר בפקודה . set אולם בכדי לבצע פעולות חשבוניות חייבים להשתמש ב @ 3= >@i > echo $i 3 1 + > @ i = $i > echo $i 4 ++ > @ i > echo $i 5 21 = > set v > @ v = $v + $i > echo $v 71 Ø שימו לב: l יש לשים רווח אחרי '@' ולפני הפקודה l האסוציאטיביות אינה סטנדרטית. לדוגמא ערך הבטוי 4+3 -2 הנו -5 ולא 3 כפי שניתן היה לצפות

 מחרוזות Ø ב - , cshell כל רצף של תווים נקרא מחרוזת, אולם מחרוזות Ø ב - , cshell כל רצף של תווים נקרא מחרוזת, אולם אם רוצים לעבוד עם מחרוזות המכילות יותר ממילה אחת )מכילות רווחים( יש לתחום אותן בין גרשיים ) " (. " > set a = "abc def ghe > echo $a abc def ghe Ø שימו לב כי למרות שהמילה מכילה רווחים זו עדיין מילה אחת

 רשימות Ø עבור משתנה a המכיל רשימה של ערכים מציין הביטוי ] a[i רשימות Ø עבור משתנה a המכיל רשימה של ערכים מציין הביטוי ] a[i את האיבר ה- i ברשימת הערכים a Ø ב- cshell מספור האיברים ברשימה a מתחיל מ-1 )ולא מ-0(. ) > set v = (123 def ghi > echo $v 123 def ghi ]2[ > echo $v def > set v[3] = ww > echo $v 123 def ww cshell Ø לא תומך ברשימות מקוננות )רשימה בתוך רשימה( ולכן על הפקודה: )43 > set v[3] = (12 abc נקבל שגיאה: set: syntax error

 פעולות על רשימות עבור משתנה a המכיל רשימה של ערכים, Ø Ø Ø פעולות על רשימות עבור משתנה a המכיל רשימה של ערכים, Ø Ø Ø הביטוי } ${#a מציין את מספר האיברים ברשימה הביטוי ] a[m-n מציין את תת-הרשימה, מהאיבר ה- m עד לאיבר ה- n הביטוי ] a[-n מציין את תת-הרשימה, מהאיבר הראשון עד לאיבר ה- n הביטוי ]- a[m מציין את תת-הרשימה, מהאיבר ה- m עד לסוף הרשימה הביטוי ]*[ a מציין את הקבוצה המורכבת מכל איברי הרשימה

 רשימות - דוגמאות > set a = ( aa bb cc dd ee רשימות - דוגמאות > set a = ( aa bb cc dd ee ) > echo $#a 5 >echo $a[3 -] cc dd ee >echo $a[2 -4] bb cc dd > echo $a[-3] aa bb cc מזיזה את כל איברי הרשימה מקום אחד שמאלה shift a , הפעולה a עבור רשימת ערכים . ומבטלת את האיבר הראשון > set v = ( go to the beach ) > echo $v[1] go > shift v > echo $v[1] to > echo $v to the beach

 נקודות מתקדמות בנוגע למשתנים Ø Ø Ø ניתן להתייחס לכל משתנה המכיל מחרוזת נקודות מתקדמות בנוגע למשתנים Ø Ø Ø ניתן להתייחס לכל משתנה המכיל מחרוזת או מספר כרשימה בת איבר אחד. ולכן הפעולות: ” > set a = “abc def ghi ]1[ > echo $a abc def ghe הינן חוקיות. אבל, הפקודה הבאה תגרום שגיאה ]2[ > echo $a . a: Subscript out of range ניתן לפרק מחרוזת לרשימת המילים המופיעות בה ע"י השמת המחרוזת בתוך סוגריים. זו הדרך הסטנדרטית להפוך מחרוזת שבה רווחים רבים לרשימה שבה בין המילים מופיע רק רווח אחד ) >set b = ($a >echo $b abc def ghe ]2[ >echo $b def ניתן להשתמש בסוגריים מסולסלות בכדי להדגיש מהו שמו של משתנה. הדבר שימושי במיוחד כאשר רוצים להוסיף סיומת לערכו של משתנה: 321 = > set b 4} > set a = ${b > echo $a 4321

 Command substitution Ø ב - cshell אפשר להשתמש בפקודות מקוננות, כלומר, בתוך פקודה Command substitution Ø ב - cshell אפשר להשתמש בפקודות מקוננות, כלומר, בתוך פקודה מסויימת אפשר להשתמש בתוצאה של פקודה אחרת הכתובה בתוכה Ø על מנת לעשות זאת יש להקיף את הפקודה המקוננת בגרשיים הפוכים )המכונים באנגלית backquotes או , (backticks ואז מובטח כי היא תתבצע לפני ביצוע שאר השורה ותוחלף בערך המוחזר מביצוע הפקודה ` > echo you have `ls | wc -l` files in `pwd you have 43 files in /home/rotics Ø מתבצע קודם שיערוך של הפקודות הפנימיות )פקודה הסופרת את מספר השורות המתקבלות כתוצאה מהרצת הפקודה ls ופקודה המחזירה את השם של המדריך הנוכחי (/home/rotics ולאחר מכן תוצאותיהן משובצות בפקודה החיצונית - פקודת echo

Command substitution דוגמא > cat list file 1 file 2 file 3 > cat Command substitution דוגמא > cat list file 1 file 2 file 3 > cat file 1 you are in file 1 Buy a Selkom phone > cat file 2 you are in file 2 buy Motorola Pelephone > cat file 3 you are in file 3 Im Grimberg Matzliah Ata Marviach > cat `cat list` you are in file 1 Buy a Selkom phone you are in file 2 buy Motorola Pelephone you are in file 3 Im Grimberg Mazliah Ata Marviach

 כיצד עובד ה- CSHELL Ø ניתן לראות את ה- C-Shell כ- Macro Processor כיצד עובד ה- CSHELL Ø ניתן לראות את ה- C-Shell כ- Macro Processor מתוחכם, העובד בלולאה: l l l הצגת prompt קבלת פקודה נתוח הפקודה, עיבודה וביצועה Ø לצורך ביצוע עבודתו, תוכנית ה C-Shell מנהלת מספר מבני נתונים: l l l רשימת הפקודות האחרונות שבוצעו. רשימת המשתנים רשימת ה . alias סדר עבודת ה : C-shell Ø ניתוח הפקודה: הפקודה מופרדת למילים. התווים רווח ו- Tab משמשים כמפרידים בין מילים Ø עיבוד הפקודה: ביצוע החלפות לקבלת פקודה פשוטה. מבוצעות החלפות היסטוריה, משתנים וכד Ø ביצוע הפקודה: הפקודה הפשוטה שהתקבלה מבוצעת

 עיבוד הפקודה )ללא redirection ו (pipeline 1. במידה והפקודה מכילה שמוש בפקודות קודמות עיבוד הפקודה )ללא redirection ו (pipeline 1. במידה והפקודה מכילה שמוש בפקודות קודמות )ע"י השמוש בסימן !( מתבצע History Substitution 2. שורת הפקודה שהתקבלה נשמרת ברשימת ההיסטוריה של הפקודות שבוצעו. במידה ובוצעו החלפות ההסטוריה שורת הפקודה )לאחר ההחלפות( מודפסת למסך > echo AAA !! > echo AAA 3. אם המילה הראשונה בפקודה הנה שם של alias מתבצע . alias substituion 4. בצוע variable substitution 5. בצוע File name substitution 6. בצוע . command substitution ה )`. . . `( back-quoted string מוחלפת בתוצאת הפקודה

 ביצוע הפקודה לאחר בצוע כל ההחלפות הפקודה מבוצעת. ישנן שתי סוגי פקודות: Ø ביצוע הפקודה לאחר בצוע כל ההחלפות הפקודה מבוצעת. ישנן שתי סוגי פקודות: Ø פקודות חיצוניות l l ניתן להריץ כל תוכנית הקיימת במערכת. ה- Shell יפעיל את התוכנית ויעביר לה את הארגומנטים )במידה וניתנו לה( בכדי למצוא את התוכנית ניתן: • לתת את מיקומה המדויק ). (full path name • לתת רק את שם התוכנית וה C-Shell יחפשה. החיפוש יתבצע בכל המדריכים המופיעים ברשימה של המשתנה . path Ø פקודות פנימיות l פקודות שניתנות לתוכנית ה C-shell עצמה ומבוצעות ע"י ה Shell שמפרש את הפקודה. • • • ניהול ההסטוריה ) (history ניהול רשימת המשתנים ) (set/unset/shift ניהול רשימת ה ) alias (alias/unalias שינוי ה ) working directory (cd בקרת זרימה בתסריטים )בתרגול הבא( ניהול תהליכים

 עיבוד הפקודה – נקודות מתקדמות I/O redirection Ø מתבצע ע עיבוד הפקודה – נקודות מתקדמות I/O redirection Ø מתבצע ע"י ה- . Shell תפקידו להפנות את הקלט והפלט של הפקודה המבוצעת לערוץ המתאים: מקלדת/מסך/קובץ Ø הפקודה המבוצעת כלל אינה מודעת לכך שבוצע , I/O redirection כיוון שכל ההפניות מבוצעות ע"י ה- Shell Pipeline Ø ה- pipeline הינו סדרת פקודות המופרדות ע"י התו ‘|’. הפקודות מבוצעות באופן סדרתי האחת אחר השניה, כאשר ה Shell מפנה את ה standard output של כל פקודה ב pipeline ל standard input של הפקודה הבאה האחריה מחרוזות Ø ה- shell מפריד את שורת הפקודה למילים. התווים רווח ו tab מהווים מפרידים בין מילים Ø במידה ונרצה שמילה תכיל רווחים )למשל כארגומנט לפקודה( יש לשים את המילים הנפרדות בתוך גרשיים וה shell יתייחס אליהן כאל מחרוזת – מילה אחת.

 עיבוד הפקודה – סוגי גרשיים `- גרש הפוך ) (back quote עיבוד הפקודה – סוגי גרשיים `- גרש הפוך ) (back quote " - גרשים כפולות ) (double quote ' - גרש יחיד ) (single quote back quotes Ø משמשים לצורך . command substitution ה- shell מתייחס לכל המחרוזת בין ה- back quotes כאל פקודה אחת ומבצע אותה. תוצאת הפקודה מוחלפת במחרוזת הפקודה. במידה ובתוצאת הפקודה ישנם רווחים אזי ה- shell יתייחס לתוצאת הפקודה כאל מספר מילים single quotes Ø ו double quotes משמשים בכדי לגרום ל Shell להתייחס למספר מילים )מופרדות ברווחים וטאבים( כאל מילה אחת. ע"י השמת מחרוזת בין גרשיים ניתן לגרום ל- Shell להתנהג באופן שונה מהרגיל. l החלפת משתנים – במידה ומופיעה התייחסות למשתנה בתוך ה- double quoted string המשתנה יוחלף בערכו. במידה וההתיחסות מופיעה בתוך single quoted string לא תתבצע החלפה: > set a = AAA ” > echo “a=$a a=AAA ’ > echo ‘a=$a l l החלפת שמות קבצים – לא מבוצעת עבור . single or double quoted strings החלפת פקודות – כאשר המחרוזת ב back quotes מופיעה בתוך double quote ה shell מתייחס לתוצאת כאל מילה אחת.