1 00:00:00,000 --> 00:00:02,320 >> [סמינר - צדפים יוניקס, סביבות] 2 00:00:02,320 --> 00:00:04,180 [דאגלס קליין - אוניברסיטת הרווארד] 3 00:00:04,180 --> 00:00:07,160 [זה CS50. - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> הנושא של היום הוא מעטפת יוניקס. 5 00:00:12,770 --> 00:00:20,600 אני דאגלס קליין, מומחה, או לפחות סביר משתמשים המוסמכים, של הקליפה. 6 00:00:20,600 --> 00:00:25,280 קליפה היא הממשק למשתמש של מערכת ההפעלה של המחשב. 7 00:00:25,280 --> 00:00:29,580 השם הוא מטעה, כי בניגוד לקליפתו של בעל חיים, 8 00:00:29,580 --> 00:00:34,890 וזה קשה ומגן, קליפת המחשב מאפשרת תקשורת. 9 00:00:34,890 --> 00:00:39,120 אז קרום נקבובי כנראה יהיה מטאפורה טובה יותר. 10 00:00:39,120 --> 00:00:44,500 >> הפגז המקורי ליוניקס הוא קליפת בורן. 11 00:00:44,500 --> 00:00:46,450 בורן מאוית B-O-U-R-N-E. 12 00:00:46,450 --> 00:00:49,770 בורן היה אחד הסופרים המקוריים של יוניקס, 13 00:00:49,770 --> 00:00:51,700 וכן את הקליפה נקראת על שמו. 14 00:00:51,700 --> 00:00:54,850 שמו של פגז שכפקודה הוא פשוט sh. 15 00:00:54,850 --> 00:00:57,400 זה הפקודה שאתה יכול לבצע. 16 00:00:57,400 --> 00:01:00,810 המעטפת מתחילה בכניסה. 17 00:01:00,810 --> 00:01:04,459 כשאתה נכנסת למחשב, המעטפת פשוט מתחילה לרוץ בשבילך, 18 00:01:04,459 --> 00:01:06,820 וזה מה שלוקח הפקודות שלך. 19 00:01:06,820 --> 00:01:09,790 זה יכול להתחיל בזמנים אחרים גם. 20 00:01:09,790 --> 00:01:16,780 אם אתם מביאים את חלון עם שום אינדיקציה אחרת, הוא יתחיל פגז בשבילך. 21 00:01:16,780 --> 00:01:20,450 ככה זה הוא שאתה יכול ללכת לחלון ולהתחיל להקליד פקודות 22 00:01:20,450 --> 00:01:23,960 וכן הלאה יש, למרות שאתה לא להיכנס לחלון זה. 23 00:01:23,960 --> 00:01:26,670 בנוסף, אם אתה עושה את התחברות מרחוק, 24 00:01:26,670 --> 00:01:30,250 לאחר מכן הוא יתחיל פגז במחשב המרוחק. 25 00:01:30,250 --> 00:01:44,310 ואפשר להפעיל פקודות ללא מעטפת אינטראקטיבית. 26 00:01:44,310 --> 00:01:48,990 זה יכול להיות בתוך הפעולה הנוכחית שלך, 27 00:01:48,990 --> 00:01:50,700 וזה גם יכול להיות פעולה מרחוק. 28 00:01:50,700 --> 00:01:52,900 אתה יכול לשלוח את הפקודה למחשב אחר, 29 00:01:52,900 --> 00:01:55,460 הכולל מתחיל פגז שם. 30 00:01:55,460 --> 00:01:57,760 למעשה, זה חייב לכלול מתחיל פגז יש 31 00:01:57,760 --> 00:02:01,740 אפילו אם זה לא המטרה הסופית שלך. 32 00:02:05,310 --> 00:02:12,350 כשמשהו מתחיל ככה, זה לא בהכרח להתחיל פגז חדש. 33 00:02:12,350 --> 00:02:17,430 אם אתם מביאים את חלון חדש, אפשר לספר אותו כדי להעלות את העורך 34 00:02:17,430 --> 00:02:18,940 או פקודה אחרת. 35 00:02:18,940 --> 00:02:20,560 במקרה כזה, העורך יתחיל מהתחלה. 36 00:02:20,560 --> 00:02:22,930 כאשר העורך מסתיים, החלון מסתיים. 37 00:02:22,930 --> 00:02:24,620 זה קצת יוצא דופן, אבל אפשר לעשות את זה. 38 00:02:24,620 --> 00:02:27,140 במקרים אלה, זה לא יהיה פגז. 39 00:02:27,140 --> 00:02:31,890 כך שזה לא בהכרח המקרה שחלון או יישום כזה יביא את פגז. 40 00:02:31,890 --> 00:02:34,030 >> Shell מנתח פקודות. 41 00:02:34,030 --> 00:02:40,900 ניתוח משמעותה איתור האלמנטים השונים ולסיווגם. 42 00:02:40,900 --> 00:02:43,470 בתוך הפקודה, את המחרוזת המלאה שאתה מקליד, 43 00:02:43,470 --> 00:02:47,310 יהיו 1 או יותר פקודות בודדות להוצאת להורג. 44 00:02:47,310 --> 00:02:50,050 גורמים אחרים יכולים להיות ויכוחים. 45 00:02:50,050 --> 00:02:55,020 יכול להיות גם תווים מיוחדים המשפיעים על ביצוע פקודה. 46 00:02:55,020 --> 00:02:59,710 הם יכולים לשלוח את הפלט למקום אחר מאשר המסך 47 00:02:59,710 --> 00:03:01,750 אם הפקודה תהיה בדרך כלל לשלוח אותו אל המסך. 48 00:03:01,750 --> 00:03:04,390 זה יכול להפנות את הקלט, זה יכול לעשות גם דברים אחרים. 49 00:03:04,390 --> 00:03:08,120 ישנם סימנים שונים אחרים, תווים, וכן הלאה. 50 00:03:08,120 --> 00:03:13,600 ניתוח כרוך באיתור ולפרש את הדברים האלה. 51 00:03:13,600 --> 00:03:19,560 >> עכשיו אם אין יותר שאלות, וזה די סביר שכן אין יותר אנשים, 52 00:03:19,560 --> 00:03:24,620 אנחנו נלך לדף הבא שלי כאן. 53 00:03:24,620 --> 00:03:29,170 >> שאמרתי קודם לכן כי פגז בורן הוא הקליפה הראשונית. 54 00:03:29,170 --> 00:03:31,550 יש גם אחרים. 55 00:03:31,550 --> 00:03:34,520 אחת מהן הוא ה-C-הפגז. הפקודה היא csh. 56 00:03:34,520 --> 00:03:36,830 C-shell שם הוא רק משחק מילות. 57 00:03:36,830 --> 00:03:41,260 פגז זה הוצג בברקלי יוניקס באמצע 1970s. 58 00:03:41,260 --> 00:03:44,830 ברקלי יוניקס היה אירוע מכונן בהתפתחותה של יוניקס. 59 00:03:44,830 --> 00:03:48,770 זו הייתה מהפכה עצומה וכללה את כניסתה של קליפה זו. 60 00:03:48,770 --> 00:03:50,790 הסיבה למחזה שעל מילות, C-shell, 61 00:03:50,790 --> 00:03:56,490 הוא שיש C-shell כמה מאפיינים בזה אשר דומים בשפת C, 62 00:03:56,490 --> 00:03:59,740 שקליפת בורן אין - 63 00:03:59,740 --> 00:04:02,140 או שזה לא היה באותו זמן. 64 00:04:02,140 --> 00:04:05,190 יש גם TC-הפגז. 65 00:04:05,190 --> 00:04:07,360 זה מהווה קבוצה של C-shell. 66 00:04:07,360 --> 00:04:11,470 יש לו תכונות נוספות, שרבים מהם הן שימושיים לשימוש אינטראקטיבי, 67 00:04:11,470 --> 00:04:16,050 כגון לזכור פקודות במנגנון ההיסטוריה, 68 00:04:16,050 --> 00:04:18,459 שאני אתאר מעט מאוחר יותר - 69 00:04:18,459 --> 00:04:23,120 בצורה פשוטה, במתכונת עורך. 70 00:04:23,120 --> 00:04:29,170 כמו כן, יש איגודים שייאפשרו לך להיקשר מחרוזת מפתח קצרה לפקודת ארוכה יותר. 71 00:04:29,170 --> 00:04:31,440 אנחנו לא הולכים להיות להיכנס לזה היום. 72 00:04:31,440 --> 00:04:33,650 יש לו כמה תכונות שאינן שימושיות לתכנות. 73 00:04:33,650 --> 00:04:37,020 עם זאת, ה-C-הפגז לא משמש לעתים קרובות לתכנות פגז. 74 00:04:37,020 --> 00:04:39,080 תוכניות מעטפת, אם אתה לא יודע כבר, 75 00:04:39,080 --> 00:04:41,690 הן תוכניות שמורכבות ממאפייני פגז. 76 00:04:41,690 --> 00:04:43,220 אתה יכול לרוץ אלה כתוכניות. 77 00:04:43,220 --> 00:04:46,760 אתה כותב חבורה של פקודות מעטפת לקובץ ולהפעיל את הקובץ. 78 00:04:46,760 --> 00:04:49,760 אתה לא צריך לקמפל אותו. זוהי שפה פרשנית. 79 00:04:49,760 --> 00:04:57,320 ביטוי C-shell הוא עכשיו משמעי שכן הוא עשוי להתייחס רק לC-shell, csh המקורי, 80 00:04:57,320 --> 00:05:01,200 או לכל C-הפגזים, כולל tcsh. זה קצת מעורפל. 81 00:05:01,200 --> 00:05:08,250 >> פגז מאוחר יותר הוא קורן הפגז, ksh, על שמו של המתכנת, קורן. 82 00:05:08,250 --> 00:05:14,160 מעטפת זו ניסתה לשלב בקליפה 1 83 00:05:14,160 --> 00:05:16,960 היתרונות של ה-C-shell לשימוש אינטראקטיבי 84 00:05:16,960 --> 00:05:19,230 ובורן לשלם לתכנות. 85 00:05:19,230 --> 00:05:25,440 זה כבר נעשה שימוש כמעטפת אינטראקטיבית על ידי כמה אנשים - מיעוט. 86 00:05:25,440 --> 00:05:32,050 מאוחר יותר אם כי, לא הייתה הקדמה אחרת, מעטפת Bash, bash, 87 00:05:32,050 --> 00:05:35,290 שוב משחק מילות, לשלם בורן-שוב. 88 00:05:35,290 --> 00:05:43,830 זה סיומת של פגז בורן. קורן קליפה היא גם. שניהם. 89 00:05:43,830 --> 00:05:48,100 יש לו את אותה המטרות של הקליפה קורן של התמזגות של C-shell 90 00:05:48,100 --> 00:05:50,980 והיתרונות של בורן הקליפה בקליפה 1. 91 00:05:50,980 --> 00:05:56,810 רבים מהשיפורים של הפגז קורן כלולים גם בש. 92 00:05:56,810 --> 00:06:00,710 Bash, לעומת זאת, יש לו יותר ולכן הוא עדיף. 93 00:06:00,710 --> 00:06:05,180 בורן-שוב להפגיז והקליפה קורן נקראות פגזי בורן מהסוג 94 00:06:05,180 --> 00:06:07,730 מאחר שהם כוללים מאפיינים של בורן הקליפה, 95 00:06:07,730 --> 00:06:11,180 אשר עולה בקנה אחד במובנים מסוימים עם C-פגזים. 96 00:06:11,180 --> 00:06:15,520 ישנם פגזים אחרים מלבד אלה, חלקם מיועדים לשימוש מוגבל, 97 00:06:15,520 --> 00:06:20,670 אולי מוגבל לכמה פקודות, אולי למטרות מיוחדות, לא משמשות לעתים קרובות. 98 00:06:20,670 --> 00:06:24,240 >> אוקיי. הפריט הבא כאן. 99 00:06:31,300 --> 00:06:38,970 Bash הקליפה הפכה מזוהית עם צורות שונות של לינוקס. 100 00:06:38,970 --> 00:06:41,550 אני לא בטוח אם זה נכון לגבי כל צורה. 101 00:06:41,550 --> 00:06:43,280 ישנן צורות רבות שם בחוץ, ואני עדיין לא השתמשתי בכולם, 102 00:06:43,280 --> 00:06:46,870 אבל באלה שהשתמשתי בו הפך הקשורים אליו. 103 00:06:46,870 --> 00:06:49,670 אז עד כמה שאני יודע, אין שום דבר על Bash 104 00:06:49,670 --> 00:06:52,210 מה שהופך את זה יותר תואם עם לינוקס 105 00:06:52,210 --> 00:06:55,020 יותר מכל שילוב אחר של מערכת הפעלה פגז ו. 106 00:06:55,020 --> 00:06:59,690 אני חושב שזה כנראה רק משקף את הנטיות של המתכנתים. 107 00:06:59,690 --> 00:07:07,500 כי זה הפך להיות מזוהה עם לינוקס הוא סיבה נוספת להעדיף Bash לksh 108 00:07:07,500 --> 00:07:11,820 מאז דברים עשויים להיות כתוב בזה וזה צפוי להתפשט. 109 00:07:11,820 --> 00:07:15,410 אני אתן לך סיבות אחרות לכך בהמשך. 110 00:07:15,410 --> 00:07:21,330 תסריטי פגז בורן צריכים לפעול תחת המעטפת קורן או Bash. 111 00:07:21,330 --> 00:07:22,650 אם אתה כותב משהו לקליפת בורן, 112 00:07:22,650 --> 00:07:26,180 כנראה שאתה יכול לבצע את זה תחת ksh או bash. 113 00:07:26,180 --> 00:07:30,610 תסריטי פגז קורן כנראה יפעלו תחת Bash, אבל אני לא יכול להבטיח את זה. 114 00:07:30,610 --> 00:07:36,040 בהמשך כאן, תסריטי C-shell צריכים לפעול תחת TC-הפגז. 115 00:07:38,850 --> 00:07:41,690 C-shell למעשה מעולם לא השתמש בהרחבה עבור scripting 116 00:07:41,690 --> 00:07:48,110 מאז בורן להפגיז ומאוחר יותר הפגזים בורן מהסוג עדיפים למטרה זו. 117 00:07:48,110 --> 00:07:50,620 אז זה באמת לא כל כך חשוב. 118 00:07:50,620 --> 00:07:53,480 יש די הרבה תסריטי פגז בורן שנכתבו לפני זמן רב, 119 00:07:53,480 --> 00:07:56,860 לפני הקליפה קורן או פגז בורן-שוב הוכנסו. 120 00:07:56,860 --> 00:07:59,300 אלה עדיין נמצאים בשימוש, חלק ממערכות ההפעלה, 121 00:07:59,300 --> 00:08:01,590 וכך תוכל למצוא אותם, אם אתה מסתכל על מערכת ההפעלה 122 00:08:01,590 --> 00:08:03,760 או כמה חבילות תכנות ישנות. 123 00:08:03,760 --> 00:08:12,840 >> Bash הוא במידה מסוימת הופך סוג של לשון משותפת למערכות הפעלה. 124 00:08:12,840 --> 00:08:17,580 זה כבר הורחב ל-Windows וVMS. 125 00:08:17,580 --> 00:08:20,440 VMS, במקרה שאתה לא יודע, הוא מערכת הפעלה קניינית 126 00:08:20,440 --> 00:08:25,480 של חברה לציוד דיגיטלי שהוא עדיין בשימוש, במידה רבה מאחורי הקלעים. 127 00:08:25,480 --> 00:08:29,250 ואם זה הולך להיות פועל על מספר מערכות הפעלה שונות, 128 00:08:29,250 --> 00:08:31,110 סביר להניח שאנשים נוטים לעבור על זה. 129 00:08:31,110 --> 00:08:33,840 אבל התפתחות זו היא חדשה יחסית. 130 00:08:33,840 --> 00:08:39,490 זה רק מתחיל, אז אני לא יכול לנבא אם זה יתברר באמת להיות סוג כזה של לשון משותפת. 131 00:08:39,490 --> 00:08:43,539 כמו כן, משום שנתיבי קבצים וספריות שונים 132 00:08:43,539 --> 00:08:46,210 בין מערכות הפעלה השונות אלה, 133 00:08:46,210 --> 00:08:50,250 אתה לא יכול להיות מסוגל לכתוב תסריט Bash על מערכת הפעלה אחת 134 00:08:50,250 --> 00:08:51,840 ולאחר מכן להפעיל אותו באחד אחר. 135 00:08:51,840 --> 00:08:54,440 אתה צריך להיות מסוגל להעביר אותו בין יוניקס שונה, לינוקס 136 00:08:54,440 --> 00:08:59,020 מערכות הפעלה Mac OS, אך לא בהכרח ל-Windows או VMS. 137 00:08:59,020 --> 00:09:01,390 ייתכן שתצטרך לשנות את תיאור נתיב קובץ, 138 00:09:01,390 --> 00:09:03,180 וכמה ספריות יכולות להיות שונות, 139 00:09:03,180 --> 00:09:05,230 אשר עשוי להשפיע על האופן שבו חלק מפקודות עבודה 140 00:09:05,230 --> 00:09:09,730 או איך הם מעבדים את הטיעונים וכדומה. 141 00:09:09,730 --> 00:09:19,230 בנוסף לכך, זהירות אחרת כאן היא שאין כל ערובה 142 00:09:19,230 --> 00:09:23,570 כי כל הפגזים השונים שהזכרתי - בורן המעטפת, C-shell, 143 00:09:23,570 --> 00:09:29,880 TC-קליפה, קליפה קורן, בורן, שוב להפגיז - תהיה זמינה בשום יוניקס 144 00:09:29,880 --> 00:09:33,750 או לינוקס או מחשב Mac OS. 145 00:09:33,750 --> 00:09:35,620 הם פשוט לא יכולים להיות שם. 146 00:09:35,620 --> 00:09:38,300 זו אחת האזהרות כאן. 147 00:09:38,300 --> 00:09:41,490 זה מגבלה מצערת כאן מאז שהיית רוצה שדברים יעבדו בכל מקום, 148 00:09:41,490 --> 00:09:44,380 אך למרבה הצער, אתה לא יכול לסמוך על זה. 149 00:09:44,380 --> 00:09:47,230 >> אוקיי. הבא כאן. 150 00:09:50,280 --> 00:09:54,370 נניח שאתה רוצה לכתוב תסריט מעטפת, 151 00:09:54,370 --> 00:09:57,170 תכנית בהיקף של פקודות מעטפת. 152 00:09:57,170 --> 00:10:01,200 אתה כותב פקודות שלך, לשים אותם בקובץ, ולהפעיל את הקובץ. 153 00:10:01,200 --> 00:10:04,230 מה אם אתה רוצה לכלול את טיעונים? 154 00:10:04,230 --> 00:10:09,650 במקרה של פעילות קליפה, טיעונים נקראים פרמטרים או פרמטרים positional 155 00:10:09,650 --> 00:10:15,940 והם יהיו נקראים על ידי סימן דולר וספרה, $ 1, $ 2. 156 00:10:15,940 --> 00:10:27,000 אז אם את התסריט יש בשם זה, הטיעון הראשון שלי יכול להיות טיעון 1 157 00:10:27,000 --> 00:10:30,540 והשני שלי יכול להיות ויכוח 2, 158 00:10:30,540 --> 00:10:34,110 ובתוך התסריט שלי אם אני רוצה להתייחס לדברים האלה - 159 00:10:34,110 --> 00:10:36,810 בואו נמחקנו את זה מאז שאני לא באמת הולך להפעיל אותו - 160 00:10:36,810 --> 00:10:42,160 בתוך התסריט שלי אני יכול להיות 1 $ ל מתייחס לARG1, 161 00:10:42,160 --> 00:10:45,890 2 $, שייצאו ככה, arg2. 162 00:10:45,890 --> 00:10:50,080 אז סימנים אלה זמינים כדי להתייחס לטענות, 163 00:10:50,080 --> 00:10:52,390 ואלה חלים על כל של הפגזים. 164 00:10:52,390 --> 00:10:56,520 בנוסף, יש דמויות אחרות. 165 00:10:56,520 --> 00:11:01,700 * $ מתייחס לרשימת כל הטיעון, כל אחד מהם. 166 00:11:01,700 --> 00:11:05,390 # $ מתייחס למספר הטענות. 167 00:11:05,390 --> 00:11:07,910 שוב, זה חל על כל הפגזים. 168 00:11:07,910 --> 00:11:15,540 סימנים אלו, ו* #, ניתן להשתמש בם עם אלה משמעויות במקומות אחרים גם. 169 00:11:15,540 --> 00:11:17,940 אנחנו לא תהיינה להיכנס לזה. 170 00:11:17,940 --> 00:11:20,460 >> שורה מציין Shell. מה זה? 171 00:11:20,460 --> 00:11:27,760 נניח שכתבת תסריט וזה לקליפה מסוימת ואתה רוצה להפעיל אותו. 172 00:11:27,760 --> 00:11:33,500 איך אתה יודע מה לשלם מערכת ההפעלה שלך תהיה להשתמש בו כדי להפעיל את התסריט שלך? 173 00:11:33,500 --> 00:11:37,230 בשלב מסוים אתה יכול להניח שזה יהיה להפעיל אותו במעטפת בורן 174 00:11:37,230 --> 00:11:39,440 אם לא יאמר אחרת, 175 00:11:39,440 --> 00:11:41,730 אבל אנשים לא כותבים תסריטים בבורן לשלם כל כך הרבה יותר 176 00:11:41,730 --> 00:11:43,750 ואתה אפילו לא יכול לסמוך על זה יותר. 177 00:11:43,750 --> 00:11:48,740 אז הנה יש לנו קו מציין פגז ממש כאן. 178 00:11:48,740 --> 00:11:52,450 המציין Bash. 179 00:11:52,450 --> 00:11:56,750 שים לב שהוא מציין אותו בנתיב, / bin / bash. 180 00:11:56,750 --> 00:12:02,870 אם מחשב יש מעטפת Bash אך לא בספריית bin, / bin, זה לא יעבוד. 181 00:12:02,870 --> 00:12:06,870 זה מוקדמות אחרת, זהירות אחרת כאן. 182 00:12:06,870 --> 00:12:09,500 קילו הסימן הוא דמות שורת ההערה. 183 00:12:09,500 --> 00:12:12,300 שחל על כל הפגזים. 184 00:12:12,300 --> 00:12:18,610 מקרה המסוים כאן, #! בתחילת תסריט, הוא מקרה מיוחד. 185 00:12:18,610 --> 00:12:23,410 המציין את המעטפת שבו כדי להפעיל את התסריט. 186 00:12:23,410 --> 00:12:30,230 כמו שאמרתי, זה לא יכול להיות באותו המקום / bin. 187 00:12:30,230 --> 00:12:34,880 בנוסף, יש עוד דבר כאן. 188 00:12:34,880 --> 00:12:41,250 אם אתה פשוט להשתמש בסולמית ללא סימן קריאה ונתיב, 189 00:12:41,250 --> 00:12:44,640 כי צריך לציין C-פגז. 190 00:12:44,640 --> 00:12:48,300 עם זאת, אני לא ממליץ לעשות את זה כי אני לא יכול להבטיח 191 00:12:48,300 --> 00:12:49,750 שתמיד עובדים. 192 00:12:49,750 --> 00:12:52,220 אם אתה רוצה C-shell, זה יהיה טוב יותר לומר זאת. 193 00:12:52,220 --> 00:12:58,450 אז יש משהו מבלבל למדי כאן. 194 00:12:58,450 --> 00:13:03,940 אם אתה משתמש בקו מציין פגז כמו / bin / bash 195 00:13:03,940 --> 00:13:07,070 והקליפה שאינה זמינה שם, 196 00:13:07,070 --> 00:13:10,680 אין שום דבר כמו / bin / bash במחשב מסוים כגון, 197 00:13:10,680 --> 00:13:14,330 או בגלל שאין לו Bash או בגלל שהוא במיקום אחר, 198 00:13:14,330 --> 00:13:17,450 אתה מקבל הודעת שגיאה אומרת לך שהתסריט שאתה רץ לא קיים. 199 00:13:17,450 --> 00:13:21,510 וכמובן, התסריט שלך קיים, כך שהודעת השגיאה היא מבלבל. 200 00:13:21,510 --> 00:13:24,810 הסיבה לכך שמערכת ההפעלה נותנת לך שגיאה כי 201 00:13:24,810 --> 00:13:28,370 או, לייתר דיוק, שהמעטפת האינטראקטיבית שלך שבו אתה מפעיל זה נותנת שגיאה ש, 202 00:13:28,370 --> 00:13:33,510 הוא שהוא מדווח על הפקודה שבה השתמש, המהווה את שמו של התסריט. 203 00:13:33,510 --> 00:13:36,920 פקודה זו בצורה יעילה הנקראת קליפה על ידי השם של התסריט. 204 00:13:36,920 --> 00:13:39,330 זה שבו אתה מקבל את זה הודעת שגיאה מבלבלת. 205 00:13:39,330 --> 00:13:42,980 דרך נוספת לקרוא תסריט פגז 206 00:13:42,980 --> 00:13:45,910 הוא על ידי ציון הפגז בשורת הפקודה, כמו כאן. 207 00:13:45,910 --> 00:13:52,510 זו הפקודה. זה אומר להפעיל Bash ולאחר מכן להפעיל את התסריט שלי בש. 208 00:13:52,510 --> 00:13:55,680 זה יהיה עדיף על פני קו מציין, 209 00:13:55,680 --> 00:14:02,090 ואת זה יש לו את התכונה של ומאפשר לך לספק לנתיבים שונים. 210 00:14:02,090 --> 00:14:04,840 אם אתה פשוט לתת פקודה, מערכת ההפעלה תחפש פקודה ש 211 00:14:04,840 --> 00:14:06,410 במקומות שונים. 212 00:14:06,410 --> 00:14:08,820 אם זה זמין, זה צריך למצוא אותו. 213 00:14:08,820 --> 00:14:12,290 המחשב ימצא Bash כל מקום שהוא נמצא ולהפעיל אותו, 214 00:14:12,290 --> 00:14:15,470 כך שאתה לא צריך אז להיות מודאג שבו הוא מוצא אותו. 215 00:14:15,470 --> 00:14:17,360 ישנם חששות שעלולים להיות אחרים כאן, 216 00:14:17,360 --> 00:14:20,830 כאילו יש יותר מגרסה 1 של בש, וזה אפשרי אם כי לא סביר. 217 00:14:20,830 --> 00:14:23,540 אז זה בדרך אחרת להתמודד עם הדברים האלה. 218 00:14:23,540 --> 00:14:30,480 קווים מציין יכולים להתקשר לכל פגז. 219 00:14:30,480 --> 00:14:34,480 הם יכולים גם לקרוא לדברים אחרים מפגזים. 220 00:14:34,480 --> 00:14:37,940 דוגמאות יש לי כאן sed, שהוא עורך הזרם; 221 00:14:37,940 --> 00:14:39,900 awk, שהיא שפת עיבוד דפוס; 222 00:14:39,900 --> 00:14:43,680 וPerl, שפת סקריפטים מאוד מפותחת. 223 00:14:43,680 --> 00:14:47,570 אם אתה שם את קו מציין המציין אחד מאותם תוכניות בהתחלה, 224 00:14:47,570 --> 00:14:51,270 זה ילך ישירות לתכנית שבמקום להתחיל פגז. 225 00:14:51,270 --> 00:14:54,030 יש תוכניות אלה גבולות ליכולות שלהם. 226 00:14:54,030 --> 00:14:58,790 פרל הוא מוכשר מאוד. סד הוא עורך. הוא יכול לעשות דברים שמעבר לפשטות עריכה. 227 00:14:58,790 --> 00:15:03,300 אבל זה יכול להיות קשה לתכנית זו. 228 00:15:03,300 --> 00:15:09,670 בנוסף, עוברים טיעונים ודברים לתסריט הוא בלתי אפשרי או מבלבל. 229 00:15:09,670 --> 00:15:15,030 כך שבמקרים אלה, עם awk או sed, זה, לפחות מהניסיון שלי, 230 00:15:15,030 --> 00:15:18,910 עדיף לכתוב awk תסריט ושיחת פגז או sed מתסריט הפגז 231 00:15:18,910 --> 00:15:24,660 ולא קוראים awk sed או כקו מציין תסריט. 232 00:15:24,660 --> 00:15:26,980 פרל הוא שפה מאוד מגוונת, כפי שאמרתי. 233 00:15:26,980 --> 00:15:30,050 אתה לא יכול להפעיל פקודות אינטראקטיביות בPerl, 234 00:15:30,050 --> 00:15:32,660 מה שאומר שאתה לא יכול לבדוק את החלקים של תסריטים שאתה מפתח 235 00:15:32,660 --> 00:15:33,970 על ידי הפעלתם באופן אינטראקטיבי. 236 00:15:33,970 --> 00:15:36,160 עם זאת, זה שפה מסוגלת מאוד 237 00:15:36,160 --> 00:15:40,960 והתפתח לכלי בשימוש נרחב מאוד. 238 00:15:40,960 --> 00:15:45,720 זה פשוט קצת הערת סוגריים על הקווים מציין. 239 00:15:45,720 --> 00:15:50,610 >> ברוב הצורות של לינוקס או כל - שוב, אני לא יכול להיות בטוח שזה כל - 240 00:15:50,610 --> 00:15:57,900 וב-Mac OS, אם אתה מקליד csh אתה מקבל tcsh, 241 00:15:57,900 --> 00:16:00,570 ואם תקלידו sh אתה מקבל bash. 242 00:16:00,570 --> 00:16:05,020 הם ניסו שם כדי לתת לך את הגרסאות מתקדמות יותר של פגזים אלה, 243 00:16:05,020 --> 00:16:07,940 אבל זה יכול להיות מבלבל. 244 00:16:07,940 --> 00:16:16,720 אם אתה כותב תסריט באמצעות tcsh או Bash כולל בשעה שקרא csh או sh 245 00:16:16,720 --> 00:16:22,230 ולאחר מכן נסה להפעיל אותו במחשב שאין לי tcsh או בש, 246 00:16:22,230 --> 00:16:25,050 אתה עלול לקבל כמה טעויות אם יש פקודות שם 247 00:16:25,050 --> 00:16:27,970 שפגזים אלה אינכם מזהים. 248 00:16:27,970 --> 00:16:34,120 בנוסף, ייתכן שנקראת הקליפה שלך במחשב המקומי 249 00:16:34,120 --> 00:16:37,700 קורא לזה כמו sh או csh ולאחר מכן מקבל את הפגזים מתקדמים יותר. 250 00:16:37,700 --> 00:16:41,440 אתה לא יכול אפילו לחשוב על העובדה שאתה משתמש במעטפת מתקדמת יותר. 251 00:16:41,440 --> 00:16:45,670 אז זהו מכשול פוטנציאלי. 252 00:16:45,670 --> 00:16:50,290 איך זה נקבע, כי אם תקליד sh אתה מקבל בש, 253 00:16:50,290 --> 00:16:55,580 אם אתה מקליד csh אתה מקבל tsch? 254 00:16:55,580 --> 00:16:59,940 יש דברים במחשבים אלה נקראים קישורים 255 00:16:59,940 --> 00:17:06,460 אשר יכול להתחבר לשמות קבצים כדי להתייחס לאותו הדבר. 256 00:17:06,460 --> 00:17:12,180 זה יכול להיות או 2 שמות לאותו קובץ או קבצים שמטרתם היא להפנות לקובץ אחר. 257 00:17:12,180 --> 00:17:17,550 הם נקראים קישורים קשים וסמליים. אנחנו לא תהיינה להיכנס לזה יותר היום. 258 00:17:17,550 --> 00:17:21,619 יתכן שיש גם קבצים נפרדים - sh קובץ 1, קובץ Bash 1 - 259 00:17:21,619 --> 00:17:23,880 אבל שניהם מנוהלים על Bash. 260 00:17:23,880 --> 00:17:29,350 אז יש במוקדמות אחרת כאן. 261 00:17:29,350 --> 00:17:42,640 אם אתה מתקשר אחד הפגזים האלה בשם אחד, 262 00:17:42,640 --> 00:17:46,640 אולי אתה חושב שאתה מקבל את אותה פונקציונלי כמו קורא לזה בשם אחר. 263 00:17:46,640 --> 00:17:49,700 ובכן, זה ממש לא בהכרח נכון. 264 00:17:49,700 --> 00:17:55,020 פקודות אלה יכולים לבחון את השם שבו הם נקראו 265 00:17:55,020 --> 00:18:00,020 והם יכולים, על בסיס השם הזה, מתנהגים בצורה שונה. 266 00:18:00,020 --> 00:18:02,740 ייתכנו בעיות של מנסה להתאים לסטנדרט. 267 00:18:02,740 --> 00:18:06,060 חלק מכם אולי שמע על תקן POSIX זה או אחר, 268 00:18:06,060 --> 00:18:08,730 אולי תכונות אחרות. 269 00:18:08,730 --> 00:18:14,520 זו יכולה להיות מוגדר לעתים על ידי טיעוני שורת הפקודה 270 00:18:14,520 --> 00:18:17,310 או על ידי הגדרת משתני פגז. 271 00:18:17,310 --> 00:18:22,170 קורא לזה כמו sh או bash עשוי דווקא להוביל לביצוע שונה 272 00:18:22,170 --> 00:18:25,300 גם אם זה אותו הקובץ שאתה מבצע. 273 00:18:25,300 --> 00:18:31,800 דבר נוסף שיש לקחת בחשבון הוא שגם אם מחשב אחר יש Bash tcsh או, 274 00:18:31,800 --> 00:18:35,310 אם הם אינם צמודים כפי שהם נמצאים במחשב המקומי שלך 275 00:18:35,310 --> 00:18:37,990 אם יש לך מחשב מקומי של לינוקס או Mac OS, 276 00:18:37,990 --> 00:18:45,630 אז שוב תקבל את הפגז שאתה קורא sh או csh, לא אחד שאולי אתה מעדיף. 277 00:18:50,430 --> 00:19:01,130 יש בורן הפגז הנוכחי שיפורים פחותים מאלה בש 278 00:19:01,130 --> 00:19:06,100 אבל בעבר אלה במעטפת בורן המקורית. 279 00:19:06,100 --> 00:19:09,690 כתוצאה מכך, גם את קליפת בורן הנוכחית, sh, 280 00:19:09,690 --> 00:19:14,560 גם כשזה לא בש, דומה לשפת C יותר מאשר ה-C-הפגז עושה. 281 00:19:14,560 --> 00:19:20,460 זה לא היה נכון, כאשר C-shell נוצר לראשונה, אבל זה התפתח בצורה כזאת. 282 00:19:20,460 --> 00:19:26,560 ייתכן שתבחין כאן שכל השמות הללו, פרט לפגז פגז בורן 283 00:19:26,560 --> 00:19:30,640 יש להם משהו כדי לציין שקליפה שהם - csh, bash - 284 00:19:30,640 --> 00:19:32,550 אבל פגז בורן הוא רק sh. 285 00:19:32,550 --> 00:19:34,910 למה? זה היה הפגז המקורי. 286 00:19:34,910 --> 00:19:37,770 זה היה פגז אז, לא קליפה, 287 00:19:37,770 --> 00:19:41,090 ומאחר שזה היה הפגז, לא הייתה שום סיבה כדי להבדיל אותה מפגז נוסף. 288 00:19:41,090 --> 00:19:45,030 אז בגלל זה יש לו את השם הזה ועדיין עושה. 289 00:19:50,630 --> 00:19:58,990 >> עליון זה כאן הוא שורה ממסד נתוני סיסמא לחשבון שיש לי שם 290 00:19:58,990 --> 00:20:01,680 במחשב אחר. 291 00:20:01,680 --> 00:20:08,300 אני הולך לנסות להשיג את השם הזה כדי שתוכל לראות את החלק הזה בסוף, את הקליפה. 292 00:20:09,720 --> 00:20:15,450 מסד הנתונים הסיסמה מחזיק מאפייני כניסה עבור כל המשתמשים. 293 00:20:15,450 --> 00:20:20,330 בתחילת הוא שם המשתמש, שבו אתה יכול לראות את 2 האותיות האחרונות שלי עכשיו. 294 00:20:20,330 --> 00:20:23,970 השדות כאן מופרדים על ידי נקודתיים. 295 00:20:23,970 --> 00:20:28,210 השדה האחרון, כפי שאתה יכול לראות, הוא bin / tcsh, הפגז. 296 00:20:28,210 --> 00:20:30,230 זה מציין פגז. 297 00:20:30,230 --> 00:20:33,240 יש משהו מעניין כאן. 298 00:20:33,240 --> 00:20:36,950 כאשר יוניקס פותח לראשונה, הייתה רק קליפה 1, 299 00:20:36,950 --> 00:20:38,350 אז לא הייתה ברירה לשם. 300 00:20:38,350 --> 00:20:45,570 אז למה הם לא מאפשרים שדה במסד נתוני הסיסמה כדי לציין פגז? 301 00:20:45,570 --> 00:20:47,920 אני לא יודע, אבל זה מזל שהם עשו. 302 00:20:47,920 --> 00:20:52,030 זה די קשה לבצע שינויים בפורמט מסד הנתונים סיסמא 303 00:20:52,030 --> 00:20:54,420 בגלל תוכניות רבות מתייחסות לפורמט שלה 304 00:20:54,420 --> 00:20:57,720 והיית צריך לכתוב אותו מחדש. 305 00:20:57,720 --> 00:21:04,130 זה פיתוח מוצלח או מקרי שהם נכללו תחום זה. 306 00:21:04,130 --> 00:21:12,780 זה סוג של קו קובץ סיסמות משמש בכל מחשבי יוניקס ולינוקס עד כמה שאני יודע. 307 00:21:12,780 --> 00:21:14,650 יש מק מערכת משלה. 308 00:21:14,650 --> 00:21:17,810 זה בעצם יש קובץ סיסמא עם הקווים בפורמט זה, 309 00:21:17,810 --> 00:21:21,060 אבל זה לא שבו מאפייני המשתמשים מוגדרים. 310 00:21:21,060 --> 00:21:24,200 עוד הערה בסוגריים לשם. 311 00:21:36,470 --> 00:21:46,020 >> אם אתה מתקשר פגז, אתה יכול לקרוא לזה כמשנה פגז של הפגזים הקיימים שלך. 312 00:21:46,020 --> 00:21:50,480 אז אם אני הולך כאן, בואו להיפטר מהדברים האלה. 313 00:21:50,480 --> 00:21:53,350 הנה אני בC-הפגז. 314 00:21:56,830 --> 00:22:01,200 משתנה זה, המזהה במדויק הקונכייה שלי, 315 00:22:01,200 --> 00:22:04,300 הוא למעשה לא תמיד דרך אמינה לקבוע מה לשלם אתה מפעיל, 316 00:22:04,300 --> 00:22:06,220 אבל במקרה הזה זה הוא. 317 00:22:06,220 --> 00:22:08,040 מה אם אני פשוט להקליד - 318 00:22:09,970 --> 00:22:12,470 עכשיו אני בש. 319 00:22:12,470 --> 00:22:19,540 יש דברים שהולכים להיות אותו הדבר. ls אומר לי פקודות שלי. 320 00:22:19,540 --> 00:22:24,500 אם אני עושה להשעות חזרה ל-C-הקונכייה שלי, ls, אותו הדבר. נכון? 321 00:22:24,500 --> 00:22:28,890 FG, חזית, חזרה למעטפת Bash שלי. 322 00:22:28,890 --> 00:22:38,290 מע"צ, ספרייה נוכחית, חזרה לC-הפגז. 323 00:22:38,290 --> 00:22:43,180 ספריית מע"צ, שונה - בעצם לא ספרייה שונה במקרה זה. 324 00:22:43,180 --> 00:22:45,110 זה אותו המדריך. 325 00:22:45,110 --> 00:22:50,000 בואו נגיד שאני רוצה לקרוא לפקודה כאן: בי ls. 326 00:22:50,000 --> 00:22:52,140 מה זה עושה? 327 00:22:52,140 --> 00:22:53,670 זה אומר לי שבו פקודת ls, 328 00:22:53,670 --> 00:22:56,670 אחד שנותן לי רישום בספרייה, ממוקם בls. 329 00:22:56,670 --> 00:23:01,460 בואו נחזור לBash פגז. בואו ננסה את אותו דבר. 330 00:23:01,460 --> 00:23:05,830 הממ, מעניין שם, שבו: הפקודה לא נמצאה. 331 00:23:05,830 --> 00:23:07,400 מדוע זה כך? 332 00:23:07,400 --> 00:23:11,570 שבו הפקודה בנויה לC-הפגז. 333 00:23:11,570 --> 00:23:15,630 זה לא הפקודה שצריכה לקרוא לזיכרון ממקום אחר והוצאו להורג. 334 00:23:15,630 --> 00:23:20,310 C-shell מפעיל אותו על ידי העברת ביצוע לחלק מקוד משלה 335 00:23:20,310 --> 00:23:22,790 וזה לא במעטפת Bash. 336 00:23:22,790 --> 00:23:25,710 אז בש, שאין לו פקודה כזו מובנה, מחפש אותו, לא מוצא את זה, 337 00:23:25,710 --> 00:23:27,720 ואנחנו מקבלים הודעת שגיאה. 338 00:23:27,720 --> 00:23:32,290 אז יש לנו מעטפת Bash פועלת תחת C-shell, ואנחנו קוראים לזה תת קליפה. 339 00:23:32,290 --> 00:23:38,480 ורק במקרה שאתה סקרן, יש Bash פגז דרך של איתור פקודות משלו. 340 00:23:38,480 --> 00:23:42,590 מקוצר ומתייחס לעובדה שזה יכול להיות מוצא להורג במהירות רב יותר, 341 00:23:42,590 --> 00:23:44,960 שנמצא במהירות רבה יותר. 342 00:23:44,960 --> 00:23:48,610 זה אחד השיפורים שנבנו בחלק מפגזים אלה. 343 00:23:50,220 --> 00:23:54,200 >> פגזי בורן מהסוג עדיפים לתכנות. 344 00:23:54,200 --> 00:23:57,300 יש להם מבני שליטה כמו לולאות, משפטי תנאי, 345 00:23:57,300 --> 00:24:00,240 הסוג של פקודות שיהיה אפשר להשתמש בשפות תכנות כמו C 346 00:24:00,240 --> 00:24:04,190 או כל שפה. אולי אתה מתכנת ב-Java או משהו כזה. 347 00:24:04,190 --> 00:24:06,460 יש לי פגזים אותם מדי. 348 00:24:06,460 --> 00:24:11,790 פגזי בורן מהסוג, במיוחד בש, יש להם יותר 349 00:24:11,790 --> 00:24:15,730 והם נועדו עם גמישות רבה יותר. 350 00:24:15,730 --> 00:24:20,700 יש Bash פגז מערכים. בורן המעטפת המקורית לא עושה זאת. 351 00:24:20,700 --> 00:24:26,130 כך שיכול להיות משמעותי יתרון לתכנות. 352 00:24:26,130 --> 00:24:29,810 C-shell דווקא יש לי מערכים אך אין לו הרבה תכונות אחרות אלה. 353 00:24:29,810 --> 00:24:33,450 פגזי בורן מהסוג יבצעו מהר יותר 354 00:24:33,450 --> 00:24:36,520 אם אין להם את התכונות שנועדו לשימוש אינטראקטיבי. 355 00:24:36,520 --> 00:24:39,340 אתה טוען את דברים למטרה אחת, זה טוען אותם למטרה אחרת. 356 00:24:39,340 --> 00:24:41,520 יש שתחלופה שם. 357 00:24:41,520 --> 00:24:44,510 תכונות אלה המיועדים לשימוש אינטראקטיבי 358 00:24:44,510 --> 00:24:46,920 באמת שימוש מועט, אם בכלל עבור scripting. 359 00:24:46,920 --> 00:24:52,160 זה אפשרי להשתמש בתת קליפה אינטראקטיבית בדיוק כמו אחד שהתחלתי שם 360 00:24:52,160 --> 00:24:57,780 כדי לבדוק את הפקודות שבו אתה מתכוון להשתמש בתסריט. 361 00:24:57,780 --> 00:25:01,180 זה מה שאתה לא יכול לעשות עם פרל. אתה יכול לעשות את זה עם פצצות. 362 00:25:01,180 --> 00:25:04,850 אפילו מבנים כמו ללולאות וכן הלאה ניתן להפעיל באופן אינטראקטיבי. 363 00:25:04,850 --> 00:25:07,000 הם מדי פעם שימושיים לפעולה אינטראקטיבית, 364 00:25:07,000 --> 00:25:10,180 אבל יותר סביר להניח שאתה משתמש בהם כדי לפתח את תסריט. 365 00:25:15,690 --> 00:25:17,400 >> כינויים. 366 00:25:17,400 --> 00:25:21,630 זה הולך להיות על ה-C-הפגז. 367 00:25:23,270 --> 00:25:27,570 מנגנון ההיסטוריה שבו אתה מקבל בחזרה לפקודות מוקדם יותר 368 00:25:27,570 --> 00:25:30,340 או חלקים מהם, כי יש לך כבר לרוץ. 369 00:25:30,340 --> 00:25:33,680 שוב, על ה-C-הקליפה, קליפת בורן והקליפה קורן יש את הדברים האלה, 370 00:25:33,680 --> 00:25:35,620 אבל אני לא הולך להיכנס אליהם. 371 00:25:35,620 --> 00:25:40,340 אז הנה כמה כינויים שימושיים שיש לי. 372 00:25:43,100 --> 00:25:44,880 במקום להקליד ls - זה פיקוד משותף - 373 00:25:44,880 --> 00:25:47,620 פשוט להקליד ליטר ולחסוך לעצמך את דמות 1. 374 00:25:47,620 --> 00:25:50,600 ls עם אפשרויות שונות, את כל עבודתם. 375 00:25:50,600 --> 00:25:54,460 שים לב שיש הגדרות אלה ציטוטים סביבם. 376 00:25:54,460 --> 00:25:57,520 במקרים אלה, הציטוטים אינם נחוצים. 377 00:25:57,520 --> 00:26:00,100 אם אתה יכול להגדיר את הכינויים האלה בלי המרכאות, זה עדיין עובד. 378 00:26:00,100 --> 00:26:02,910 הם מומלצים. 379 00:26:02,910 --> 00:26:04,900 ישנם מצבים שבהם אתה לא יכול להשתמש בציטוט 380 00:26:04,900 --> 00:26:08,050 בגלל שאתה רוצה שתקרה משהו שהציטוט הייתי למנוע. 381 00:26:08,050 --> 00:26:11,210 לפעמים אתה יכול לצטט חלק מההגדרה, אך לא את כולו. 382 00:26:11,210 --> 00:26:17,010 זה גם בדרך כלל מומלץ להשתמש בגרשיים בודדים ולא במרכאות כפולות. 383 00:26:17,010 --> 00:26:19,750 יש מרכאות כפולות השפעות על הגדרות משתנה, 384 00:26:19,750 --> 00:26:22,950 במיוחד שגרם להם להיות מוערך ולא לעצור אותו. 385 00:26:22,950 --> 00:26:25,910 למה שנרצה להפסיק את ההערכה? 386 00:26:25,910 --> 00:26:28,710 ואיך ציטוטים עושים את זה בשבילנו? 387 00:26:28,710 --> 00:26:32,600 >> הנה פקודה שבו אתה עלול למצוא מעניין. 388 00:26:32,600 --> 00:26:35,470 '* G ls' 389 00:26:35,470 --> 00:26:37,640 * גרם, כפי שאתה בוודאי יודע, הוא ביטוי כללי 390 00:26:37,640 --> 00:26:40,290 לכל שמות הקבצים מתחילים עם g. 391 00:26:40,290 --> 00:26:46,410 אם אני רק כותב ב* גרם ls הפקודה, אני אקבל רשימה של כל השמות הללו בספרייה הנוכחית שלי. 392 00:26:46,410 --> 00:26:50,870 אם אני מגדיר את הכינוי שכפי שהוא כאן עם הציטוטים, 393 00:26:50,870 --> 00:26:56,990 זה יפעל הפקודה שבספרייה הנוכחית שלך שבו אתה מפעיל אותו. 394 00:26:56,990 --> 00:27:01,250 אבל אם אתה מפעיל את הגדרת הכינוי בלי המרכאות, 395 00:27:01,250 --> 00:27:09,620 זה יהיה להעריך את * g הכללי כשהוא פועל פקודת ההגדרה זו. 396 00:27:09,620 --> 00:27:14,400 אז ההגדרה של הכינוי יהיה ls ואחריו הרשימה של קבצים בספרייה 397 00:27:14,400 --> 00:27:16,310 שבפקודת הכינוי מבוצעת, 398 00:27:16,310 --> 00:27:19,180 לא משנה היכן אתה בעצם מתכוון להריץ את הפקודה. 399 00:27:19,180 --> 00:27:26,360 זה לא שימוש רב, והגרשיים בודדים למנוע את ההערכה של הכוכבית. 400 00:27:26,360 --> 00:27:30,780 אז אתה פשוט מקבל את גר ls ההוויה הגדרה *. 401 00:27:30,780 --> 00:27:35,510 ואז, כאשר אתה מפעיל את הכינוי, LGS, אז זה מכניס את זה. 402 00:27:35,510 --> 00:27:40,490 עכשיו אין ציטוטים, וזה יהיה להעריך את הכוכבית כשאתה מפעיל את פקודת הכינוי. 403 00:27:40,490 --> 00:27:43,900 אז זה דבר אחד. 404 00:27:43,900 --> 00:27:46,590 מרכאות כפולות היו כי אותו אפקט כאן, 405 00:27:46,590 --> 00:27:50,580 אבל יש מקרים אחרים בהם במרכאות כפולות לא היו עובדים כל כך טובה. 406 00:27:50,580 --> 00:27:52,450 >> הנה עוד אחד. 407 00:27:52,450 --> 00:27:54,270 אתה אולי יודע את פקודת grep. 408 00:27:54,270 --> 00:28:02,110 פקודת grep ניתן להשתמש כדי לסרוק את קובץ לקווים שיש להם מחרוזות מסוימות. 409 00:28:02,110 --> 00:28:10,350 אז בואו נלך לכאן ואני לצאת מקליפת בורן שלי. 410 00:28:23,570 --> 00:28:25,450 אוקיי. הנה קובץ. 411 00:28:25,450 --> 00:28:31,490 בואו נגיד שזה מחרוזות abc grep. זה מה שיש. 412 00:28:31,490 --> 00:28:37,930 אם אני עושה zddd grep, אני לא מקבל כלום. אוקיי. 413 00:28:37,930 --> 00:28:40,960 אז הוא מוצא את מחרוזת, הוא מדווח, זה לא מוצא, זה לא לדווח על כך. 414 00:28:40,960 --> 00:28:44,930 זה פלטי כל קו שבו יש מחרוזת שעל זה. 415 00:28:44,930 --> 00:28:49,080 יש כל מיני אפשרויות כאן שבו אתה יכול למצוא בתיעוד. 416 00:28:49,080 --> 00:28:52,160 הנה דרך אחת לעשות את זה. 417 00:28:52,160 --> 00:29:03,290 ומה עם אחד, כינוי grabc 'grep abc' הזה? 418 00:29:03,290 --> 00:29:09,000 זה הולך כולל טיעון 1 כאשר הכינוי מוגדר. 419 00:29:09,000 --> 00:29:26,300 אז אם אני עושה את זה כאן, עכשיו, אם אני עושה grabc, 420 00:29:26,300 --> 00:29:30,620 עכשיו הכינוי כולל יותר מ פקודה הפשוטה. כמו כן, יש הוויכוח. 421 00:29:30,620 --> 00:29:32,190 עד כה זה עובד. 422 00:29:32,190 --> 00:29:38,590 יש לי פקודה אחרת כאן, זה אחד, ולכן אלה הם מחרוזות שונות לשם 423 00:29:38,590 --> 00:29:46,790 ולהראות שזה לא ימצא שם שום דבר שכן הוא אינו תואם. 424 00:29:46,790 --> 00:29:56,180 >> מה אם אני רוצה לכלול בהגדרת הכינוי את הקובץ שאני הולך לחפש 425 00:29:56,180 --> 00:30:02,970 ואני רוצה לתת כטיעון לכינוי המחרוזת שאני מחפש? 426 00:30:02,970 --> 00:30:08,040 אולי אני רוצה לומר abc כטיעון לכינוי שלי, 427 00:30:08,040 --> 00:30:10,870 אבל הכינוי כבר קבע את הקובץ. 428 00:30:10,870 --> 00:30:15,710 וזה מקום שבי ביטוי זה נכנס 429 00:30:20,430 --> 00:30:25,270 שים לב יש לנו כאן grep בדיוק כמו קודם. 430 00:30:25,270 --> 00:30:28,130 יש לנו את הקובץ כאן, מחרוזות. 431 00:30:28,130 --> 00:30:35,610 \! ^, סוג של הבעה מוזרה, אני מניח, אם לא ראיתי את זה קודם. 432 00:30:35,610 --> 00:30:39,920 סימן קריאה היא חלק ממנגנון ההיסטוריה C-הפגז. 433 00:30:39,920 --> 00:30:45,220 זה יכול להיזכר בפקודות קודם לכן, זה יכול להיזכר בטיעונים לפקודות אלו וכן הלאה. 434 00:30:46,760 --> 00:31:01,570 מנגנון ההיסטוריה משמש כחלק מכינוי. 435 00:31:01,570 --> 00:31:07,390 אם תציין בתור אחרי סימן הקריאה, הוא מתייחס לאותו קו ברשימת ההיסטוריה, 436 00:31:07,390 --> 00:31:11,910 שבו אנחנו לא נכנסים עכשיו מכיוון שזה נושא אחר לגמרי. 437 00:31:11,910 --> 00:31:16,280 ניתן לציין חלק מקו. 438 00:31:16,280 --> 00:31:22,950 אז! 03:02 יהיו הטיעון השני של פקודת מספר 3. 439 00:31:22,950 --> 00:31:30,430 קארה כאן בביטוי זה מייצגת את הטענה הראשונה. 440 00:31:30,430 --> 00:31:34,410 אם אתה לא נותן לו אינדיקציה לאיזו פקודה שאתה מתייחס אליו, 441 00:31:34,410 --> 00:31:37,300 הוא מתייחס לפקודה באופן מיידי הקודמת, 442 00:31:37,300 --> 00:31:41,990 וקארה היא סמל לטענה הראשונה. 443 00:31:41,990 --> 00:31:46,820 כי זה הסימן הכניסה ולא את המספר, אתה לא צריך להשתמש במעי הגס, 444 00:31:46,820 --> 00:31:52,660 כל כך! ^ אומר הטענה הראשונה לפקודה הקודמת. 445 00:31:52,660 --> 00:31:55,020 קצת התבלבלו כאן. 446 00:31:55,020 --> 00:31:58,450 במקרה זה, כאשר אתה משתמש בזה כהגדרת כינוי, 447 00:31:58,450 --> 00:32:04,650 התייחסות ההיסטוריה מתייחסת בחזרה לפקודות שבו נעשה שימוש בכינוי. 448 00:32:04,650 --> 00:32:08,470 אז זה הולך אחורה פקודת 1 כמבצע היסטוריה, 449 00:32:08,470 --> 00:32:11,810 אלא כפעולת כינוי זה מתייחס לפקודה שבו היית הקלדה, 450 00:32:11,810 --> 00:32:14,780 אומר, grstrings_file. 451 00:32:17,440 --> 00:32:20,240 יש לנו את הציטוטים כאן בזה. מה הקו הנטוי ההפוך ל? 452 00:32:20,240 --> 00:32:30,810 במקרה זה, כמו במקומות אחרים, אנחנו לא רוצים להוציא לפועל את מנגנון ההיסטוריה 453 00:32:30,810 --> 00:32:33,680 תוך הגדרת הכינוי. 454 00:32:33,680 --> 00:32:37,900 אם לא היה לנו את הקו הנטוי שם, הפגז היה למשוך בטענה הראשונה 455 00:32:37,900 --> 00:32:41,870 של את הפקודה נכונה לפני שהוא רץ פקודת הכינוי הזה, שאנחנו לא רוצים. 456 00:32:41,870 --> 00:32:47,520 אנחנו רוצים שזה ייבנה לפקודת הכינוי להתקשר בטיעון מאוחר יותר. 457 00:32:47,520 --> 00:32:53,550 גרשיים בודדים לא לברוח סימן קריאה, התייחסות להיסטוריה. 458 00:32:53,550 --> 00:32:57,450 אולי אתה יודע את בריחת ביטוי פירושו לשנות את המשמעות של משהו. 459 00:32:57,450 --> 00:33:00,260 במקרה זה, זה אומר להפסיק משהו שיש משמעות מיוחדת. 460 00:33:00,260 --> 00:33:03,030 המשמעות המיוחדת של סימן הקריאה היא ההיסטוריה. 461 00:33:03,030 --> 00:33:05,790 לברוח ואין לו משמעות. 462 00:33:05,790 --> 00:33:08,080 ציטוטים לא עושים את זה; קו נטוי הפוך עושה. 463 00:33:08,080 --> 00:33:11,900 אז אנחנו משתמשים למעשה 2 רמות של בריחה כאן. 464 00:33:23,500 --> 00:33:29,620 אני הולך להעביר פקודה זו לתוך החלון האחר מבלי להקליד אותו 465 00:33:29,620 --> 00:33:35,210 באמצעות פעולות עריכה אלה, שבו אתה עלול למצוא שימושי. 466 00:33:40,620 --> 00:33:42,460 משהו אחר כאן אני אראה לך. 467 00:33:42,460 --> 00:33:46,730 אם אתה פשוט הקלד את הכינוי בלי ויכוחים, זה אומר לך את כל הטיעונים שלך. 468 00:33:46,730 --> 00:33:48,640 זוהי חבורה של כינויים כבר הייתה לי כאן 469 00:33:48,640 --> 00:33:53,400 מלבד אלה שכבר משתמשים כאן היום. 470 00:33:53,400 --> 00:34:00,220 אבל אם אני פשוט להקליד את השם של כינוי, זה אומר לי מה זה אומר. 471 00:34:00,220 --> 00:34:03,390 שים לב שהציטוטים נעלמו והקו הנטוי ההפוך הוא נעלם. 472 00:34:03,390 --> 00:34:08,620 מחרוזת זו כאן היא התוצאה של שהגדרת הכינוי, 473 00:34:08,620 --> 00:34:12,199 ועכשיו יש לו רק! ^ בו. 474 00:34:12,199 --> 00:34:19,150 זה הולך להיראות במחרוזות קובץ לכל דבר. 475 00:34:19,150 --> 00:34:34,900 אז אם אני עושה מחרוזות grstrings_file, אני לא נותן לו מה לחפש שם, 476 00:34:34,900 --> 00:34:37,429 אבל זה נראה במחרוזות. 477 00:34:37,429 --> 00:34:42,330 זה לא מצא מילת המחרוזות במחרוזות הקובץ, אבל זה abc למצוא. 478 00:34:42,330 --> 00:34:46,770 וזה לא מוצא את זה. 479 00:34:46,770 --> 00:34:52,330 אז הנה אנחנו נותנים טיעון שפוגע בהגדרה של הכינוי, 480 00:34:52,330 --> 00:34:55,530 שהוכנס לתוכו. 481 00:34:55,530 --> 00:34:58,540 זה מקום שבו ביטוי זה בא. 482 00:34:58,540 --> 00:35:00,240 אתה יכול להשתמש יותר מ 1. 483 00:35:00,240 --> 00:35:03,170 קארה היא סמל לטענה הראשונה. 484 00:35:03,170 --> 00:35:07,510 אם אתה רוצה להשתמש בטיעון שני, היית אז אומר: 2. 485 00:35:07,510 --> 00:35:11,250 אין שום סמל מיוחד לטענה השנייה. 486 00:35:11,250 --> 00:35:14,790 ומכיוון שאתה משתמש בספרה, היית צריך להשתמש במעי הגס. 487 00:35:14,790 --> 00:35:17,220 יש, עם זאת, בחירה אחרת כאן. 488 00:35:17,220 --> 00:35:21,220 סימן הדולר מייצג את הטענה האחרונה. 489 00:35:21,220 --> 00:35:23,320 ובגלל זה הוא סמל, ניתן להשמיט את המעי הגס. 490 00:35:23,320 --> 00:35:25,870 אז זה יהיה הטיעון האחרון ברשימה. 491 00:35:25,870 --> 00:35:27,900 ויש גם את זה. 492 00:35:27,900 --> 00:35:31,380 כוכבית אומרת כל, אז זה רשימת טיעון המלאה, 493 00:35:31,380 --> 00:35:35,150 ושוב, אתה יכול להשמיט את המעי הגס כי זה לא ספרה. 494 00:35:36,970 --> 00:35:39,950 אני מקווה שאתה כל התבוננות בכל זה. 495 00:35:39,950 --> 00:35:54,100 >> מנגנון ההיסטוריה יכול לחזור לקווים קודם לכן ברשימת ההיסטוריה. 496 00:35:54,100 --> 00:36:01,370 אתה יכול לעשות את זה בהגדרת כינוי. 497 00:36:01,370 --> 00:36:02,950 אף פעם לא ראיתי את זה נעשה. 498 00:36:02,950 --> 00:36:05,840 תהיה לה ההשפעה של משיכת פקודות מוקדם יותר מרשימת ההיסטוריה 499 00:36:05,840 --> 00:36:08,130 כאשר אתה לבצע את הכינוי, שיכולים להיות פקודות שונות 500 00:36:08,130 --> 00:36:11,240 תלוי מתי ואיפה אתה לבצע את זה. 501 00:36:11,240 --> 00:36:14,020 מתקבל על הדעת שאולי תרצה לשלוף התייחסות כזו 502 00:36:14,020 --> 00:36:15,900 רק כדי לדעת מה הפקודה קודמת הייתה. 503 00:36:15,900 --> 00:36:17,280 אף פעם לא ראיתי את זה קורה. 504 00:36:17,280 --> 00:36:19,970 אני מניח שמישהו שירצה, אבל זה מאוד לא סביר. 505 00:36:19,970 --> 00:36:26,480 יש עוד דבר כאן. 506 00:36:26,480 --> 00:36:33,060 אם אתה משתמש שבהתייחסות ההיסטוריה מהסוג, 507 00:36:33,060 --> 00:36:38,190 אז רק לטיעונים שיש בו התייחסות כזו נמצאים בשימוש. 508 00:36:38,190 --> 00:36:42,180 אם יש לך הגדרת כינוי שאינו משתמשת בהתייחסות ההיסטוריה מסוג, 509 00:36:42,180 --> 00:36:44,060 אם זה רק הופך להיות ההתחלה של הפקודה 510 00:36:44,060 --> 00:36:46,520 ויש לך טיעונים נוספים, אז כל דבר שאתה מקליד לאחר ש 511 00:36:46,520 --> 00:36:48,450 יתווסף לפקודה. 512 00:36:48,450 --> 00:36:52,040 במקרה זה, למשל אני פשוט נתתי שם, השתמשנו בטיעון הראשון; 513 00:36:52,040 --> 00:36:54,610 אנו לא משתמשים בכל האחרים. 514 00:36:54,610 --> 00:36:57,960 אם טיעונים אחרים שניתנו בשורת הפקודה, הם לא היו בשימוש. 515 00:36:57,960 --> 00:37:04,630 אז אם אתה משתמש בהתייחסות להיסטוריה בכל, אז אתה חייב להשתמש בו כדי לקבל את כל ויכוח. 516 00:37:04,630 --> 00:37:11,310 >> יש עוד דבר שכאן אני רק רוצה להזכיר, בין השאר במאמר מוסגר, 517 00:37:11,310 --> 00:37:15,250 דהיינו, כי מנגנון ההיסטוריה הזאת עם סימן הקריאה 518 00:37:15,250 --> 00:37:18,010 חוזר לC-shell המקורי. 519 00:37:18,010 --> 00:37:27,060 Tcsh הציג פעולות היסטוריה 520 00:37:27,060 --> 00:37:30,910 המשתמשים במיני פקודות ומחרוזות מהעורכים, 521 00:37:30,910 --> 00:37:33,650 או Emacs או vi. 522 00:37:33,650 --> 00:37:36,430 דעתי האישית היא Emacs הוא הרבה יותר קל להשתמש למטרה זו 523 00:37:36,430 --> 00:37:39,390 גם אם אתה משתמש vi לעריכה הרגילה שלך. 524 00:37:39,390 --> 00:37:43,900 ישנן פקודות Emacs שונות אשר נמצאים כעת מותאמות להיסטוריה. 525 00:37:43,900 --> 00:37:46,410 שליטת P מקבל את השורה הקודמת ברשימת ההיסטוריה. 526 00:37:46,410 --> 00:37:48,840 נוסף בקרת P יקבל את אחד לפני כן. 527 00:37:48,840 --> 00:37:50,540 החצים למעלה עושים את אותו הדבר. 528 00:37:50,540 --> 00:37:54,190 בקרת N מקבל את הפקודה הבאה, אם כבר יש לך לגלול אחורה כמה דרכים. 529 00:37:54,190 --> 00:37:55,880 החץ למטה עושה גם את זה. 530 00:37:55,880 --> 00:38:00,480 move אתה יכול שמאל לימין עם החצים ועוד דברים שונים. 531 00:38:00,480 --> 00:38:02,390 זה יכול להפוך את השימוש במנגנון ההיסטוריה 532 00:38:02,390 --> 00:38:05,070 הרבה יותר קל מאשר שימוש בתחביר הסימן קריאה, 533 00:38:05,070 --> 00:38:07,930 אבל אתה לא להשתמש בזה בהגדרת כינוי. 534 00:38:17,780 --> 00:38:20,020 נלך על זה בפעם אחרת. 535 00:38:24,300 --> 00:38:25,810 >> משתנים. 536 00:38:26,880 --> 00:38:29,510 אתה יודע מה משתנה בשפות תכנות. 537 00:38:29,510 --> 00:38:31,680 הפגזים גם יש להם. 538 00:38:31,680 --> 00:38:37,350 C-הפגז משתמש בפקודה נקבעה להקצות משתנה, 539 00:38:37,350 --> 00:38:41,360 כך קובע משתנה לשווי ב - 540 00:38:41,360 --> 00:38:46,390 כמו שאמרתי, הגדרה חסרת תועלת, אבל איור של איך זה משמש. 541 00:38:48,790 --> 00:38:52,410 פקודת הסט תיצור משתנה אם הוא לא קיימת כבר. 542 00:38:55,270 --> 00:39:02,490 הפרמטרים positional לתסריטי מעטפת יכולים להיחשב משתנים, 543 00:39:02,490 --> 00:39:10,750 אבל השימוש שלהם ואת הכללים עבורם הם שונים במקצת. 544 00:39:10,750 --> 00:39:14,320 אתה לא יכול להקצות ערך ל -1 דולרים בקורס של תסריט. 545 00:39:14,320 --> 00:39:18,340 היית צריך להגדיר משתנה חדש למטרה זו, אם כמה מכם רוצה. 546 00:39:23,000 --> 00:39:28,470 הקלד להגדיר ללא ויכוחים ואתה מקבל רשימה של כל המשתנים שהוגדרו ברגע זה. 547 00:39:28,470 --> 00:39:34,220 ובואו נגמור למעטפת אחרת שלי כאן ולראות מה אנחנו מקבלים אם אנחנו עושים את זה. 548 00:39:34,220 --> 00:39:37,110 די רשימה ארוכה שם, נכון? 549 00:39:37,110 --> 00:39:40,990 לגלול מעלה קצת. תסתכל על כל זה. 550 00:39:40,990 --> 00:39:44,330 חלק מהדברים האלה מוגדרים באופן אוטומטי על ידי הפגז. 551 00:39:44,330 --> 00:39:49,320 הקליפה יוצרת משתנה ומעניקה לו ערך. 552 00:39:49,320 --> 00:39:52,730 חלקם מוגדרים על ידי הפגז אבל אז הגדיר מחדש על ידי המשתמש 553 00:39:52,730 --> 00:39:54,820 בהתאם להעדפותיו. 554 00:39:54,820 --> 00:39:59,110 וכמה מהם נוצרו על ידי המשתמש בהתאם למה שהוא עושה באותו היום. 555 00:39:59,110 --> 00:40:01,880 זה פשוט להגדיר ללא ויכוחים. 556 00:40:06,920 --> 00:40:10,050 יש תכונה מוזרה כאן של הדבר הזה. 557 00:40:10,050 --> 00:40:17,980 שם צריך להיות גם ללא רווחים בין סימן השווה והשם המשתנה 558 00:40:17,980 --> 00:40:23,700 והערך או החללים משני הצדדים של סימן השוויון, 559 00:40:23,700 --> 00:40:28,940 כמו בזה. 560 00:40:35,620 --> 00:40:41,340 זה לא יעבוד, וזה בעצם הוא פקודה חוקית 561 00:40:41,340 --> 00:40:43,390 אבל זה לא יעשה את מה שאתה מתכוון. 562 00:40:43,390 --> 00:40:50,070 הפקודה שתעבוד כי אם אתה רק אומר להגדיר ושם משתנה 563 00:40:50,070 --> 00:40:54,890 ללא סימן שוויון או להגדיר ושם משתנה עם סימן שוויון ואין לו ערך, 564 00:40:54,890 --> 00:40:57,770 זה יהיה להגדיר את המשתנה לערך ריק. 565 00:40:57,770 --> 00:41:00,120 אז להגדיר = הוא פקודה חוקית. 566 00:41:00,120 --> 00:41:04,370 פקודת הסט יכולה להגדיר יותר ממשתנה 1 על אותו הקו. 567 00:41:04,370 --> 00:41:11,240 אז פקודה זו כאן יש ההשפעה של הגדרה הן A ו-B ל null ערכים. 568 00:41:11,240 --> 00:41:13,470 כנראה שלא מה שאתה רוצה. 569 00:41:13,470 --> 00:41:17,940 זה כאן, שהוזכר קודם לכן, יוביל לשגיאה 570 00:41:17,940 --> 00:41:21,270 בגלל = b היא לא ביטוי חוקי. 571 00:41:21,270 --> 00:41:23,680 שם משתנה לא יכול להתחיל עם סימן השוויון. 572 00:41:26,760 --> 00:41:29,080 ויש את הדברים האלה עוד יותר כאן. 573 00:41:29,080 --> 00:41:36,820 נקודתיים שימשו כדי לבחור טיעונים מהקווים ההיסטוריה, 574 00:41:36,820 --> 00:41:41,210 והם יכולים לשמש - ואני לא נכנסתי לפני כן - לשנות את הדברים האלה. 575 00:41:41,210 --> 00:41:44,480 הם גם יכולים לשמש כדי לשנות את משתני פגז. 576 00:41:44,480 --> 00:41:49,050 זה כאן, $, יש לו ערך. 577 00:41:49,050 --> 00:41:55,040 : R ימריא להארכה. 578 00:41:55,040 --> 00:41:57,200 סיומת תהיה דבר הבא נקודה, 579 00:41:57,200 --> 00:41:59,200 נקודה וכל דבר הבא זה בסוף קובץ, 580 00:41:59,200 --> 00:42:03,230 רק בסוף הרשימה אחרי הלוכסן האחרון. 581 00:42:03,230 --> 00:42:05,480 אז יש לי את זה כאן. 582 00:42:05,480 --> 00:42:10,730 הוא ש. זה יירד. O. 583 00:42:10,730 --> 00:42:16,510 אם אין הרחבה, רק הנתיבים אחרי הלוכסן שעבר, לא יהיה לה השפעה. 584 00:42:16,510 --> 00:42:27,480 : h, שביטוי משתנה, ימריא לאלמנט האחרון של רשימת ספריות, 585 00:42:27,480 --> 00:42:29,660 שוב, רק לאחר הלוכסן האחרון. 586 00:42:29,660 --> 00:42:33,160 אז / / b / ג הופך / / b, 587 00:42:33,160 --> 00:42:38,870 אבל זה משתנה בגלל האלמנט לאחר שהרשימה הוא ריק. 588 00:42:38,870 --> 00:42:43,070 כאן יש משהו שגם אני רוצה להדגיש. 589 00:42:43,070 --> 00:42:46,770 מוקדמות אלה אינם לחפש את קיומם של קבצים אלה. 590 00:42:46,770 --> 00:42:48,910 הם פשוט מחפשים מחרוזות. 591 00:42:48,910 --> 00:42:54,520 אלה נועדו כדי לתפעל שמות קבצים, נתיבים, 592 00:42:54,520 --> 00:42:57,520 אבל הם יכולים להיות בשימוש בכל מחרוזת גם אם זה לא שם קובץ. 593 00:42:57,520 --> 00:42:58,920 והם לא נראים לקיומו, 594 00:42:58,920 --> 00:43:03,550 כך שאם אין קובץ כזה, / / ​​B / C, זה עדיין עובד. 595 00:43:03,550 --> 00:43:06,930 בין אם זה על כל שימוש זו כבר שאלה אחרת, אבל זה עדיין יעבוד. 596 00:43:06,930 --> 00:43:12,850 משתנים שונים בפגזי בורן. עוד נגיע לכך בהמשך. 597 00:43:12,850 --> 00:43:18,240 דולר סימן ניתן נמלט בדיוק כמו סימן הקריאה וכוכבי. 598 00:43:18,240 --> 00:43:21,760 דולר סימן ניתן נמלט עם קו נטוי או מרכאות בודדות. 599 00:43:21,760 --> 00:43:24,790 יש מרכאות כפולות אפקט המוזר בכל הפגזים 600 00:43:24,790 --> 00:43:28,690 לאלץ את ההערכה של דולר לחתום ביטוי משתנה. 601 00:43:28,690 --> 00:43:31,960 אז אם זה להיות נמלט לכיוון אחד, במרכאות כפולות יכולות להיות ההשפעה 602 00:43:31,960 --> 00:43:34,380 של גורם לו להיות מוערכים בכל מקרה. 603 00:43:34,380 --> 00:43:37,090 זה קצת מבלבל. 604 00:43:37,090 --> 00:43:43,740 אם יש מספר רמות של בריחה, כגון גרשיים בודדים בתוך מרכאות כפולות 605 00:43:43,740 --> 00:43:46,770 או במרכאות כפולות בתוך גרשיים בודדים, אתה צריך לבדוק כדי לראות מה יקרה 606 00:43:46,770 --> 00:43:49,520 למשתנה אם אתה משתמש באחד. 607 00:43:49,520 --> 00:43:53,410 אלה 2 מצבים - בתוך כפול של בתוך אחד, אחד של דו - 608 00:43:53,410 --> 00:43:55,980 לא נותן לך בהכרח את אותה התוצאה. 609 00:44:02,520 --> 00:44:05,600 משתני סביבה, משתני C-shell כבולות. 610 00:44:05,600 --> 00:44:08,340 משתני סביבה הם גם משתנים בC-shell, 611 00:44:08,340 --> 00:44:11,250 והם גם משתנים בפגזים אחרים. 612 00:44:11,250 --> 00:44:15,230 בC-shell, הם קבוצות שונות. 613 00:44:15,230 --> 00:44:18,130 הדברים שאמרתי לפני כ משתני פגז. 614 00:44:18,130 --> 00:44:21,300 משתני סביבה הם קבוצה מובהקת של משתנים 615 00:44:21,300 --> 00:44:28,650 למעט מספר משתנה שאנו מכנים משתנים קשורים, 616 00:44:28,650 --> 00:44:30,640 שהם מאוד חשובים ואנחנו נגיע אליהם מאוחר יותר. 617 00:44:30,640 --> 00:44:34,950 משתני סביבה הם עברו באופן אוטומטי על 618 00:44:34,950 --> 00:44:41,800 לפגזים או פקודות שמנוהלות מהפגז שלך. 619 00:44:41,800 --> 00:44:46,220 הדברים האחרים לא. משתני המעטפת, הכינויים לא. משתני סביבה הם. 620 00:44:46,220 --> 00:44:48,630 זו הסיבה שאנו קוראים להם משתני סביבה, 621 00:44:48,630 --> 00:44:55,030 הרעיון הוא שהסביבה משתרעת על פני פשוט הפגז הנוכחי שלך. 622 00:44:55,030 --> 00:45:00,510 הם יכולים לשמש כדי להגדיר דברים לפקודות. 623 00:45:00,510 --> 00:45:05,470 הנה דוגמא. מדפסת, LPDEST. 624 00:45:05,470 --> 00:45:12,270 שני משתנים אלו יכולים להגדיר מדפסת שפקודה תהיה להשתמש בו כדי להדפיס דברים. 625 00:45:12,270 --> 00:45:16,500 אם יש לך מדפסות מרובות מסביב, אולי כדאי לך לשים את אחד שאתה אוהב. 626 00:45:16,500 --> 00:45:21,320 הסיבה שיש לנו 2 משתנה היא שקבוצות שונות של פקודות שנכתבו 627 00:45:21,320 --> 00:45:23,870 שימוש במשתנים שונים. 628 00:45:23,870 --> 00:45:25,910 אתה יכול לתת להם ערכים שונים. 629 00:45:25,910 --> 00:45:28,860 סביר להניח שאתה תיתן להם גם את אותו ערך. 630 00:45:28,860 --> 00:45:35,840 הדברים האלה עובדים, כי הפקודות שעושות הדפסה 631 00:45:35,840 --> 00:45:40,740 תוכנתו לבחון את הערכים של המשתנים הללו. 632 00:45:42,200 --> 00:45:46,150 אם תכנית לא נכתבה ככה, אם זה נכתב כדי לעשות משהו אחר, 633 00:45:46,150 --> 00:45:48,280 משתנה לא יהיה רלוונטי. 634 00:45:48,280 --> 00:45:52,530 אז מערכת ההפעלה היא לא מחפשת משתנה אלה 635 00:45:52,530 --> 00:45:55,210 כל פעם שאתה מתייחס למדפסת. 636 00:45:55,210 --> 00:45:59,090 הפקודה שעושה הדפסה מחפשת משתנים אלה אם הוא מתוכנת ככה. 637 00:46:11,030 --> 00:46:15,240 משתנה אלו לעתים קרובות מוגדרים בקבצי האתחול שלך 638 00:46:15,240 --> 00:46:19,440 אבל לא בהכרח. 639 00:46:19,440 --> 00:46:21,050 אתה יכול להגדיר אותם בשורת הפקודה. 640 00:46:21,050 --> 00:46:24,090 הם עשויים להיות מוגדרים בפקודה. 641 00:46:24,090 --> 00:46:28,740 הפקודה שמפעילה משהו שאולי יש מבחר של משתנים משלו - 642 00:46:28,740 --> 00:46:32,390 משתנים שהנם ייחודיים לחבילת תוכנה מסוימת, למשל. 643 00:46:32,390 --> 00:46:36,740 הם יוגדרו כשאתה מפעיל את החבילה. 644 00:46:39,690 --> 00:46:42,680 כיצד משתנה אלה מועברים למשנה פגז? 645 00:46:42,680 --> 00:46:48,210 כאשר תת קליפה כתובה, זה לא לכתוב לאזור זה. 646 00:46:48,210 --> 00:46:53,260 האזור של תת הקליפה שמוקדשת למשתני סביבה 647 00:46:53,260 --> 00:46:56,450 הוא לא נכתב על ידי משנה הפגז; זה שנכתב על ידי העתקה. 648 00:46:56,450 --> 00:47:00,530 כאשר אתה מפעיל את הפקודה רגילה, כגון פקודות הבאות כדי להדפיס או כל דבר אחר, 649 00:47:00,530 --> 00:47:03,840 הם מתחילים על ידי יצירת מעטפת חדשה. 650 00:47:03,840 --> 00:47:06,190 הקליפה יוצרת מעטפת ולאחר מכן מחליפה חלק ממנה 651 00:47:06,190 --> 00:47:08,800 עם הפקודה שאתה מפעיל, וזה קצת מבלבל, 652 00:47:08,800 --> 00:47:10,740 אבל ככה פקודות אלה לקבל את משתני הסביבה 653 00:47:10,740 --> 00:47:14,890 כי אז הם מתייחסים להמשך. 654 00:47:21,920 --> 00:47:28,010 הפיקוד כאן להגדרת setenv משתנה. 655 00:47:28,010 --> 00:47:36,470 זה איך אתה מגדיר את זה. זה 3 אלמנטים: setenv, משתנה, ערך. 656 00:47:36,470 --> 00:47:44,710 אם אתה פשוט setenv ללא ויכוחים, מה אתה מקבל? 657 00:47:47,220 --> 00:47:48,810 רשימה של כל המשתנים הללו. 658 00:47:48,810 --> 00:47:53,190 שוב, זה רשימה ארוכה נחמדה ובמקרה הזה, כמו באחרים, 659 00:47:53,190 --> 00:47:57,320 המשתנים הללו מוגדרים בעיקר על ידי פעולת ההתחברות שלי על ידי הפגז עצמו 660 00:47:57,320 --> 00:47:59,740 ולא על ידי שום דבר שעשיתי. 661 00:47:59,740 --> 00:48:03,580 יש פקודה אחרת כאן, printenv. 662 00:48:07,520 --> 00:48:10,340 שגם מדפיס את הסביבה. 663 00:48:10,340 --> 00:48:15,240 שים לב דבר אחרון שזה כאן, = עורך vi. 664 00:48:15,240 --> 00:48:21,120 זה אומר שאם אני משתמש במשהו שקורא עורך 665 00:48:21,120 --> 00:48:25,530 ואני לא מציין עורך וזה מאפשר לי בחירה, זה יכול לתת לי את vi. 666 00:48:25,530 --> 00:48:37,280 מה אם אני עושה עורך printenv? זה אומר לי מה זה. 667 00:48:37,280 --> 00:48:41,340 ממש לפני שהיה משתנה, פחות. 668 00:48:41,340 --> 00:48:46,040 אלו הן אפשרויות ברירת המחדל שלך כשאני מפעיל את הפקודה פחות, 669 00:48:46,040 --> 00:48:49,360 אשר מציג קבצים. 670 00:48:49,360 --> 00:48:55,910 אז אם אני עושה את זה, printenv יכול לקחת את הטיעון 1 או 0 ויכוחים, 671 00:48:55,910 --> 00:48:58,070 לא יותר מ 1. 672 00:49:01,800 --> 00:49:05,690 ישנן פקודות אחרות גם, אבל אנחנו לא הולכים להיכנס לכל זה היום. 673 00:49:05,690 --> 00:49:11,010 זוכר שהיו מכפילי עבור משתני המעטפת כמו: שעות, 674 00:49:11,010 --> 00:49:14,350 שירד לאלמנט האחרון של נתיב, 675 00:49:14,350 --> 00:49:17,950 או: r, שירד להארכה. 676 00:49:17,950 --> 00:49:23,110 מי עכשיו חלים על משתני הסביבה מדי. הם לא רגילים אליו. 677 00:49:23,110 --> 00:49:24,960 זה היה אמור להיות שהם לא יכלו להיות שונה. עכשיו הם יכולים להיות. 678 00:49:24,960 --> 00:49:29,190 זה אחד מההתקדמות עם ההתפתחויות של הפגזים לאורך השנים. 679 00:49:29,190 --> 00:49:35,620 שאמרתי שהפגזים כחלק מהסביבות 680 00:49:35,620 --> 00:49:43,040 ומשתני פגז בC-shell הם, עם כמה יוצאים מן הכלל, קבוצות שונות. 681 00:49:43,040 --> 00:49:46,790 אתה יכול להקים משתנה סביבה ומשתנה קליפה עם אותו שם. 682 00:49:46,790 --> 00:49:49,220 הם יהיו משתנים שונים: הם יכולים לקבל ערכים שונים. 683 00:49:49,220 --> 00:49:53,090 שינוי ערכו של אחד לא ישנה את ערכו של האחר. 684 00:49:53,090 --> 00:49:58,070 כל המשתנים הללו מוערכים עם סימן הדולר - $, מה ש$. 685 00:49:58,070 --> 00:50:02,340 אז מה אם יש לך את זה? האם אתה יודע איזה מהם אתה מקבל? 686 00:50:02,340 --> 00:50:04,520 בבדיקות שלי יש לי את משתנה הקליפה, 687 00:50:04,520 --> 00:50:07,240 אבל זה לא מתועד ואתה לא יכול לסמוך על זה. 688 00:50:07,240 --> 00:50:10,270 אז אני שואל אותך, הוא יצירת משתני פגז והסביבה 689 00:50:10,270 --> 00:50:13,490 עם אותם שמות רעיון טוב? מס 'אוקיי. 690 00:50:13,490 --> 00:50:17,460 מה הם חריגים העיקריים אלה שבם משתני הסביבה ופצצות 691 00:50:17,460 --> 00:50:19,860 צמודים זה לזה? 692 00:50:19,860 --> 00:50:27,470 ישנם 4 אלה. 693 00:50:32,030 --> 00:50:35,510 משתנה סביבת TERM מכתב הון, 694 00:50:35,510 --> 00:50:41,540 לשלם לטווח משתנה באותיות קטנות, סוג של הדמיית מסוף. 695 00:50:41,540 --> 00:50:47,430 אני פשוט הולך לעבור על כאן ואני הולך לעשות הד, הפקודה שימושית כאן, 696 00:50:47,430 --> 00:50:52,560 $ לטווח ארוך $. ושם. 697 00:50:52,560 --> 00:51:00,570 xterm הוא סוג מסוף לחלונות המוצגים במערכת X Window. 698 00:51:00,570 --> 00:51:04,330 xterm צבע הוא וריאציה של אותה המאפשרת צבעים שונים. 699 00:51:04,330 --> 00:51:06,580 למה אנחנו מגדירים את אלה? מה זה טוב? 700 00:51:06,580 --> 00:51:09,740 פקודות לארגן מחדש את המסך כמו העורך 701 00:51:09,740 --> 00:51:13,680 לשלוח רצפים מסוימים, הנקראים רצפי בריחה, 702 00:51:13,680 --> 00:51:18,160 למסוף או לחלון כדי לארגן מחדש אותו וכן הלאה. 703 00:51:18,160 --> 00:51:20,990 רצפים אלה הם שונים עבור סוגים שונים של מסופים. 704 00:51:20,990 --> 00:51:23,100 זה אומר לו אילו לשימוש. 705 00:51:23,100 --> 00:51:25,900 לפעמים יש בעיות שם. 706 00:51:25,900 --> 00:51:28,600 ייתכן שתרצה לשנות את זה. 707 00:51:28,600 --> 00:51:30,780 אם דברים לא עובדים, לפעמים סוג החיבור מוגדר לא נכון, 708 00:51:30,780 --> 00:51:36,440 ייתכן שתוכל לתקן את זה על ידי הגדרה מחדש של משתנה הטווח. 709 00:51:36,440 --> 00:51:43,420 במקרים אלה, שינוי משתנה אחד, משתנה הסביבה או משתנה הקליפה, 710 00:51:43,420 --> 00:51:45,970 צריך לשנות את האחר. 711 00:51:45,970 --> 00:51:50,970 אני כבר גיליתי דרך חוויה ששינוי ארוך באותיות גדולות 712 00:51:50,970 --> 00:51:54,060 לא תמיד לשנות את הטווח משתנה פגז באותיות קטנות. 713 00:51:54,060 --> 00:51:55,550 מדובר בבאג. 714 00:51:55,550 --> 00:51:59,400 אני לא יודע אם זה תמיד נכון. רוב הזמן זה לא נכון, אבל זה יכול להיות. 715 00:51:59,400 --> 00:52:02,490 אז אם אתה מבצע שינוי, רק לבדוק את זה. 716 00:52:02,490 --> 00:52:05,830 זה לא לעתים קרובות שאתה צריך לשנות את הערך הזה, אבל פעם בכמה זמן שאתה עושה. 717 00:52:05,830 --> 00:52:08,260 משתמש משתנה סביבה. 718 00:52:08,260 --> 00:52:12,070 שוב, משתנה סביבה באותיות גדולות, לשלם משתנים באותיות קטנות. 719 00:52:12,070 --> 00:52:13,710 זה הוא שם המשתמש שלך. 720 00:52:13,710 --> 00:52:16,730 זה רק בנסיבות חריגות ביותר 721 00:52:16,730 --> 00:52:18,420 שהיית רוצה לשנות את זה. 722 00:52:18,420 --> 00:52:22,350 אם שם המשתמש שלך הוא מישהו אחר, זה יכול לזרוק כל מיני דברים משם. 723 00:52:22,350 --> 00:52:26,040 ספריית בית, ספריית הבית של המשתמש. 724 00:52:26,040 --> 00:52:28,060 שוב, לא היית רוצה לשנות את זה. 725 00:52:28,060 --> 00:52:32,260 שים לב בכל המקרים הללו ואת זה אנחנו עומדים לכסות, משתנים הנתיב, 726 00:52:32,260 --> 00:52:37,070 משתנה סביבה הוא באותיות גדולות ומשתנה הפגז הכבול הוא באותיות קטנות. 727 00:52:37,070 --> 00:52:39,240 אם תשנה אחד, אתה צריך לשנות את זה. 728 00:52:39,240 --> 00:52:45,960 סוג זה של כריכה לא ניתן לקבוע כמו שאתה לא יכול לקשור 2 משתנים, 729 00:52:45,960 --> 00:52:50,570 מלבד אלה 4, ומחייבים במשתנים אלה לא ניתן לבטל, 730 00:52:50,570 --> 00:52:52,090 אתה לא יכול להפריד ביניהם. 731 00:52:52,090 --> 00:52:55,820 אז 4 זוגות של משתנים אלה מאוגדים. 732 00:52:55,820 --> 00:52:59,020 הם תמיד יהיו. אחרים אף אחד לא יהיו. 733 00:52:59,020 --> 00:53:05,720 בנוסף לכך, ניתן יהיה ליצור משתנה עם השמות זהים 734 00:53:05,720 --> 00:53:07,780 מהסוגים הפוכים. 735 00:53:07,780 --> 00:53:11,600 אתה יכול לעשות טווח משתנה פגז באותיות קטנות 736 00:53:11,600 --> 00:53:14,990 או סביבת TERM משתנה באותיות גדולות. 737 00:53:14,990 --> 00:53:19,040 משתנה אלו יהיו בלתי תלויים במשתנים אלה לזווג 738 00:53:19,040 --> 00:53:20,780 והם יהיו תלויים זה בזה. 739 00:53:20,780 --> 00:53:23,780 אני לא יכול לדמיין למה אתה הייתי עושה את זה אלא אם כן אתה רוצה לבלבל אנשים. 740 00:53:24,600 --> 00:53:29,730 זה כאן, משתנה נתיב, זה אחד לא באמת חשוב. 741 00:53:29,730 --> 00:53:35,550 דבר נוסף הוא שלא יכול להיות מקרים 742 00:53:35,550 --> 00:53:40,430 משתנה בעלי שמות מותאמים דומים שאינם קשורים זה לזה. 743 00:53:40,430 --> 00:53:45,000 לא יכול להיות משתנה, SHELL ופגז, באותיות גדולות והקטנות. 744 00:53:45,000 --> 00:53:48,300 בהתבסס על השם הזה, אתה לא יודע אם משתנה שהוא משתנה פגז 745 00:53:48,300 --> 00:53:51,580 או משתנה סביבה, והם אינם מחויבים זה לזה. 746 00:53:51,580 --> 00:53:55,300 אז זה סוג של שמות לזווג אינו מעיד על משתנים מאוגדים. 747 00:53:55,300 --> 00:53:58,830 משתנה הנתיב, שהייתי מראה לפני, 748 00:53:58,830 --> 00:54:01,880 רשימה של נתיבים שבו הקליפה נראית לפקודות. 749 00:54:01,880 --> 00:54:12,320 בואו נגמור לחלון זה כאן ואנחנו נעשה את $ PATH הד, אותיות - 750 00:54:12,320 --> 00:54:20,230 משתנה סביבה - הד נתיב $, אותיות קטנות - לשלם משתנים. 751 00:54:20,230 --> 00:54:24,980 שים לב שהרשימה של ספריות היא זהה. אלה מאוגדים. 752 00:54:24,980 --> 00:54:26,590 שינוי אחד, אתה משנה את זה. 753 00:54:26,590 --> 00:54:32,970 במשתנה סביבת האלמנטים מופרדים על ידי נקודתיים. שים לב ש. 754 00:54:32,970 --> 00:54:35,130 משתני המעטפת מופרדים על ידי רווחים. 755 00:54:35,130 --> 00:54:38,760 משתנה סביבה זה הוא מחרוזת אחת. 756 00:54:38,760 --> 00:54:41,480 משתנה הקליפה הוא מערך. 757 00:54:41,480 --> 00:54:43,490 בורן הפגז לא היה מערכים. 758 00:54:43,490 --> 00:54:46,600 Bash עושה, אבל זה כבר חלק קבוע של הפגז. 759 00:54:46,600 --> 00:54:48,660 זה הוא מחרוזת אחת ולא מערך. 760 00:54:48,660 --> 00:54:50,420 C-shell תמיד היה לי מערכים. 761 00:54:50,420 --> 00:54:52,630 המערכים הם הרבה יותר קל לעבוד איתו. 762 00:54:52,630 --> 00:54:54,400 אתה יכול להתייחס לחלקים ממנו. 763 00:54:54,400 --> 00:55:02,350 נתיב $ אז הד [1] ואני מקבל / usr / bin, הרכיב הראשון. 764 00:55:02,350 --> 00:55:09,950 סימן שוב, זכור דולר מייצג את האלמנט האחרון של רשימת ההיסטוריה. 765 00:55:09,950 --> 00:55:16,850 מה קורה שם? זה ניסה למצוא את סימן דולר כסמל משתנה. 766 00:55:16,850 --> 00:55:20,850 אני לברוח ממנה. אופס. זה לא ייקח גם את זה. 767 00:55:20,850 --> 00:55:23,690 חלק מהדברים האלה לא עובדים כל כך טובים. 768 00:55:23,690 --> 00:55:28,140 אולי אנחנו פשוט נעזוב את זה. 769 00:55:28,140 --> 00:55:36,980 כוכבית מתייחסת לכל העניין, אבל זה מה שאתה מקבל אם אתה לא תציין אלמנט. 770 00:55:36,980 --> 00:55:46,170 דרך נוספת שניתן להשפיע משתני מערך, 771 00:55:46,170 --> 00:55:49,500 מספר האלמנטים שם, 7 אלמנטים. 772 00:55:49,500 --> 00:55:53,410 כאן אנחנו שמים את הסולמית לפני השם המשתנה. 773 00:55:53,410 --> 00:55:58,280 הנה עוד אחד. לשים סימן שאלה שם. 774 00:55:58,280 --> 00:56:03,170 זה הוא ערך לוגי. זה מצביע על כך שמשתנה קיים. 775 00:56:03,170 --> 00:56:05,160 זה בדרך אחרת של עבודה עם משתנים. 776 00:56:05,160 --> 00:56:06,660 זה, דרך אגב, לא חייב להיות משתנה מערך. 777 00:56:06,660 --> 00:56:08,210 זה יכול להיות כל משתנה. 778 00:56:08,210 --> 00:56:11,840 ואם אני עושה, אין משתנה כזה ואני מקבל 0. 779 00:56:11,840 --> 00:56:14,990 עוד דבר קטן שיש על הערכות משתנים. 780 00:56:23,670 --> 00:56:32,950 חזור לזה כאן, אם מסיבה כלשהי אתה רוצה לעבוד עם זה 781 00:56:32,950 --> 00:56:37,990 במקום לעבוד עם המערך, משתנה הקליפה, 782 00:56:37,990 --> 00:56:41,470 יש פקודות שיכולות להפריד בין דברים אלה מבוססים על המעי הגס. 783 00:56:41,470 --> 00:56:44,080 למעשה, אם אתה הולך לעשות את זה במעטפת Bash אולי, 784 00:56:44,080 --> 00:56:47,110 איזה סוג של תסריט, זה יהיה כנראה איך היית עושה את זה. 785 00:56:47,110 --> 00:56:50,350 אבל בC-shell זה הרבה יותר קל להשתמש במערך. 786 00:56:50,350 --> 00:56:58,250 בקליפת בורן, משתנים מוקצים על ידי ביטוי יחיד כמו זה, 787 00:56:58,250 --> 00:57:01,760 כמו הדרך שאתה יכול להקצות משתנה בשפת תכנות, 788 00:57:01,760 --> 00:57:05,110 וכאן חייב להיות ללא רווחים. 789 00:57:05,110 --> 00:57:09,110 זה הכרחי שזה יהיה רק ​​1 מחרוזת. 790 00:57:09,110 --> 00:57:14,980 בפגזים מסוג בורן, כל המשתנים הם משתני פגז. 791 00:57:14,980 --> 00:57:19,250 משתני סביבה הם תת קבוצה של משתני הפגז. 792 00:57:19,250 --> 00:57:24,060 הם נבדלים מהמשתנים שאינם הסביבה על ידי יצוא. 793 00:57:24,060 --> 00:57:28,860 הפקודה כדי לעשות את זה היא יצוא, כמו מדפסת יצוא. 794 00:57:28,860 --> 00:57:34,930 אם היינו מגדיר משתנה כגון, 795 00:57:34,930 --> 00:57:38,480 אם אנחנו רוצים פקודת הדפסה כדי למצוא אותו, זה היה צריך להיות משתנה סביבה, 796 00:57:38,480 --> 00:57:40,730 וככה אנחנו עושים את זה אחד. 797 00:57:40,730 --> 00:57:42,090 כאן יש משהו סוג של מבלבל. 798 00:57:42,090 --> 00:57:50,430 ביטוי זה, יצוא לסביבה, נובע מתפיסת מעטפת זו בורן, 799 00:57:50,430 --> 00:57:54,520 ובכל זאת ביטוי המשמש בתיאורים של C-shell, 800 00:57:54,520 --> 00:57:57,920 שבו אין הפקודה כמו יצוא. 801 00:57:57,920 --> 00:58:06,200 אם אתה פשוט אומר ליצוא על ידי עצמו, אתה מקבל רשימה של יצוא - 802 00:58:06,200 --> 00:58:10,620 אז אם אני פשוט לייצא לכאן, אין דבר כזה. 803 00:58:13,620 --> 00:58:15,200 אוקיי, יש לנו ללכת. 804 00:58:15,200 --> 00:58:17,010 דברים אלה, אגב, גם הגדרתו של הפגז. 805 00:58:17,010 --> 00:58:19,400 אני לא מגדיר את כל אלה בעצמי. 806 00:58:19,400 --> 00:58:23,550 הפגז עושה כל מיני דברים בכוחות עצמו. 807 00:58:23,550 --> 00:58:26,650 זה צריך לעשות דברים באופן אוטומטי. 808 00:58:30,240 --> 00:58:36,880 במעטפת Bash או קורן, אתה יכול להפעיל פקודה כזה, 809 00:58:36,880 --> 00:58:42,000 אשר שניהם ייתנו למשתנה ערך ולייצא אותו בפקודה 1. 810 00:58:42,000 --> 00:58:46,150 בקליפת בורן הם צריכים להיות פקודות נפרדות כמו יצוא. 811 00:58:46,150 --> 00:58:48,410 הנה עוד היבט זה מבלבל. 812 00:58:48,410 --> 00:58:52,220 פקודת הסט בC-shell מגדירה משתנים 813 00:58:52,220 --> 00:58:55,550 ובלי שום טענות אומרת לך מה הם הערכים של המשתנים. 814 00:58:55,550 --> 00:59:01,140 במעטפת Bash, פקודת הסט ללא טיעונים עושה את אותו דבר, 815 00:59:01,140 --> 00:59:03,580 אבל עם טיעונים שהיא עושה משהו שונה לגמרי. 816 00:59:03,580 --> 00:59:06,200 אז אלו הם הטיעונים השונים כאן. 817 00:59:06,200 --> 00:59:10,460 חלקם של אלה משתני סביבה, חלקם משתני פגז. 818 00:59:10,460 --> 00:59:13,200 כולם משתנים פגז באמת. חלק מאלה הם משתני סביבה. 819 00:59:15,690 --> 00:59:23,920 פקודת הסט עם טיעונים יכול לשמש להפעלה 820 00:59:23,920 --> 00:59:28,220 על הפרמטרים positional לתסריט, 821 00:59:28,220 --> 00:59:33,910 שהיא דרך של מקבל את כולם בבת אחת. 822 00:59:33,910 --> 00:59:36,150 אנחנו לא יכולים באמת להיכנס לזה היום. 823 00:59:36,150 --> 00:59:39,580 זה גם יכול לשמש כדי לשנות את מעטפת התנהגות. 824 00:59:39,580 --> 00:59:46,700 במיוחד בBash ישנם משתנה שיקבעו כיצד הפגז מתנהג. 825 00:59:46,700 --> 00:59:51,310 ואז גם רק בפקודה זו אחת שאתה יכול לראות, בפקודה זו. 826 00:59:51,310 --> 00:59:59,050 הוכן לדפוס ואחריו משתנה וסוגים משתנים משמש בפגזים קורן וש. 827 00:59:59,050 --> 01:00:04,970 זה לא חובה אבל זה יכול לשמש כדי להגביל את הערכים של משתנים, 828 01:00:04,970 --> 01:00:08,400 מה שיכול להיות שימושי כדי למנוע טעויות, וזה די נפוץ. 829 01:00:08,400 --> 01:00:11,640 אז רק אני מציין כי במקרה שאתה רואה אותו במקום. 830 01:00:17,290 --> 01:00:19,160 הפקודה שבו. 831 01:00:19,160 --> 01:00:22,490 זכור שציינתי קודם לכן שבו הפקודה בC-shell, 832 01:00:22,490 --> 01:00:28,750 שיכול להגיד לך את מיקומו של נתיב הפקודה. 833 01:00:28,750 --> 01:00:32,580 הנה החלפת פיקוד. 834 01:00:32,580 --> 01:00:41,900 אתה צריך למצוא במקלדת איפשהו דמות שנראית כך. 835 01:00:41,900 --> 01:00:44,910 המיקום במקלדת הולך להשתנות. 836 01:00:44,910 --> 01:00:47,050 אנחנו כבר נקראו backquote זה. זה בערך בגודל של הצעת מחיר. 837 01:00:47,050 --> 01:00:48,720 זה הולך משמאל למעלה לימין למטה. 838 01:00:48,720 --> 01:00:52,690 כאן במקלדת-Mac שלי זה בפינה השמאלית העליונה. 839 01:00:52,690 --> 01:00:58,150 דמות שיכולה לשמש לביצוע הפקודה בתוך הפקודה. 840 01:00:58,150 --> 01:01:03,400 אם יש לך ביטוי בתוך backquotes, 841 01:01:03,400 --> 01:01:07,080 הביטוי שהוא פקודה, זה לרוץ. 842 01:01:07,080 --> 01:01:09,010 הפלט של הפקודה ש 843 01:01:09,010 --> 01:01:11,980 לאחר מכן החליף את כל ביטוי backquote 844 01:01:11,980 --> 01:01:16,110 בתוך הפקודה כבר שאז רצה עם פלט ש 845 01:01:16,110 --> 01:01:22,010 כחלק מהמחרוזת שלה טיעונים וכן הלאה. 846 01:01:22,010 --> 01:01:28,640 הנה פקודה שמשתמשת בזה. 847 01:01:28,640 --> 01:01:32,340 בואו להפגין את הפעולה כאן. 848 01:01:44,980 --> 01:01:49,090 בואו נלך לכאן, להוציא את backquotes. 849 01:01:49,090 --> 01:01:54,410 הבקרה מקבל אותי לתחילת השורה עם תחביר עריכת Emacs. 850 01:01:54,410 --> 01:02:00,380 עד כה הנתיבים הוא מה שעושה בו, 851 01:02:00,380 --> 01:02:05,040 אבל כשאני עושה את זה ככה, אז זה מתחבר ברשימה זו של נתיבים 852 01:02:05,040 --> 01:02:08,750 במקומו של ביטוי זה כל backquote וריצות ls-l עליהם. 853 01:02:08,750 --> 01:02:11,120 סוג של נוח, הא? 854 01:02:11,120 --> 01:02:14,860 אז זה דבר אחד מסודר. ככה backquotes לעבוד. 855 01:02:14,860 --> 01:02:17,560 עכשיו בואו נרד עוד קצת. 856 01:02:17,560 --> 01:02:22,050 אלה הם כינויים. אני דווקא להשתמש אלה. 857 01:02:22,050 --> 01:02:26,410 אני אנסה להיכנס לזה עם פעולת עריכה 1. 858 01:02:34,900 --> 01:02:36,900 אוקיי. 859 01:02:36,900 --> 01:02:39,630 עכשיו בואו לראות איך הגדרות אלה יצאו. 860 01:02:39,630 --> 01:02:44,930 כינוי LWH אומר לי איך זה מוגדר. 861 01:02:44,930 --> 01:02:51,210 שים לב שזה רק זה, אבל הציטוטים החיצוניים כבר המריאו 862 01:02:51,210 --> 01:02:53,750 וסימן הקריאה היא המריאה. 863 01:02:53,750 --> 01:02:58,940 ! *, רשימה של כל הטיעונים שלמות. 864 01:02:58,940 --> 01:03:03,580 בהגדרת כינויו יחול חזרה למקום שאשתמש בזה. 865 01:03:03,580 --> 01:03:10,620 bash ksh LWH. אוקיי. 866 01:03:10,620 --> 01:03:13,960 ראה איך זה עובד? זה חוסך לי קצת הקלדה. 867 01:03:13,960 --> 01:03:16,440 בואו נלך עד קצת רק כדי להזכיר משהו אחר כאן. 868 01:03:19,150 --> 01:03:23,120 שים לב כאן פגזים שונים אלה. הייתי צריך להזכיר את זה קודם. 869 01:03:23,120 --> 01:03:36,060 יש csh 2 לכאן וכך גם / bin / tcsh. 870 01:03:36,060 --> 01:03:39,870 אנחנו יכולים לקבוע באמצעים אחרים כי אלה הם למעשה אותו הקובץ. 871 01:03:39,870 --> 01:03:43,150 זכור שאמרתי אם תקליד sh אתה מקבל bash. 872 01:03:43,150 --> 01:03:47,390 סוג זה ואתה מקבל את זה. 873 01:03:47,390 --> 01:03:51,730 אבל אלה אינם צמודים. אלה שיש לי בודדים אלה לשם. 874 01:03:51,730 --> 01:03:54,910 וזה לא סוג של קובץ שאפשר לקרוא לעוד אחד. 875 01:03:54,910 --> 01:03:59,460 אז אלה הם קבצים נפרדים; אלה C-shell הם אותו הקובץ. 876 01:03:59,460 --> 01:04:03,640 חזור לכאן, השני כאן, כינוי זה, 877 01:04:03,640 --> 01:04:09,090 שים לב שהרצת הפקודה, בקובץ זה. 878 01:04:09,090 --> 01:04:13,810 הכינוי שפועל כך. קובץ אומר לך את הסוג של קובץ. 879 01:04:13,810 --> 01:04:20,330 bash ksh אז fwh. אוקיי. 880 01:04:20,330 --> 01:04:23,230 זה הפלט של פקודת הקובץ. 881 01:04:23,230 --> 01:04:24,630 אני לא יודע אם אתה יודע מה זה אומר כאן, 882 01:04:24,630 --> 01:04:26,750 בינארי האוניברסלי מאך-O עם 2 ארכיטקטורות. 883 01:04:26,750 --> 01:04:30,470 ישנם 2 סוגי מעבד אפשריים ב-Mac, 884 01:04:30,470 --> 01:04:34,780 וכמה תוכניות נכתבו כדי להיות מסוגל לרוץ עם שניהם, 885 01:04:34,780 --> 01:04:37,950 ואת פקודת הקובץ יכולה לקבוע את זה, אז זה מה שזה אומר. 886 01:04:37,950 --> 01:04:40,660 שני הקבצים האלה נכתבו ככה. 887 01:04:40,660 --> 01:04:43,760 אז אנו רואים כיצד הכינוי עובד, אנו רואים כיצד backquote עובד, 888 01:04:43,760 --> 01:04:48,640 אנו רואים כיצד ls הקובץ עצמו או קובץ עובד. 889 01:04:52,050 --> 01:04:57,000 זה לא יכול לעבוד. נסה "איפה איפה" ו "LWH בה". אוקיי, בואו ננסה את זה. 890 01:04:57,000 --> 01:05:01,040 שבו שבו. 891 01:05:01,040 --> 01:05:03,500 שבו הוא פגז מובנה. 892 01:05:03,500 --> 01:05:06,970 זכור קודם לכן הראינו כי בש לא היה שם. 893 01:05:06,970 --> 01:05:10,080 אם תקליד בו במעטפת Bash, אתה מקבל הודעת שגיאה. 894 01:05:10,080 --> 01:05:12,540 זה פשוט חלק מהקליפה במקום להיות פיקוד נפרד. 895 01:05:12,540 --> 01:05:20,000 מה קורה אם אני LWH סוג מחפש שם? לראות מה קורה שם. 896 01:05:20,000 --> 01:05:22,850 רן שבו שבו, קיבל פלט זה, ולאחר מכן ניסה לדרוס ls 897 01:05:22,850 --> 01:05:25,600 כליטר על איפה הוא פגז מובנה. 898 01:05:25,600 --> 01:05:28,790 שבו הוא שם, אבל האחרים לא קיימים. 899 01:05:28,790 --> 01:05:32,090 אף אחד מאלה קיימים, למעשה. 900 01:05:32,090 --> 01:05:35,560 אז זה לא תמיד עובד, וזה גם ממחיש עד כמה דברים 901 01:05:35,560 --> 01:05:39,580 לא עושה בדיוק מה שאתה עלול לחשוב. 902 01:05:40,930 --> 01:05:43,010 בואו נרד עוד קצת כאן. 903 01:05:44,890 --> 01:05:54,760 זה כאן הוא בש. זו גם החלפת פיקוד כמו backquote. 904 01:05:54,760 --> 01:06:05,280 אבל שלא כמו backquote, היא משתמשת בסגנון משתנה זה. 905 01:06:05,280 --> 01:06:09,860 ישנם מספר של ביטויים המתחילים בסימן דולר, 906 01:06:09,860 --> 01:06:16,070 ובעוד אלה הם לא משתנים, הם לווה את השימוש בסימן הדולר 907 01:06:16,070 --> 01:06:19,570 כדי לציין ביטוי מסוג כלשהו. 908 01:06:19,570 --> 01:06:23,550 שיכול להיות מוקף בסוגריים או בסוגריים או בסוגריים כפולים, 909 01:06:23,550 --> 01:06:26,320 שבה יש מטרה שונה. 910 01:06:26,320 --> 01:06:29,500 סוגריים יחיד כאן הם שחילוף הפקודה בדיוק כמו backquotes. 911 01:06:29,500 --> 01:06:32,720 בסוגריים כפולים הוא למעשה חשבון מבצע. 912 01:06:32,720 --> 01:06:35,380 יש תחביר אחר, פעולות אחרות. 913 01:06:35,380 --> 01:06:41,520 תחביר Backquote זמין בש. 914 01:06:41,520 --> 01:06:46,780 עם זאת, אחד זה עדיף. זה הרבה יותר קל לקרוא והיא מאפשרת קינון. 915 01:06:46,780 --> 01:06:51,300 יכול להיות לך בתוך $ (הפקודה) פקודה אחרת, 916 01:06:51,300 --> 01:06:54,590 משהו כמו - 917 01:07:14,560 --> 01:07:18,210 אני מקבל רשימה שם. 918 01:07:18,210 --> 01:07:21,670 זה יעבוד אם יש לי backquote גם. 919 01:07:32,050 --> 01:07:38,470 מה אם אני רוצה לעשות משהו כמו - 920 01:08:03,390 --> 01:08:06,430 אתה כנראה לא ממש להשתמש בפקודה זו, 921 01:08:06,430 --> 01:08:14,160 אבל החלפת פיקוד הפנימית הזה מהדהדת את השמות של כל הקבצים המתחילים ב, 922 01:08:14,160 --> 01:08:18,229 אז זה אחד פועל ls-l על קבצים אלה, 923 01:08:18,229 --> 01:08:20,500 ואז זה רק אחד מהדהד את הפלט. 924 01:08:21,729 --> 01:08:24,479 אתה כנראה לא הייתי עושה את זה, אתה רק תעשה הד או ls, 925 01:08:24,479 --> 01:08:29,450 אבל זה מדגים כיצד הקינון של פקודות עובד. 926 01:08:29,450 --> 01:08:34,380 אז פשוט תכונה נוספת כאן. 927 01:08:34,380 --> 01:08:37,450  הזכרתי את זה קודם לכן, כי כאשר יש לך בו בC-shell, 928 01:08:37,450 --> 01:08:42,770 הקלד עבודות בפגזי בורן מהסוג לאיתור פקודות. 929 01:08:48,939 --> 01:08:52,270 פקודות מובנים, בדיוק מה שאמרתי שם. 930 01:08:52,270 --> 01:08:54,640 פקודות הן חלק מהמעטפת, כמו איפה. 931 01:08:54,640 --> 01:08:59,880 כאשר הפגז מבצע פקודה כמו ls, היא מאתרת אותו דרך הנתיב, 932 01:08:59,880 --> 01:09:03,029 מוצא אותו בכמה ספרייה במקום כלשהו, 933 01:09:03,029 --> 01:09:05,800 קורא שלזיכרון, יוצר מעטפת חדשה, 934 01:09:05,800 --> 01:09:08,960 קורא ls הפקודה או מה שבתוך המעטפת 935 01:09:08,960 --> 01:09:11,450 שבו משתני הסביבה כבר נמצאים, 936 01:09:11,450 --> 01:09:14,000 ואז זה מעביר את ביצוע לזה. 937 01:09:14,000 --> 01:09:18,319 Built-in פקודה, הקוד לפקודה שהוא בתוך הקליפה, 938 01:09:18,319 --> 01:09:21,460 כך הפגז רק מתחיל ביצוע חלק מהקוד משלה. 939 01:09:21,460 --> 01:09:24,569 שבו היא פקודה כזו. זה למעשה מקבל יותר מהר. 940 01:09:24,569 --> 01:09:28,380 זה לא חייב לקרוא משהו בזיכרון, זה כבר בזיכרון. 941 01:09:28,380 --> 01:09:32,460 פקודות מובנים תמיד עדיפות על פני פקודות עם אותו שם. 942 01:09:32,460 --> 01:09:36,050 פקודות שנמצאות בספריות בנתיב עשויות לקבל את אותו שם, 943 01:09:36,050 --> 01:09:39,090 פקודות בספריות שונות, קבצים בספריות שונות. 944 01:09:39,090 --> 01:09:41,740 אחד שמתרחש מוקדם יותר בדרך היא זו שתקבל. 945 01:09:41,740 --> 01:09:43,770 אם יש פקודה מובנית, אתה תמיד מקבל את זה. 946 01:09:43,770 --> 01:09:47,890 אין דרך לתת לו קדימות נמוכות יותר מאשר הפקודה בנתיב. 947 01:09:47,890 --> 01:09:54,140 אם אתה רוצה לקבל את זה בפקודת הנתיב, אתה יכול להקליד את שם הנתיב המלא. 948 01:09:54,140 --> 01:09:55,850 אם היו פקודה שבו בדרך לאנשהו, 949 01:09:55,850 --> 01:09:58,440 אתה יכול להקליד / bin / שבו והיית מקבל את זה. 950 01:09:58,440 --> 01:10:01,800 אם אתה לא רוצה להקליד את כל הנתיב, אתה יכול להגדיר את כינוי. 951 01:10:01,800 --> 01:10:06,310 למעשה, אם אתה נתת את הכינוי בשם זהה לפקודה המובנה, שזה יעבוד 952 01:10:06,310 --> 01:10:08,790 כי הגדרת הכינוי מוערכת 953 01:10:08,790 --> 01:10:13,220 לפני הפגז קובע שזה הפקודה מובנה שאמורה להיות מוצא להורג. 954 01:10:18,810 --> 01:10:23,440 ואז זה נהיה קצת יותר מסובך עם כמה פקודות כאן. 955 01:10:23,440 --> 01:10:29,880 המקרה של חלק מהפקודות הם מובנים בפקודות ובדרך בפועל. 956 01:10:29,880 --> 01:10:34,140 אחד מהם הוא הד, הפקודה הייתי רק לפני זמן קצר בדוגמאות אלה. 957 01:10:34,140 --> 01:10:37,410 אקו הוא פקודה בנתיב ואת זה בכל פגז. 958 01:10:37,410 --> 01:10:40,580 הם לא בהכרח כל מתנהגים באופן זהה. 959 01:10:40,580 --> 01:10:42,970 זה היה במקור הפקודה רק בנתיב. 960 01:10:42,970 --> 01:10:45,280 הוא נבנה בשנת לפגזים מאוחר יותר. 961 01:10:45,280 --> 01:10:48,080 מאחר שקיימות אפשרויות שתלויות בסביבה 962 01:10:48,080 --> 01:10:52,970 ואת אפשרויות שורת הפקודה, פקודות מובנים 963 01:10:52,970 --> 01:10:57,030 נכתבו כדי לפעול בדיוק כמו הפקודה שהייתה בדרך, 964 01:10:57,030 --> 01:10:59,670 זה לא סביר שהם היו נכתבים שדרך 965 01:10:59,670 --> 01:11:01,720 אם הפקודה לא נכתבה כבר על הנתיב. 966 01:11:01,720 --> 01:11:06,180 לכן יש לזה תופעות לוואי. ההיסטוריה שלה יש השפעות כאן. 967 01:11:06,180 --> 01:11:08,380 ישנן אפשרויות שם. 968 01:11:14,280 --> 01:11:23,060 יש גם אפשרות שהוגדרה על ידי משתנה בtcsh נקרא echo_style. 969 01:11:23,060 --> 01:11:27,700 זה אחד מהמשתנים אלה שיכולים לשנות את האופן שבו מהדהד יצירות. 970 01:11:27,700 --> 01:11:30,910 ישנם מקרים אחרים שבו אתה יכול להקצות משתנה 971 01:11:30,910 --> 01:11:36,290 שמשנה את הדרך שהמבצע המעטפת, כולל הפקודה מובנה, עובד. 972 01:11:36,290 --> 01:11:38,130 זה לא משפיע על שום דבר אחר 973 01:11:38,130 --> 01:11:40,640 מכיוון שאין לי פקודות אחרות גישה למשתני המעטפת, 974 01:11:40,640 --> 01:11:42,090 רק משתני הסביבה. 975 01:11:42,090 --> 01:11:45,360 אבל פעולות פגז יכולות לקרוא את משתני הפגז. 976 01:11:45,360 --> 01:11:50,710 זה לא יעבוד עבור csh. זה רק tcsh. זה אחד מהשיפורים. 977 01:11:58,540 --> 01:12:04,620 יש ניתוח רצפים כאשר הוא מעריך metacharacters, 978 01:12:04,620 --> 01:12:08,140 כאשר הוא מעריך את המשתנים, כינויים, אזכור ההיסטוריה. 979 01:12:08,140 --> 01:12:11,830 יש רצף מסוים לדברים האלה. 980 01:12:11,830 --> 01:12:13,730 אם הוא עושה את הדברים ברצף מסוים 981 01:12:13,730 --> 01:12:16,080 ומקבל משהו שהוא ביטוי לסוג 982 01:12:16,080 --> 01:12:20,650 שכבר העריך, זה לא להעריך את זה שוב. 983 01:12:20,650 --> 01:12:24,520 אם הוא מקבל את זה, ואז זה יהיה פשוט לעבור על התווים. 984 01:12:24,520 --> 01:12:29,920 אז אם הערכה של כמה ביטויים כמו החלפת פיקוד 985 01:12:29,920 --> 01:12:36,850 או משתנה או מה שמעורר ביטוי 986 01:12:36,850 --> 01:12:39,240 שבו היית רוצה להיות מוערך, 987 01:12:39,240 --> 01:12:42,510 זה יעבוד רק אם הערכה המתרחשת מאוחר יותר ברצף. 988 01:12:42,510 --> 01:12:45,010 אני מקווה שאני להיות ברור שיש. 989 01:12:45,010 --> 01:12:50,460 כי רצף ניתוח, ניתוח בC-shell, 990 01:12:50,460 --> 01:12:56,490 זה לא אותו הדבר לפקודות מובנים כפי שהוא עבור מים שאינם מובנים בפקודות. 991 01:12:56,490 --> 01:12:58,890 אני לא בטוח לגבי Bash שם. 992 01:12:58,890 --> 01:13:02,450 לדוגמא, אם משתנה פגז מיוצר התייחסות היסטוריה, 993 01:13:02,450 --> 01:13:04,230 זה כנראה לא הייתי הולך אחורה בהיסטוריה. 994 01:13:04,230 --> 01:13:06,010 זה יהיה לקבל את סימן הקריאה פשוט. 995 01:13:06,010 --> 01:13:08,840 למעשה, אנחנו יכולים רק לנסות את זה עכשיו. 996 01:13:09,720 --> 01:13:18,240 להגדיר = ונצטרך לשים את זה שם. 997 01:13:30,690 --> 01:13:34,580 אה, רגע. סליחה. עשיתי את זה בש. אני רוצה לעשות את זה כאן. 998 01:13:53,470 --> 01:13:56,080 ראה, כך שזה לא להעריך כי התייחסות ההיסטוריה 999 01:13:56,080 --> 01:14:00,520 כי זה כבר היה מעבר לנקודה של הערכת ביטויי ההיסטוריה 1000 01:14:00,520 --> 01:14:02,720 כאשר הוא בדק את משתנה. 1001 01:14:02,720 --> 01:14:05,550 אז זה אפקט 1 של ניתוח. 1002 01:14:05,550 --> 01:14:08,760 ושוב, פקודות מובנים לא נעשית באותה הדרך. 1003 01:14:08,760 --> 01:14:11,230 בסדר. בואו נלך לצד אחד כאן. 1004 01:14:11,230 --> 01:14:16,060 זה נועד להיות קו 1, אבל זה מה שהופך אותו קל יותר לקריאה. 1005 01:14:19,130 --> 01:14:21,530 מה זה עושה? 1006 01:14:21,530 --> 01:14:28,640 אולי אתה זוכר שאנחנו יכולים להעריך את הכוכביות כתווים כלליים קובץ, 1007 01:14:28,640 --> 01:14:33,890 ויש בתווים כלליים קובץ אחרים כמו סימן השאלה וביטויי סוגר. 1008 01:14:33,890 --> 01:14:39,000 סוג זה של הערכה נקרא globbing. 1009 01:14:39,000 --> 01:14:46,290 להגדיר noglob בתחילת פקודה זו אומר לא עושה את זה. 1010 01:14:46,290 --> 01:14:53,370 noglob unset אומר לחזור לעשות את זה. 1011 01:14:53,370 --> 01:14:56,440 הערה גוש סט שלא לקבל אותו האפקט. 1012 01:14:56,440 --> 01:15:00,800 בשפה המדוברת, היה נראה גוש להגדיר או noglob unset להיות שווה ערך, 1013 01:15:00,800 --> 01:15:03,290 אבל הנה זה לא. זה noglob unset. 1014 01:15:05,120 --> 01:15:07,910 עכשיו tset. tset עמד לסט מסוף. 1015 01:15:07,910 --> 01:15:11,840 זה לא רגיל כי לעתים קרובות עכשיו, אבל לפני שמערכות חלונאית הפכו זמינות 1016 01:15:11,840 --> 01:15:15,760 והיה לך מסוף יחיד, ייתכן שתצטרך לקבוע את הסוג. 1017 01:15:15,760 --> 01:15:18,700 ואם משהו היה מגיע על Ethernet או מהרשת, 1018 01:15:18,700 --> 01:15:21,120 אולי אתה רוצה לומר שזה VT100. 1019 01:15:21,120 --> 01:15:26,630 VT100 הוא סוג של סטנדרט בעסק המסוף. זה בא ממסוף דצמבר. 1020 01:15:26,630 --> 01:15:35,270 אם אתה פשוט עושה את החיוג - לב לזה? זה חוזר דרכים, הא? 1021 01:15:35,270 --> 01:15:39,520 אז אם אנחנו פשוט tset כאן, 1022 01:15:39,520 --> 01:15:45,250 אם אני פשוט עושה את tset, זה מאפס את המסוף שלי, אבל אתה לא רואה שום דבר. 1023 01:15:45,250 --> 01:15:47,340 זה לא באמת משנה כלום. 1024 01:15:47,340 --> 01:15:48,620 -S 1025 01:15:49,900 --> 01:15:51,480 אוקיי. 1026 01:15:51,480 --> 01:15:53,350 TERM setenv xterm צבעים. 1027 01:15:53,350 --> 01:15:57,080 אנחנו כבר יודעים כי לטווח הוקם בדרך זו, כך שלא השתנה. 1028 01:15:57,080 --> 01:15:58,860 זו הדרך שהיינו רוצה לעשות את זה. 1029 01:15:58,860 --> 01:16:07,080 אבל שם לב שהפקודה, tset-s, פלט רק זה פקודות אלה. זה לא להפעיל אותם. 1030 01:16:07,080 --> 01:16:09,770 זה לא להפעיל פקודות אלה, היא פלט אותם. 1031 01:16:09,770 --> 01:16:13,650 אז זה נועד כדי לייצר פקודות שלאחר מכן ניתן יהיה להפעיל. 1032 01:16:13,650 --> 01:16:16,360 אתה זוכר את הפקודה בקובץ שאני רק הראיתי לך ש בו. 1033 01:16:16,360 --> 01:16:18,910 אז בואו לעשות את זה. 1034 01:16:18,910 --> 01:16:23,750 ש מדכא כמה פלט, אבל זה לא משנה כאן, כפי שאתה יכול לראות. 1035 01:16:23,750 --> 01:16:27,980 אני רק עושה את זה כדי להראות לך שזה לא משנה. 1036 01:16:27,980 --> 01:16:31,870 זה בתחביר backquote. 1037 01:16:31,870 --> 01:16:35,340 הערה backquote כאן, backquote כאן. 1038 01:16:35,340 --> 01:16:37,680 אני משמיט את הדברים האלה כאן. 1039 01:16:37,680 --> 01:16:39,570 אלו הם מקרים של אומר לו מה לעשות 1040 01:16:39,570 --> 01:16:42,050 במקרה של סוגים מסוימים של מסופים - 1041 01:16:42,050 --> 01:16:45,400 Ethernet, רשת, חיוג, מה יש לך. 1042 01:16:45,400 --> 01:16:48,050 זה לא משנה כאן, כי אנחנו לא ממש עושים את כל הדברים האלה. 1043 01:16:48,050 --> 01:16:49,720 אני רק ממחיש את הפקודה. 1044 01:16:49,720 --> 01:16:55,170 אם אני עושה את זה עם backquote, מה אני הולך לקבל? 1045 01:16:55,170 --> 01:17:00,210 גם להבחין כאן כי זה כלל את noglob הסט וnoglob המוגדר, 1046 01:17:00,210 --> 01:17:02,630 אז אלה הם עכשיו מיותרים בהגדרה. 1047 01:17:02,630 --> 01:17:05,380 זה לא תמיד היה נכון, אבל עכשיו הם נכללו בפקודה זו. 1048 01:17:05,380 --> 01:17:08,890 אבל בואו נראה מה קורה אם אני עושה את זה 1049 01:17:08,890 --> 01:17:12,570 וללכת לתחילת השורה בבקרה ואני עושה את זה. 1050 01:17:14,380 --> 01:17:18,040 אוקיי, נקבע: פקודה לא נמצא. זה קצת מוזר, לא? 1051 01:17:18,040 --> 01:17:20,570 סט הוא הפקודה ידועה. זה חלק מהקליפה. 1052 01:17:20,570 --> 01:17:24,040 להגדיר: הפקודה לא נמצאה? מדוע זה כך? 1053 01:17:24,040 --> 01:17:26,790 הממ. ובכן, בואו נחשוב על זה. 1054 01:17:26,790 --> 01:17:31,100 זה פועל שחילוף פקודת backquote, 1055 01:17:31,100 --> 01:17:37,430 וזה מתרחש בחלק מסוים של הרצף של ניתוח את הפקודה. 1056 01:17:37,430 --> 01:17:40,360 סט הוא הפקודה מובנה. 1057 01:17:40,360 --> 01:17:43,900 כך שעד שהיא עושה את זה החלפת פיקוד, 1058 01:17:43,900 --> 01:17:48,280 זה כבר הגיע מעבר לנקודה של זיהוי פקודות מובנים. 1059 01:17:48,280 --> 01:17:51,900 אז זה מתייחס להגדיר כאילו היה פקודה בנתיב. 1060 01:17:51,900 --> 01:17:55,440 למותר לציין, זה לא מוצא את זה ואתה מקבל הודעת שגיאה. 1061 01:17:55,440 --> 01:17:59,300 כן. יש דוגמא של רצף ניתוח. 1062 01:17:59,300 --> 01:18:01,460 ומה אנחנו עושים בקשר לזה? 1063 01:18:01,460 --> 01:18:04,800 שים לב פקודה מאוד מעניינת כאן, eval. 1064 01:18:04,800 --> 01:18:06,530 אני תוהה מה שעושה. 1065 01:18:06,530 --> 01:18:08,760 אם אתה מסתכל על המדריך - ובוא פשוט לעשות את זה 1066 01:18:08,760 --> 01:18:12,000 כדי להראות עד כמה מבלבל מדריכים אלה הם - 1067 01:18:12,000 --> 01:18:19,400 tcsh אדם, הוראות מבולבלות, למצוא כאן דברים היא לא קל. 1068 01:18:19,400 --> 01:18:31,850 כאן אנו eval ARG ללכת,, אז אנחנו יכולים להיות 1 או יותר טיעונים 1069 01:18:31,850 --> 01:18:34,090 ויש רשימה של דברים שיש. 1070 01:18:34,090 --> 01:18:37,730 מתייחס לטענות כתשומות לקליפה 1071 01:18:37,730 --> 01:18:43,600 ומבצע את הפקודות וכתוצאה מכך בהקשר של הפגז הנוכחי. 1072 01:18:43,600 --> 01:18:46,900 זה משמש בדרך כלל כדי לבצע פקודות שנוצרו כתוצאה מהפקודה 1073 01:18:46,900 --> 01:18:51,310 או החלפה משתנה בגלל ניתוח מתרחש לפני ההחלפות הללו. 1074 01:18:51,310 --> 01:18:52,580 טוב מאוד. 1075 01:18:52,580 --> 01:18:54,740 וכאן הם אפילו מתייחסים לפקודת tset לשימוש מדגם 1076 01:18:54,740 --> 01:18:57,700 כמו זו שאני רק הראיתי לך. 1077 01:18:57,700 --> 01:19:00,440 עכשיו אני צריך לקבל את החלון אחורי למקום שימושי. 1078 01:19:03,150 --> 01:19:07,800 בואו נגמור פה ואנחנו תראו הערכה המשמשת ממש לפני זה. 1079 01:19:07,800 --> 01:19:14,010 אז בואו נראה מה קורה אם אנחנו שמים - כאן אנחנו הולכים עם החיצים לפקודה כי 1080 01:19:14,010 --> 01:19:20,940 ובקרה להתחלה, הערכה. 1081 01:19:20,940 --> 01:19:22,850 אוקיי, אז זה עובד. 1082 01:19:22,850 --> 01:19:26,440 כאשר אתה עושה הערכה, זה לוקח מה שבא אחריו והופך אותו לפקודה. 1083 01:19:26,440 --> 01:19:29,460 זה מאפשר לך בעצם לנתח את זה פעמיים. 1084 01:19:29,460 --> 01:19:33,710 הסעיף כאן פועל בפקודה זו בתוך backquotes, 1085 01:19:33,710 --> 01:19:36,210 מקבל את הפלט. 1086 01:19:36,210 --> 01:19:42,850 הפלט אמור להיות מנוהל כפקודות אלה כאן כמו אלה 1087 01:19:42,850 --> 01:19:45,890 בשלב זה אחד וזה אחד. 1088 01:19:45,890 --> 01:19:50,100 אז פקודות אלה נמצאים כעת כאן ברצף הזה, 1089 01:19:50,100 --> 01:19:58,950 אך אלה מובנים בפקודות והוא לא יכול לקבל אותם מייד. 1090 01:19:58,950 --> 01:20:06,440 אז אנחנו הולכים לeval, eval מרים את זה, מתחיל את כל העניין מחדש, וזה עובד. 1091 01:20:06,440 --> 01:20:18,460 דוגמא שניהם backquoting, הערכה, ניתוח, השלכות של ניתוח, 1092 01:20:18,460 --> 01:20:21,910 ופקודה שהוא כנראה שימוש מעט מאוד כדי לך בימינו. 1093 01:20:21,910 --> 01:20:25,540 אוקיי. בסדר, umask. 1094 01:20:25,540 --> 01:20:32,160 בואו נסתכל על פקודה זו כאן, umask 022. אני תוהה מה שעושה. 1095 01:20:32,160 --> 01:20:38,420 בואו פשוט להקליד umask עם שום דבר אחרי זה. 22. אוקיי. 1096 01:20:38,420 --> 01:20:44,350 022 ולעשות את זה שוב. 1097 01:20:44,350 --> 01:20:48,580 כפי שאתם יכולים לנחש, umask ללא טיעונים אומר לך את המסכה הנוכחית; 1098 01:20:48,580 --> 01:20:51,760 umask עם טיעונים הופך אותו לזה, אבל זה היה אחד כבר היה לי. 1099 01:20:51,760 --> 01:20:53,800 מה 022 אומר? 1100 01:21:01,650 --> 01:21:07,080 אלה נמצאים כאן הגנות לקובץ. 1101 01:21:07,080 --> 01:21:11,440 הם קובעים למי מותר לקרוא או לכתוב או להפעיל את הקובץ. 1102 01:21:11,440 --> 01:21:16,560 הגנות נקראות גם הרשאות. 1103 01:21:16,560 --> 01:21:21,390 R מייצג קריאה, w לכתיבה, 1104 01:21:21,390 --> 01:21:25,500 וx, שהוא אינו נוכח שם, עומד לביצוע. 1105 01:21:25,500 --> 01:21:27,260 ישנן 3 קטגוריות שם. 1106 01:21:27,260 --> 01:21:33,540 3 האלמנטים האחרונים הם בקטגוריה של משתמשים. אלה יחולו עליי, המשתמש. 1107 01:21:33,540 --> 01:21:36,870 אלה 3 כאן חלים על הקבוצה. 1108 01:21:36,870 --> 01:21:41,590 הקובץ שייך לקבוצה 1, משתמש יכול להשתייך לכמה קבוצות, 1109 01:21:41,590 --> 01:21:47,150 אבל אם המשתמש נמצא בקבוצה שאליה קובץ זה שייך, 1110 01:21:47,150 --> 01:21:51,090 אז הגנות אלה תחולנה עליו אם הוא לא למשתמש. 1111 01:21:51,090 --> 01:21:54,230 ואת זה הוא כולם. 1112 01:21:55,540 --> 01:21:57,690 קטגוריות אלו הן סותרות. 1113 01:21:57,690 --> 01:21:59,750 הגנות המשתמשים חלות עליו, 1114 01:21:59,750 --> 01:22:03,780 הגנות הקבוצה חלות על חברי הקבוצה אחרים מאשר למשתמש, 1115 01:22:03,780 --> 01:22:08,110 וההגנות האחרות חלות רק על אנשים אחרים מאשר המשתמש וחברי הקבוצה. 1116 01:22:08,110 --> 01:22:12,320 אם יש r או aw או x, זה אומר שהגנה היא מובן מאליו. 1117 01:22:12,320 --> 01:22:13,950 אם יש מקף, זה אומר שזה לא. 1118 01:22:13,950 --> 01:22:16,690 למעשה יש דברים אחרים שניתן לשים בפה מלבד אלה, 1119 01:22:16,690 --> 01:22:18,350 שאני לא אכנס עכשיו. 1120 01:22:18,350 --> 01:22:24,450 Umask מגדיר ברירת מחדל עבור קבצים שאתה יוצר. 1121 01:22:24,450 --> 01:22:28,580 וכמו מסכה, בעצם זה אומר ביטים שאינך מוגדר. 1122 01:22:28,580 --> 01:22:30,450 כיצד זה הפך לביטים? 1123 01:22:30,450 --> 01:22:33,240 אם אתה חושב על כל אחד מאלה, כמו מספר אוקטלי, 1124 01:22:33,240 --> 01:22:42,120 זה קצת 1s, זה 2s, זה 4s. 1125 01:22:42,120 --> 01:22:45,840 אז 0 עד 7 1126 01:22:45,840 --> 01:22:51,770 יתאר מה שילוב של r של, W של, וx של יש לך עבור אלה 3 1127 01:22:51,770 --> 01:22:53,710 ולאחר מכן מספר דומה לאלה ולאחר מכן לאלה. 1128 01:22:53,710 --> 01:23:12,030 אז 022 אומר 0 לאחרים, 2 לקבוצה, 2 עבור המשתמש. 1129 01:23:12,030 --> 01:23:15,870 אבל זו מסכה. המסכה היא מה שאין לך. 1130 01:23:19,380 --> 01:23:20,610 אני מצטער. אני רק נתתי לך דברים שלא בסדר הנכון. 1131 01:23:20,610 --> 01:23:25,620 זה 3 הראשונים. 3 אלו הם המשתמש, 3 אלה הם הקבוצה, 3 אלה הם אחרים. 1132 01:23:25,620 --> 01:23:27,970 סליחה שנתתי לך את אלה שלא בסדר הנכונים. 1133 01:23:27,970 --> 01:23:31,910 0, שהוא ראשון מאלה, אינם מציגים את הערך, 1134 01:23:31,910 --> 01:23:35,430 אבל אם מספר הוא לא שם, זה 0. 1135 01:23:35,430 --> 01:23:38,370 זה אומר שכל 3 מהם יהיו מותר. 1136 01:23:38,370 --> 01:23:41,550 שים לב שבפרט זה אחד x אינו מותר. 1137 01:23:41,550 --> 01:23:44,090 הסיבה לכך היא שהמעטפת היא מסוגלת לקבוע 1138 01:23:44,090 --> 01:23:46,260 אם קובץ צריך להיות מוצא להורג או לא. 1139 01:23:46,260 --> 01:23:49,800 מכיוון שאין זה קובץ הפעלה, הוא לא הגדיר את x. 1140 01:23:49,800 --> 01:23:54,000 2 פירושו שיכתוב רשות, הקטגוריה השנייה כאן, 1141 01:23:54,000 --> 01:23:56,500 אחד באמצע, הוא הכחיש. 1142 01:23:56,500 --> 01:23:58,500 אז שוב, אלה הם הדברים שהוא נדחה. 1143 01:23:58,500 --> 01:24:02,080 ובכן, x מותר אבל זה לא לכאן כי זה לא הפעלה 1144 01:24:02,080 --> 01:24:04,260 ובאופן דומה לאחרים. 1145 01:24:04,260 --> 01:24:08,880 אז זה umask משותף. 1146 01:24:08,880 --> 01:24:14,630 עוד אחד נפוץ הוא 700 - לתת לעצמך כל דבר ואף אחד אחר שום דבר. 1147 01:24:14,630 --> 01:24:17,040 ויש אפשרויות אחרות. 1148 01:24:21,340 --> 01:24:27,110 אני אחזור לזה. שימוש בהיסטוריה אני יכול לחפש אחורה בשביל זה, LWH לשם. 1149 01:24:27,110 --> 01:24:30,210 אוקיי. אז הנה, אלה הם הפגזים. 1150 01:24:30,210 --> 01:24:36,020 Bash, הבעלים שהוא חשבון מערכת, יכול לעשות הכל. 1151 01:24:36,020 --> 01:24:41,210 קבוצה וכל אחד אחר יכולים לעשות לקרוא או לבצע אך לא לכתוב. 1152 01:24:41,210 --> 01:24:44,570 אחד זה אפילו לא לאפשר לבעל לכתוב לה. 1153 01:24:44,570 --> 01:24:46,460 אם הבעלים רצו לכתוב לה, על חשבון המערכת, 1154 01:24:46,460 --> 01:24:48,020 הוא יצטרך לשנות את ההגנה ראשונה. 1155 01:24:48,020 --> 01:24:53,940 אבל שוב, umask קובע את ברירת המחדל על ידי מיסוך את זה, 1156 01:24:53,940 --> 01:24:57,160 על ידי המציין את הביטים שלא להיות מוגדר. 1157 01:24:57,160 --> 01:25:04,380 זה בדרך כלל באחד מקבצי האתחול שלך, שהיא. Cshrc לC-shell 1158 01:25:04,380 --> 01:25:07,500 או. הפרופיל עבור פגזי בורן מהסוג. 1159 01:25:07,500 --> 01:25:12,520 זה יכול להיות במקום אחר גם אם יש קבצי אתחול אחרים במערכת. 1160 01:25:12,520 --> 01:25:14,610 בכל מקרה, זה umask. 1161 01:25:14,610 --> 01:25:18,180 יש סוג של משהו מוזר כאן, 1162 01:25:18,180 --> 01:25:22,800 וזה, מדוע יש פקודה אחת לכך? 1163 01:25:22,800 --> 01:25:28,690 אם הייתי כותב את זה, הייתי עושה את זה משתנה, umask = ערך כלשהו. 1164 01:25:28,690 --> 01:25:31,100 מדוע יש כל פקודה רק למטרה זו? 1165 01:25:31,100 --> 01:25:34,560 הסיבה לכך היא זה פשוט חוזר למקורות של יוניקס. 1166 01:25:34,560 --> 01:25:41,050 יוניקס היה רק ​​חלק פרויקט תכנות במעבדות בל בתחילת 1970s. 1167 01:25:41,050 --> 01:25:42,610 אנשים פשוט הגיעו יחד לתכנית. 1168 01:25:42,610 --> 01:25:45,290 הם אף פעם לא התכוונו שזה יהפוך למערכת הפעלה ברחבי העולם. 1169 01:25:45,290 --> 01:25:47,250 אנשים שונים כתבו חלקים שונים בלי לחשוב הרבה מאוד 1170 01:25:47,250 --> 01:25:49,790 של איך שהם הולכים להיות בשימוש - ולא מרפרף. 1171 01:25:49,790 --> 01:25:53,290 והוא הגיע יחד כמו זה, וזה עדיין ככה במובנים מסוימים. 1172 01:25:53,290 --> 01:25:57,930 אז המשקף את ההיסטוריה, ויש עדיין חוסר העקביות האלה ואלמנטים מוזרים שלו. 1173 01:25:57,930 --> 01:26:00,750 אוקיי. הבא כאן. 1174 01:26:08,170 --> 01:26:11,000 כפי שכתבתי קודם, ה-C-הפגז הוא לא ממש בשימוש מאוד לתכנות, 1175 01:26:11,000 --> 01:26:12,420 למרות שזה יכול להיות. 1176 01:26:12,420 --> 01:26:15,080 הוא מריץ לאט יותר, שוב trade-off בין שימוש האינטראקטיבי, 1177 01:26:15,080 --> 01:26:17,820 שבו יש עיבוד יותר מעורב מאשר מהירות, 1178 01:26:17,820 --> 01:26:20,710 אשר יכול לעשות ללא העיבוד. 1179 01:26:20,710 --> 01:26:28,320 תכונות נוספות נוספו לפגז בורן ידי קורן ובורן, שוב פגזים 1180 01:26:28,320 --> 01:26:32,120 לא נראה לי להאט אותם, ואני לא יודע למה זה. 1181 01:26:32,120 --> 01:26:36,310 זה יכול להיות רק בתכנות טוב יותר, אבל לא בעמדה יודעת שאני. 1182 01:26:36,310 --> 01:26:40,420 להאיץ כאן הוא בעצם לא כזה ביג דיל, למרות שהוא הזכיר. 1183 01:26:40,420 --> 01:26:43,690 הסיבה לכך היא שתסריטי פגז ממש מקבלים די מהר. 1184 01:26:43,690 --> 01:26:46,450 אם יש הרבה פקודות כמו בתכנית calculational, 1185 01:26:46,450 --> 01:26:49,110 אתה כנראה לא עושה את זה בתסריט פגז. 1186 01:26:49,110 --> 01:26:51,450 הפעילות שם הן די פשוטה וברורות. 1187 01:26:51,450 --> 01:26:53,960 אלה שאני כבר חוויתי את זה הם איטיים מדי 1188 01:26:53,960 --> 01:26:57,110 כרוך בבקשות חוזרות ונשנות של פקודות איטיות. 1189 01:26:57,110 --> 01:27:00,480 קודם לכן ציינתי עורך הזרם sed. פקודה זו היא איטית. 1190 01:27:00,480 --> 01:27:03,760 אם לבצע פעמים רבות SED, תקבל תסריט איטי, אבל זה לא הפגז זה איטי. 1191 01:27:03,760 --> 01:27:07,920 מפעיל אותו במעטפת בורן לא יהיה הרבה יותר מהר מאשר מפעיל אותו בתיקיית C-הפגז, 1192 01:27:07,920 --> 01:27:10,070 למרות שיש אולי כמה יתרונות שם. 1193 01:27:10,070 --> 01:27:12,760 יכולות תכנות נוספות, ומצד שני, 1194 01:27:12,760 --> 01:27:17,920 סיבות משמעותיות למה שהיית משתמשים בפגזים מסוג בורן. 1195 01:27:17,920 --> 01:27:21,390 יש C-shell תכונות מוזרה זה - 1196 01:27:21,390 --> 01:27:25,250 העובדה שאתה לא יודע אם משתנה הוא משתנה פגז או משתנים סביבה. 1197 01:27:25,250 --> 01:27:27,440 זה יכול להיות מאוד מבלבל. 1198 01:27:27,440 --> 01:27:32,170 זה לא כל כך קל לכתוב 1199 01:27:32,170 --> 01:27:35,930 רק על סמך הניסיון של תכנות בשפות אחרות שלך. 1200 01:27:35,930 --> 01:27:41,350 אני חושב שאתה יכול למצוא את הפגזים בורן מהסוג עקביים יותר עם החוויה שלך. 1201 01:27:43,730 --> 01:27:49,270 תסריטים מסוימים, אם כי, יכולים להיות אלפי קווי אורך. 1202 01:27:49,270 --> 01:27:52,450 אלה שראיתי משמשים לתיקון מערכות הפעלה. 1203 01:27:52,450 --> 01:27:55,450 מי יכול לבצע לאט מאוד, אבל אתה לא רצת אותם לעתים קרובות מאוד. 1204 01:27:55,450 --> 01:27:57,180 זה רק כאשר אתה עושה תיקון, 1205 01:27:57,180 --> 01:27:59,450 וזה רק מנהל המערכת שעושה את הדברים האלה, 1206 01:27:59,450 --> 01:28:01,840 כך שזה לא ממש ממש בעיה. 1207 01:28:01,840 --> 01:28:06,980 אלה הם מאות תורים ארוכים למעשה לבצע די מהר. 1208 01:28:06,980 --> 01:28:10,540 להזכיר את זה כאן, מה הם השיפורים האלה? 1209 01:28:10,540 --> 01:28:13,170 אני כבר הזכרתי כמה מהם - מערכים, חישובים, 1210 01:28:13,170 --> 01:28:20,540 $ (ביטוי) לחישובים במעטפת Bash, 1211 01:28:20,540 --> 01:28:23,050 סוג האחר של החלפת פיקוד. 1212 01:28:23,050 --> 01:28:25,360 ישנם סוגים שונים של פקודות בדיקות שונות 1213 01:28:25,360 --> 01:28:29,350 שבו אתה יכול לעשות מבחנים מותנים בקיומו של קובץ או דברים אחרים. 1214 01:28:29,350 --> 01:28:34,790 האחרון כאן, בפקודה זו כאן. 1215 01:28:34,790 --> 01:28:38,480 מה זה עושה, ולמה שמישהו ישתמש בו? 1216 01:28:51,170 --> 01:28:52,990 variablename printenv. 1217 01:28:52,990 --> 01:28:56,130 אנחנו יודעים מה printenv עושה. הוא אומר לנו את הערך של משתנה. 1218 01:28:56,130 --> 01:29:00,850 וvariablename printenv לא יגיד לנו מאוד בגלל שאין משתנה כאמור. 1219 01:29:03,550 --> 01:29:05,120 בלנק. 1220 01:29:05,120 --> 01:29:08,440 אבל בואו אתן לו משהו משמעותי. 1221 01:29:13,420 --> 01:29:16,800 זה לא שם. אוקיי. אני מניח שמעולם לא הגדרתי את זה. 1222 01:29:16,800 --> 01:29:18,020 בואו פשוט לבדוק את הסביבה שלי. 1223 01:29:18,020 --> 01:29:20,900 זוהי פקודה אחרת שבו אתה יכול לבדוק את הסביבה שלך. 1224 01:29:20,900 --> 01:29:24,470 אין עורך ישן וטוב, אחד שראינו קודם. 1225 01:29:42,360 --> 01:29:44,120 מה זה עושה? 1226 01:29:44,120 --> 01:29:48,050 כאן יש לנו ביטוי backquote. 1227 01:29:48,050 --> 01:29:50,370 זכור זו היא ה-C-הפגז. 1228 01:29:50,370 --> 01:29:54,850 אז עורך printenv ייתן לנו ערך של עורך. זה ששי. 1229 01:29:54,850 --> 01:29:59,790 ואז זה יהיה להגדיר את הערך שלמשתנה, פקודת הסט. 1230 01:29:59,790 --> 01:30:02,860 אז עכשיו אם אני עושה $ הד, אני מקבל vi. 1231 01:30:02,860 --> 01:30:05,850 זה לא נראה שימושי מאוד. 1232 01:30:05,850 --> 01:30:08,080 עם זאת, דווקא יש לו מטרה. 1233 01:30:08,080 --> 01:30:12,260 מכיוון שאנו לא יודעים אם משתנים הוא משתנה פגז או משתנים סביבה 1234 01:30:12,260 --> 01:30:16,280 באמצעות תחביר הערכת סימן דולר, אנו יכולים להשתמש printenv 1235 01:30:16,280 --> 01:30:19,460 כדי לוודא שזה משתנה סביבה. 1236 01:30:19,460 --> 01:30:22,550 אז אם היה עורך משתנה קליפה, זה לא הייתי מקבל את זה. 1237 01:30:22,550 --> 01:30:25,640 זה עובד רק עם משתנה הסביבה. 1238 01:30:25,640 --> 01:30:28,370 אם לא היו משתנה פגז ואני רוצה את הערך שלו, 1239 01:30:28,370 --> 01:30:29,980 הייתי צריך למצוא דרך אחרת כדי לעשות את זה. 1240 01:30:29,980 --> 01:30:33,530 דרך אחת לעשות זאת תהיה על ידי ביצוע סט וצנרת. 1241 01:30:33,530 --> 01:30:36,130 זהו אחד metacharacters, תווים מיוחדים. 1242 01:30:36,130 --> 01:30:38,370 זה שולח את הפלט של סט למשהו אחר. 1243 01:30:38,370 --> 01:30:40,650 בואו נראה מה אנחנו יכולים למצוא שם. 1244 01:30:40,650 --> 01:30:49,340 שום דבר. אוקיי. בואו רק לראות מה יש שם כולם יחד. 1245 01:30:49,340 --> 01:30:53,580 זה היה echo_style, אחד שהזכרתי קודם. אוקיי, בואו נעשה את זה. 1246 01:31:02,460 --> 01:31:06,230 זכור שציינתי קודם, echo_style 1247 01:31:06,230 --> 01:31:08,410 קובע את האופן שבו פקודת ההד תפעל. 1248 01:31:08,410 --> 01:31:10,940 bsd מייצג הפצת ברקלי רגילה. 1249 01:31:10,940 --> 01:31:13,200 זה יוניקס ברקלי מן 1970s. 1250 01:31:13,200 --> 01:31:16,630 זאת אחת הדרכים שההד יכול לרוץ. 1251 01:31:16,630 --> 01:31:22,310 הגדרת echo_style לערך שבTC-הפגז תגרום הד להתנהג ככה. 1252 01:31:22,310 --> 01:31:27,670 אז להגדיר עושה את זה, אבל להגדיר רק מקבל משתני פגז. 1253 01:31:27,670 --> 01:31:35,430 זה לא היה מוצא את העורך, שאינו משתנים פגז. 1254 01:31:36,870 --> 01:31:38,050 שום דבר. 1255 01:31:38,050 --> 01:31:39,660 אז זו דרך אחת להבחין בהם. 1256 01:31:39,660 --> 01:31:42,000 אבל העובדה שיש לך לעבור כמה הפקודה מוזרה כזה 1257 01:31:42,000 --> 01:31:45,500 להבחין בין משתני פגז או משתני סביבה 1258 01:31:45,500 --> 01:31:49,970 מציג את הסוג של הטבע מעשי של ה-C-shell למטרות מסוימות. 1259 01:31:52,290 --> 01:31:57,960 ועכשיו, אחרון ואולי לפחות, זה את הדפים. 1260 01:31:57,960 --> 01:32:03,190 אלה של מי שאתה ודאי יודע, האדם הוא קצר פקודה לידנית. 1261 01:32:03,190 --> 01:32:08,610 דפי האדם לפגזים הם קשים לקריאה. הם ארוכים מאוד. 1262 01:32:08,610 --> 01:32:14,060 הם מאורגנים באופן שעשוי להקשות כדי למצוא את מה שאתה מחפש. 1263 01:32:14,060 --> 01:32:15,980 אז אם אתה מחפש משהו עם מטרה, 1264 01:32:15,980 --> 01:32:20,050 אתם אולי לא יודעים אם המטרה שאינה משתנה פגז או משהו אחר, 1265 01:32:20,050 --> 01:32:21,630 לכן ייתכן שלא יודע איפה לחפש אותו. 1266 01:32:21,630 --> 01:32:25,030 אתה יכול להסתכל למחרוזות שונות, אבל בחוטים לעתים קרובות חוזרים על עצמם. 1267 01:32:25,030 --> 01:32:27,640 אז זה בדרך כלל קשה לקריאה. 1268 01:32:27,640 --> 01:32:33,810 אנחנו רק הסתכלנו בדף איש TC-הפגז קצת לפני כדי למצוא את פקודת eval. 1269 01:32:33,810 --> 01:32:36,610 יש דברים שהולכים מהר יותר. 1270 01:32:36,610 --> 01:32:38,860 גישה אחת היא לחפש את מחרוזת. 1271 01:32:38,860 --> 01:32:40,360 אתה יכול להשתמש באיתורית. 1272 01:32:40,360 --> 01:32:49,080 יש זימונית הלוכסן לחפש פקודה או מחרוזת בתוך מבצע הביפר. 1273 01:32:49,080 --> 01:32:52,830 גבר כברירת מחדל ישתמש איתורית, או להיות פחות או יותר. 1274 01:32:52,830 --> 01:32:56,560 אני לא יודע אם אתה מכיר אותם, אבל אלה יכולים להראות קבצי טיפי טיפין. 1275 01:32:56,560 --> 01:33:00,550 אני כבר משתמש פחות להציג קבצים אלה בפרט שיש לנו כאן. 1276 01:33:00,550 --> 01:33:03,300 אתה יכול לחפש בפנים. 1277 01:33:03,300 --> 01:33:04,880 אתה יכול לנסות להשתמש במחרוזות חיפוש שונות. 1278 01:33:04,880 --> 01:33:08,420 גם דפי אדם במערכות הפעלה שונות לא יכולים להיות אותו הדבר. 1279 01:33:08,420 --> 01:33:11,130 הם יכולים להיות דפים נפרדים לcsh וtcsh. 1280 01:33:11,130 --> 01:33:14,500 הם לא על מק, אבל הם יכולים להיות אם אלה הם פקודות נפרדות. 1281 01:33:14,500 --> 01:33:19,000 אם sh לא ממש קורא בש, שם כנראה יהיה דף אדם נפרד. 1282 01:33:19,000 --> 01:33:25,820 יש כמה מערכות דפי אדם נפרדים רק לפקודות המוכללות ב-C-shell. 1283 01:33:25,820 --> 01:33:30,250 לפעמים, אם אתה רוצה לקרוא תיאור של הפקודה מובנה 1284 01:33:30,250 --> 01:33:35,350 זה גם בדרך, כמו הד, אתה צריך לקרוא את עמוד האדם על הפקודה שעל הד 1285 01:33:35,350 --> 01:33:37,610 כדי לקבוע עד כמה זה יעבוד כפקודה מובנה 1286 01:33:37,610 --> 01:33:39,760 גם אם אתה לא קורא את הפקודה המובנה. 1287 01:33:41,630 --> 01:33:46,090 זה חסרון של מערכת ההפעלה באופן כללי, לא רק לפגזים, 1288 01:33:46,090 --> 01:33:50,710 אם כי עבור הפגזים בפרט דפי האדם הם די ארוכים, 1289 01:33:50,710 --> 01:33:56,180 בין השאר משום שהם הוסיפו תכונות שימושיות להם, אשר עשוי להיות חיובי. 1290 01:33:56,180 --> 01:34:00,290 אוקיי. האם יש שאלות? כל נושאים שאתה רוצה להעלות? 1291 01:34:00,290 --> 01:34:03,390 שום דבר רלוונטי לכאן? 1292 01:34:04,540 --> 01:34:07,100 ובכן, זה היה מאוד נחמד לדבר עם כולכם. 1293 01:34:07,100 --> 01:34:09,690 אני מקווה שיש לך משהו מהסמינר 1294 01:34:09,690 --> 01:34:13,080 שיהיה שימושי עבורך בעשייה שלך בעתיד. 1295 01:34:17,330 --> 01:34:19,000 [CS50.TV]