1 00:00:00,000 --> 00:00:02,320 >> [สัมมนา - เปลือกหอยยูนิกซ์สภาพแวดล้อม] 2 00:00:02,320 --> 00:00:04,180 [ดักลาส Kline - ฮาร์วาร์มหาวิทยาลัย] 3 00:00:04,180 --> 00:00:07,160 [นี้เป็น CS50 - CS50.TV] 4 00:00:07,160 --> 00:00:12,770 >> หัวข้อวันนี้เป็นเปลือก Unix 5 00:00:12,770 --> 00:00:20,600 ฉันดักลาส Kline ผู้เชี่ยวชาญหรือผู้ใช้อย่างน้อยสามารถที่เหมาะสมของเปลือก 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 ชื่อของเปลือกเป็นคำสั่งที่เป็นเพียงการดวลจุดโทษเพียง 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 >> เชลล์แยกวิเคราะห์คำสั่ง 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-เปลือกเป็นเพียงการเล่นคำ 57 00:03:36,830 --> 00:03:41,260 เปลือกนี้ถูกนำมาใช้กับระบบปฏิบัติการยูนิกซ์เบิร์กลีย์ในช่วงกลางปี​​ 1970 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-เปลือก 61 00:03:50,790 --> 00:03:56,490 คือ C-เปลือกมีลักษณะบางอย่างในนั้นซึ่งคล้ายคลึงกับภาษา 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 นี้เป็น superset ของ C-เปลือก 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-เปลือกขณะนี้ไม่ชัดเจนเพราะมันอาจจะกล่าวถึงเฉพาะไปที่เดิม C-เปลือก 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-เปลือกสำหรับการใช้งานแบบโต้ตอบ 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 ต่อมาแม้ว่าจะมีการเปิดตัวอีกเปลือกทุบตี, ทุบตี, 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 แต่ก็มีวัตถุประสงค์เดียวกันของเปลือกกรของ amalgamating C-เปลือก 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 ทุบตี แต่มีมากขึ้นและดังนั้นจึงเป็นที่นิยม 93 00:06:00,710 --> 00:06:05,180 บอร์นอีกครั้งและเปลือกหอยกรที่เรียกว่าบอร์นประเภทเปลือกหอย 94 00:06:05,180 --> 00:06:07,730 เพราะพวกเขามีลักษณะเปลือก Bourne ของ 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 ทุบตีเปลือกได้กลายเป็นที่เกี่ยวข้องกับรูปแบบต่างๆของลินุกซ์ 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 ดังนั้นเท่าที่ผมรู้ว่ามีอะไรเกี่ยวกับการทุบตี 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 ว่ามีกลายเป็นที่เกี่ยวข้องกับลินุกซ์คือเหตุผลที่จะชอบทุบตีเพื่อ 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 สคริปต์บอร์นเชลล์ควรทำงานภายใต้เปลือกกรหรือทุบตี 111 00:07:21,330 --> 00:07:22,650 ถ้าคุณเขียนสิ่งที่บอร์นเชลล์, 112 00:07:22,650 --> 00:07:26,180 คุณอาจจะสามารถดำเนินการได้ภายใต้ ksh หรือทุบตี 113 00:07:26,180 --> 00:07:30,610 กรสคริปต์เปลือกอาจจะทำงานภายใต้ทุบตี แต่ฉันไม่สามารถรับประกันได้ว่า 114 00:07:30,610 --> 00:07:36,040 ต่อมาที่นี่สคริปต์ C-เปลือกควรทำงานภายใต้ TC-เปลือก 115 00:07:38,850 --> 00:07:41,690 C-เปลือกเป็นจริงไม่เคยใช้อย่างกว้างขวางสำหรับการเขียนสคริปต์ 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 >> ทุบตีเป็นที่มีขอบเขตกลายเป็นชนิดของภาษากลางสำหรับระบบปฏิบัติการ 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 นอกจากนี้เนื่องจาก pathnames แฟ้มและห้องสมุดแตกต่างกัน 132 00:08:43,539 --> 00:08:46,210 ระหว่างระบบปฏิบัติการเหล่านี้แตกต่างกัน 133 00:08:46,210 --> 00:08:50,250 คุณอาจจะไม่สามารถที่จะเขียนสคริปต์ทุบตีกับระบบปฏิบัติการอย่างใดอย่างหนึ่ง 134 00:08:50,250 --> 00:08:51,840 และเรียกใช้มันในอีกหนึ่ง 135 00:08:51,840 --> 00:08:54,440 คุณควรจะสามารถที่จะเคลื่อนย้ายไปมาระหว่างที่แตกต่างกัน Unix, Linux 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-เปลือก 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 ในกรณีของการดำเนินงานเปลือกขัดแย้งที่เรียกว่าพารามิเตอร์หรือพารามิเตอร์ตำแหน่ง 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 >> สายระบุเชลล์ อะไรที่หา 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 ที่ระบุทุบตี 179 00:11:52,450 --> 00:11:56,750 โปรดทราบว่าจะระบุไว้ในพา ธ / / bin ทุบตี 180 00:11:56,750 --> 00:12:02,870 หากคอมพิวเตอร์มีเปลือกทุบตี แต่ไม่ได้อยู่ในไดเรกทอรีถัง / ถังนี้จะไม่ทำงาน 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-เปลือกมันจะดีกว่าที่จะพูดอย่างนั้น 193 00:12:52,220 --> 00:12:58,450 แล้วมีบางสิ่งบางอย่างที่นี่ค่อนข้างสับสน 194 00:12:58,450 --> 00:13:03,940 ถ้าคุณใช้สายเปลือกระบุเช่น / bin / ทุบตี 195 00:13:03,940 --> 00:13:07,070 และเปลือกหอยที่ใช้ไม่ได้อยู่ที่นั่น 196 00:13:07,070 --> 00:13:10,680 ไม่มีสิ่งเช่น / bin / ทุบตีบนคอมพิวเตอร์ที่โดยเฉพาะอย่างยิ่ง 197 00:13:10,680 --> 00:13:14,330 อย่างใดอย่างหนึ่งเพราะมันไม่ได้มีการทุบตีหรือเพราะมันอยู่ในสถานที่ที่แตกต่างกัน 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 นี่คือคำสั่ง นี้กล่าวทำงานทุบตีและเรียกใช้สคริปต์ของฉันในการทุบตี 208 00:13:52,510 --> 00:13:55,680 ที่จะมีความสำคัญกว่าสายระบุ, 209 00:13:55,680 --> 00:14:02,090 และมีคุณสมบัติในการช่วยให้คุณเพื่อให้การที่แตกต่างกัน pathnames 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 คอมพิวเตอร์จะพบทุบตีที่ใดก็ตามที่มันตั้งอยู่และใช้มัน 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 Perl มีความสามารถมาก sed เป็นบรรณาธิการ มันสามารถทำในสิ่งที่มากกว่าแค่การแก้ไข 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 ดังนั้นในกรณีดังกล่าวด้วย sed awk หรือมันเป็นอย่างน้อยในประสบการณ์ของผม 230 00:15:15,030 --> 00:15:18,910 ดีกว่าที่จะเขียนสคริปต์เปลือกและโทร sed awk หรือจากสคริปต์เปลือก 231 00:15:18,910 --> 00:15:24,660 แทนที่จะโทร sed awk หรือเป็นบรรทัดระบุสคริปต์ 232 00:15:24,660 --> 00:15:26,980 Perl เป็นภาษาที่หลากหลายมากที่ผมกล่าวว่า 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 และถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับการทุบตี 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 หรือทุบตีคุณสมบัติในขณะที่โทร csh หรือดวลจุดโทษ 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 เรียกมันว่าเป็นดวลจุดโทษหรือ 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 มันเป็นวิธีการที่ยอมรับว่าถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับเตะ 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, ไฟล์ทุบตี 1 - 259 00:17:21,619 --> 00:17:23,880 แต่พวกเขาทั้งสองทำงานทุบตี 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 เรียกมันว่าเป็นดวลจุดโทษหรือทุบตีจริงอาจนำไปสู่​​การดำเนินการที่แตกต่างกัน 272 00:18:22,170 --> 00:18:25,300 แม้ว่าจะเป็นไฟล์เดียวกับที่คุณกำลังดำเนินการ 273 00:18:25,300 --> 00:18:31,800 สิ่งที่จะต้องพิจารณาก็คือว่าแม้ว่าคอมพิวเตอร์เครื่องอื่นมี 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 แล้วอีกครั้งคุณจะได้รับเปลือกที่คุณเรียกดวลจุดโทษหรือ csh ไม่หนึ่งที่คุณอาจชอบ 277 00:18:50,430 --> 00:19:01,130 บอร์นเชลล์ในปัจจุบันมีการปรับปรุงน้อยกว่าผู้ที่อยู่ในทุบตี 278 00:19:01,130 --> 00:19:06,100 แต่ที่ผ่านมาผู้ที่อยู่ในเปลือก Bourne เดิม 279 00:19:06,100 --> 00:19:09,690 ในฐานะที่เป็นผลจากการที่แม้บอร์นเชลล์ปัจจุบันดวลจุดโทษ, 280 00:19:09,690 --> 00:19:14,560 แม้เมื่อมันไม่ทุบตีคล้ายภาษา C กว่า C-เปลือกไม่ 281 00:19:14,560 --> 00:19:20,460 ว่าไม่เป็นความจริงเมื่อ C-เปลือกที่ถูกสร้างขึ้นเป็นครั้งแรก แต่ก็มีการพัฒนาวิธีการที่ 282 00:19:20,460 --> 00:19:26,560 คุณอาจจะสังเกตเห็นที่นี่ที่ทั้งหมดชื่อเปลือกเหล่านี้ยกเว้นสำหรับบอร์นเชลล์ 283 00:19:26,560 --> 00:19:30,640 มีสิ่งที่จะบ่งบอกถึงการที่พวกเขามีเปลือก - csh, ทุบตี - 284 00:19:30,640 --> 00:19:32,550 แต่บอร์นเชลล์เป็นเพียงแค่ดวลจุดโทษ 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 ชนิดของสายไฟล์รหัสผ่านที่ใช้ในคอมพิวเตอร์ทุกเครื่อง Unix และ Linux ดังนั้นเท่าที่ผมรู้ 307 00:21:12,780 --> 00:21:14,650 Mac ที่มีระบบของตัวเอง 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, เบื้องหน้ากลับไปที่เปลือกทุบตีฉัน 322 00:22:28,890 --> 00:22:38,290 pwd, ไดเรกทอรีปัจจุบันกลับไปที่ C-เปลือก 323 00:22:38,290 --> 00:22:43,180 pwd ที่แตกต่างกันไดเรกทอรี - จริงไม่ไดเรกทอรีที่แตกต่างกันในกรณีนี้ 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 ลองกลับไปทุบตีเปลือก ลองในสิ่งเดียวกัน 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-เปลือกมันทำงานโดยการถ่ายโอนการดำเนินการบางส่วนของรหัสของตัวเอง 335 00:23:20,310 --> 00:23:22,790 และมันก็ไม่ได้อยู่ในเปลือกทุบตี 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 จึงมีเรามีเปลือกทุบตีทำงานภายใต้ C-เปลือกและที่เราเรียกว่าย่อยเปลือก 339 00:23:32,290 --> 00:23:38,480 และในกรณีที่คุณอยากรู้ทุบตีเปลือกมีวิธีการของตัวเองในตำแหน่งคำสั่ง 340 00:23:38,480 --> 00:23:42,590 hashed หมายถึงความจริงที่ว่ามันสามารถที่จะดำเนินการมากขึ้นอย่างรวดเร็วที่ 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 ทุบตีเปลือกมีอาร์เรย์ เปลือก Bourne เดิมไม่ได้ 351 00:24:20,700 --> 00:24:26,130 เพื่อให้สามารถเป็นประโยชน์อย่างมากสำหรับการเขียนโปรแกรม 352 00:24:26,130 --> 00:24:29,810 C-เปลือกไม่จริงมีอาร์เรย์ แต่ไม่ได้มีจำนวนมากของคุณสมบัติอื่น ๆ เหล่านี้ 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 จริงๆมีการใช้งานน้อยหรือไม่มีเลยสำหรับการเขียนสคริปต์ 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 นั่นคือสิ่งที่คุณไม่สามารถทำอะไรกับของ Perl คุณสามารถทำมันด้วยเปลือกหอย 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 'คำสั่ง ls กรัม *' 389 00:26:35,470 --> 00:26:37,640 กรัม *, ในขณะที่คุณอาจจะรู้ว่าเป็นตัวแทนการแสดงออก 390 00:26:37,640 --> 00:26:40,290 สำหรับชื่อไฟล์ที่ขึ้นต้นด้วยกรัม 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 มันจะประเมินตัวแทนกรัม * เมื่อทำงานกำหนดคำสั่งนี้ 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 กลไกประวัติศาสตร์ถูกนำมาใช้เป็นส่วนหนึ่งของ aliasing 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 Asterisk หมายความว่าทุกคนดังนั้นนี่คือรายการอาร์กิวเมนต์ที่สมบูรณ์ 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-เปลือก 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 ความเห็นส่วนตัวของฉันคือแม็คเป็นเรื่องง่ายที่จะใช้เพื่อการนี​​้ 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 ยังไม่มีการควบคุมได้รับคำสั่งต่อไปถ้าคุณได้เลื่อนแล้วกลับวิธีการบางอย่าง 529 00:37:54,190 --> 00:37:55,880 ลูกศรลงไม่ว่าเกินไป 530 00:37:55,880 --> 00:38:00,480 คุณสามารถเลื่อนไปทางซ้ายไปทางขวาที่มีลูกศรและสิ่งอื่น ๆ 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 เพื่อที่จะกำหนดตัวแปรเพื่อให้มีค่าของ b - 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 พารามิเตอร์ตำแหน่งสคริปต์เปลือกสามารถพิจารณาตัวแปร 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 มันจะตั้งค่าตัวแปรให้เป็นค่า null 565 00:40:57,770 --> 00:41:00,120 กำหนดให้ a = เป็นคำสั่งที่ถูกต้อง 566 00:41:00,120 --> 00:41:04,370 คำสั่งชุดสามารถกำหนดได้มากกว่า 1 ตัวแปรในบรรทัดเดียวกัน 567 00:41:04,370 --> 00:41:11,240 ดังนั้นคำสั่งนี้ที่นี่มีผลกระทบของการกำหนดทั้ง a และ b เป็นโมฆะค่า 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 ที่นี่นี้ $ a มีค่า 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 ถ้าไม่มีการขยายเพียง pathnames หลังจากเฉือนสุดท้ายก็จะไม่มีผล 584 00:42:16,510 --> 00:42:27,480 : ชั่วโมงว่าการแสดงออกตัวแปรจะปิดองค์ประกอบสุดท้ายของรายการไดเรกทอรี 585 00:42:27,480 --> 00:42:29,660 อีกครั้งหลังจากที่ผ่านมาเฉือน 586 00:42:29,660 --> 00:42:33,160 ดังนั้น / / b / C จะกลายเป็น / / 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 เหล่านี้มีวัตถุประสงค์ที่จะจัดการกับชื่อไฟล์ pathnames, 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-เปลือก 610 00:44:05,600 --> 00:44:08,340 ตัวแปรสภาพแวดล้อมนอกจากนี้ยังมีตัวแปรใน C-เปลือก 611 00:44:08,340 --> 00:44:11,250 และพวกเขายังมีตัวแปรในเปลือกหอยอื่น ๆ ด้วย 612 00:44:11,250 --> 00:44:15,230 ใน C-เปลือกพวกเขามีชุดที่แตกต่าง 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 นี่คือตัวอย่าง PRINTER, 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 แจ้งให้ทราบนี้สิ่งสุดท้ายที่นี่ EDITOR = 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 ถ้าฉันทำ EDITOR 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-เปลือกจะมีข้อยกเว้นบางชุดที่แตกต่าง 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 อักษรตัวใหญ่ตัวแปรสภาพแวดล้อมระยะ, 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 ระยะ $ $ term และมี 697 00:50:52,560 --> 00:51:00,570 xterm เป็นประเภทอาคารหน้าต่างที่แสดงในระบบวินโดว์ 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 หรือระยะตัวแปรสภาพแวดล้อมในตัวพิมพ์ใหญ่ 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 คือรายการของ pathnames ที่เปลือกจะมองหาคำสั่ง 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 ทุบตีไม่ แต่นี้เป็นส่วนหนึ่งคงที่ของเปลือก 759 00:54:46,600 --> 00:54:48,660 นี้เป็นสายเดียวและไม่อาร์เรย์ 760 00:54:48,660 --> 00:54:50,420 C-เปลือกมักจะมีอาร์เรย์ 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 $ path เพื่อสะท้อน [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 ในความเป็นจริงถ้าคุณกำลังจะทำเช่นนี้ในทุบตีเปลือกอาจจะเป็น 784 00:56:44,080 --> 00:56:47,110 ชนิดของสคริปต์บางอย่างที่อาจจะเป็นวิธีการที่คุณจะทำมัน 785 00:56:47,110 --> 00:56:50,350 แต่ใน C-เปลือกมันง่ายมากที่จะใช้อาร์เรย์ 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 คำสั่งที่จะทำคือการส่งออกเช่นเดียวกับการส่งออก PRINTER 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-เปลือก 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 ในทุบตีหรือเปลือกกรคุณสามารถเรียกใช้คำสั่งเช่นนี้ 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-เปลือกกำหนดตัวแปร 813 00:58:52,220 --> 00:58:55,550 และไม่มีข้อโต้แย้งจะบอกคุณสิ่งที่มีค่าตัวแปรที่มี 814 00:58:55,550 --> 00:59:01,140 ในทุบตีเปลือกตั้งค่าคำสั่งที่ไม่มีการขัดแย้งจะเป็นสิ่งเดียวกัน 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 ในพารามิเตอร์ตำแหน่งที่จะสคริปต์ 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 โดยเฉพาะอย่างยิ่งในทุบตีมีตัวแปรที่จะกำหนดวิธีการทำงานเปลือก 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-เปลือก 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 จนถึง pathnames เป็นสิ่งที่ไม่ 851 01:02:00,380 --> 01:02:05,040 แต่เมื่อผมทำเช่นนี้มันก็ปลั๊กในรายการของ pathnames ที่ 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 lwh ksh ทุบตี ถูก 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 จำที่ผมบอกว่าถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับการทุบตี 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-เปลือกเป็นไฟล์เดียวกัน 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 ทุบตี 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 ถ้าคุณพิมพ์ที่อยู่ในเปลือกทุบตีคุณจะได้รับข้อความข้อผิดพลาด 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-ลิตรในแฟ้มเหล่านั้น 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-เปลือก 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 ในตัวคำสั่งสำหรับคำสั่งที่อยู่ภายในเปลือก 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 echo เป็นคำสั่งในเส้นทางและมันอยู่ในทุกเปลือก 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-เปลือก, 990 01:12:50,460 --> 01:12:56,490 ไม่ได้เป็นเหมือนกันสำหรับในตัวคำสั่งที่มันเป็นในตัวไม่ใช่คำสั่ง 991 01:12:56,490 --> 01:12:58,890 ผมไม่แน่ใจว่าเกี่ยวกับการทุบตีมี 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 ล้างกล่าวว่ากลับไปทำที่ 1011 01:14:53,370 --> 01:14:56,440 หมายเหตุ glob ชุดที่จะไม่ได้มีผลกระทบที่ 1012 01:14:56,440 --> 01:15:00,800 ในภาษาสามัญตั้ง glob หรือ noglob ล้างดูเหมือนจะเทียบเท่า 1013 01:15:00,800 --> 01:15:03,290 แต่ที่นี่ก็ไม่ได้เป็น มัน noglob ล้าง 1014 01:15:05,120 --> 01:15:07,910 ตอนนี้ tset tset ยืนชุดขั้ว 1015 01:15:07,910 --> 01:15:11,840 มันไม่ได้ใช้ที่มักจะในขณะนี้ แต่ก่อนที่ระบบ windowing กลายเป็นใช้ได้ 1016 01:15:11,840 --> 01:15:15,760 และคุณมีขั้วเดียวคุณอาจจะต้องกำหนดประเภท 1017 01:15:15,760 --> 01:15:18,700 และถ้ามีอะไรบางอย่างมามากกว่าอีเธอร์เน็ตหรือจากเครือข่ายที่ 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 หากคุณเพียงแค่ทำ dialup - แจ้งให้ทราบว่า? นี้ไปกลับวิธีฮะ 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 ระยะ 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 Q ระงับการส่งออกบางส่วน แต่ที่ไม่สำคัญที่นี่เป็นที่คุณสามารถดู 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 อีเธอร์เน็ตเครือข่าย dialup สิ่งที่มีคุณ 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 ขอให้สังเกตคำสั่งที่น่าสนใจมากที่นี่, ประเมินผล 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 ที่นี่เราไปหาเรื่องประเมินผลเพื่อให้เราสามารถมี 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, Eval, การแยกวิเคราะห์ผลของการแยก 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 ทุบตีเจ้าของบัญชีที่เป็นระบบที่สามารถทำทุกอย่าง 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-เปลือก 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 Unix เป็นเพียงบางส่วนของโครงการการเขียนโปรแกรมที่ Bell Labs ในปี 1970 ในช่วงต้น 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 จะรันช้ากว่าอีกครั้งการค้าออกระหว่างการใช้งานแบบโต้ตอบ 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-เปลือกมีคุณสมบัติที่แปลกไป - 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 $ () การแสดงออกสำหรับการคำนวณในทุบตีเปลือก 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 printenv VariableName 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 มี EDITOR เก่าที่ดีอย่างหนึ่งที่เราเห็นก่อนที่จะเป็น 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 ดังนั้น EDITOR printenv จะทำให้เรามีค่าของบรรณาธิการ มัน vi 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 กำหนดวิธีการที่คำสั่ง echo จะทำงาน 1248 01:31:08,410 --> 01:31:10,940 BSD หมายถึงการกระจายเบิร์กลีย์มาตรฐาน 1249 01:31:10,940 --> 01:31:13,200 นี่คือเบิร์กลีย์ยูนิกซ์จากปี 1970 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-เปลือกเพื่อวัตถุประสงค์บางอย่าง 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 พวกเขากำลังไม่ได้อยู่ใน Mac แต่พวกเขาอาจจะมีถ้าผู้ที่มีคำสั่งแยก 1281 01:33:14,500 --> 01:33:19,000 ถ้าดวลจุดโทษไม่ได้จริงๆเรียกทุบตีมีอาจจะเป็นหน้าคนที่แยกจากกัน 1282 01:33:19,000 --> 01:33:25,820 บางระบบมีหน้าคนที่แยกจากกันเพียงสำหรับ C-เปลือกในตัวคำสั่ง 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]