[สัมมนา - เปลือกหอยยูนิกซ์สภาพแวดล้อม] [ดักลาส Kline - ฮาร์วาร์มหาวิทยาลัย] [นี้เป็น CS50 - CS50.TV] หัวข้อวันนี้เป็นเปลือก Unix ฉันดักลาส Kline ผู้เชี่ยวชาญหรือผู้ใช้อย่างน้อยสามารถที่เหมาะสมของเปลือก เปลือกเป็นอินเตอร์เฟซสำหรับผู้ใช้ระบบปฏิบัติการของคอมพิวเตอร์ ชื่อเป็นความเข้าใจผิดที่แตกต่างจากเปลือกของสัตว์, ซึ่งเป็นเรื่องยากและป้องกันเปลือกคอมพิวเตอร์ช่วยให้การสื่อสาร เมมเบรนที่มีรูพรุนดังนั้นอาจจะเป็นคำเปรียบเทียบที่ดีกว่า เปลือกเดิมสำหรับระบบปฏิบัติการยูนิกซ์เป็นบอร์นเชลล์ บอร์นถูกสะกด B-O-U-R-N-E บอร์นเป็นหนึ่งในผู้เขียนต้นฉบับของระบบปฏิบัติการยูนิกซ์ และเพื่อให้เปลือกที่มีการตั้งชื่อตามเขา ชื่อของเปลือกเป็นคำสั่งที่เป็นเพียงการดวลจุดโทษเพียง นั่นคือคำสั่งที่คุณสามารถดำเนินการ เปลือกเริ่มต้นที่การเข้าสู่ระบบ เมื่อคุณเข้าสู่ระบบคอมพิวเตอร์เปลือกเพียงแค่เริ่มทำงานสำหรับคุณ และนั่นคือสิ่งที่เกิดคำสั่งของคุณ จะสามารถเริ่มต้นในเวลาอื่น ๆ นอกจากนี้ยังมี หากคุณนำขึ้นหน้าต่างที่ไม่มีข้อบ่งชี้อื่น ๆ ก็จะเริ่มต้นเปลือกสำหรับคุณ นั่นเป็นวิธีที่มันคือการที่คุณสามารถไปที่หน้าต่างและเริ่มพิมพ์คำสั่ง และอื่น ๆ มีแม้ว่าคุณจะไม่ได้เข้าสู่หน้าต่างที่ นอกจากนี้ถ้าคุณทำเข้าสู่ระบบระยะไกล จากนั้นก็จะเริ่มต้นเปลือกบนคอมพิวเตอร์ระยะไกล และมันก็เป็นไปได้ที่จะเรียกใช้คำสั่งโดยไม่ต้องเปลือกโต้ตอบ นั่นอาจหมายถึงการดำเนินงานในปัจจุบันของคุณ และยังอาจหมายถึงการดำเนินงานระยะไกล คุณสามารถส่งคำสั่งไปยังคอมพิวเตอร์เครื่องอื่น ซึ่งรวมถึงการเริ่มต้นขึ้นเปลือกมี ในความเป็นจริงมันมีการรวมเริ่มต้นขึ้นเปลือกมี ถึงแม้ว่าจะไม่ได้เป็นวัตถุประสงค์ขั้นสุดท้ายของคุณ เมื่อสิ่งที่เริ่มขึ้นเช่นนี้ก็ไม่จำเป็นต้องเริ่มต้นเปลือกใหม่ หากคุณนำขึ้นหน้าต่างใหม่ก็เป็นไปได้ที่จะบอกว่ามันจะนำขึ้นบรรณาธิการ หรือบางคำสั่งอื่น ๆ ในกรณีที่การแก้ไขจะเริ่มต้นจากรอยขีดข่วน เมื่อสิ้นสุดการแก้ไขหน้าต่างสิ้นสุด นี้เป็นที่ผิดปกติเล็ก ๆ น้อย ๆ แต่ก็สามารถทำได้ ในกรณีดังกล่าวจะไม่เป็นเปลือก ดังนั้นจึงไม่จำเป็นต้องเป็นกรณีที่หน้าต่างหรือบางโปรแกรมดังกล่าวจะนำขึ้นเปลือก เชลล์แยกวิเคราะห์คำสั่ง แยกวิธีการระบุองค์ประกอบต่างๆและจำแนกพวกเขา คำสั่งภายในสตริงที่สมบูรณ์ที่คุณพิมพ์ จะมี 1 คนหรือมากกว่าคำสั่งเดียวที่จะดำเนินการ องค์ประกอบอื่น ๆ ที่จะมีข้อโต้แย้ง นอกจากนี้ยังสามารถเป็นตัวอักษรพิเศษที่มีผลต่อการดำเนินการของคำสั่ง พวกเขาสามารถส่งออกที่อื่นนอกเหนือจากหน้าจอ ถ้าคำสั่งปกติจะส่งไปยังหน้าจอ มันสามารถเปลี่ยนเส้นทางเข้าก็สามารถทำสิ่งอื่น ๆ มีสัญลักษณ์อื่น ๆ ตัวละครและอื่น ๆ เป็น แยกเกี่ยวข้องกับการตรวจสอบและแปลความหมายของสิ่งเหล่านั้น ตอนนี้ถ้ามีคำถามใด ๆ มากขึ้นซึ่งเป็นแนวโน้มที่ค่อนข้างเนื่องจากมีคนไม่มาก เราจะไปยังหน้าถัดไปของฉันที่นี่ ผมพูดก่อนหน้านี้ว่าบอร์นเชลล์เป็นเปลือกเริ่มต้น มีคนอื่นเป็น หนึ่งคือ C-เปลือก คำสั่งเป็น csh ชื่อ C-เปลือกเป็นเพียงการเล่นคำ เปลือกนี้ถูกนำมาใช้กับระบบปฏิบัติการยูนิกซ์เบิร์กลีย์ในช่วงกลางปี​​ 1970 เบิร์กลีย์ยูนิกซ์เป็นเหตุการณ์สำคัญในการพัฒนาของระบบปฏิบัติการยูนิกซ์ มันเป็นการปฏิวัติขนาดใหญ่และรวมถึงการนำของเปลือกนี้ เหตุผลในการเล่นคำว่า C-เปลือก คือ C-เปลือกมีลักษณะบางอย่างในนั้นซึ่งคล้ายคลึงกับภาษา C, ซึ่งบอร์นเชลล์ไม่ได้มี - หรือมันไม่ได้มีในเวลานั้น นอกจากนี้ยังมี TC-เปลือก นี้เป็น superset ของ C-เปลือก มันมีคุณสมบัติเพิ่มเติมจำนวนมากที่มีประโยชน์สำหรับการใช้งานแบบโต้ตอบ เช่นนึกถึงคำสั่งในกลไกประวัติศาสตร์ ซึ่งผมจะอธิบายค่อนข้างช้า - ในลักษณะที่ง่ายตามหลังแก้ไข นอกจากนี้ยังมีการผูกซึ่งช่วยให้คุณสามารถผูกสายสั้นที่สำคัญให้กับคำสั่งอีกต่อไป เราไม่ได้ไปที่จะได้รับในวันนี้ว่า แต่ก็มีคุณลักษณะบางอย่างที่มีประโยชน์สำหรับการเขียนโปรแกรม แต่ C-เปลือกไม่ได้มักจะใช้สำหรับการเขียนโปรแกรมเปลือก โปรแกรมเชลล์ถ้าคุณไม่ได้รู้อยู่แล้วว่า เป็นโปรแกรมที่ประกอบด้วยลักษณะเปลือก คุณสามารถเรียกใช้โปรแกรมเหล่านี้เป็น คุณเขียนพวงของคำสั่งเชลล์ลงในไฟล์และเรียกใช้ไฟล์ คุณไม่จำเป็นที่จะต้องรวบรวม นี้เป็นภาษาที่สื่อความหมาย วลีที่ C-เปลือกขณะนี้ไม่ชัดเจนเพราะมันอาจจะกล่าวถึงเฉพาะไปที่เดิม C-เปลือก csh, หรือทุก C-เปลือกหอยรวมทั้ง tcsh มันคลุมเครือเล็กน้อย ต่อมาเป็นเปลือกหอยเปลือกกร, ksh ชื่อหลังจากโปรแกรมเมอร์กร เปลือกนี้พยายามที่จะรวมเป็น 1 เปลือก ข้อดีของ C-เปลือกสำหรับการใช้งานแบบโต้ตอบ และบอร์นเชลล์สำหรับการเขียนโปรแกรม จะได้รับการใช้เป็นเปลือกโต้ตอบโดยบางคน - ชนกลุ่มน้อย ต่อมาแม้ว่าจะมีการเปิดตัวอีกเปลือกทุบตี, ทุบตี, อีกครั้งการเล่นคำบอร์นอีกครั้งเปลือก มันเป็นส่วนขยายของบอร์นเชลล์ เปลือกกรยังเป็น ทั้งสองของพวกเขาเป็น แต่ก็มีวัตถุประสงค์เดียวกันของเปลือกกรของ amalgamating C-เปลือก และข้อได้เปรียบบอร์นเชลล์ใน 1 เปลือก หลายของการปรับปรุงของเปลือกกรจะรวมอยู่ในทุบตี ทุบตี แต่มีมากขึ้นและดังนั้นจึงเป็นที่นิยม บอร์นอีกครั้งและเปลือกหอยกรที่เรียกว่าบอร์นประเภทเปลือกหอย เพราะพวกเขามีลักษณะเปลือก Bourne ของ ซึ่งเป็นสิ่งที่เข้ากันไม่ได้ในบางประการกับ C-เปลือกหอย มีเปลือกหอยอื่น ๆ นอกเหนือจากนั้นบางส่วนที่มีไว้สำหรับการใช้งานที่ จำกัด อยู่ อาจจะ จำกัด อยู่ที่คำสั่งบางอย่างอาจจะมีวัตถุประสงค์เฉพาะไม่ได้ใช้บ่อย เอาล่ะ รายการถัดไปที่นี่ ทุบตีเปลือกได้กลายเป็นที่เกี่ยวข้องกับรูปแบบต่างๆของลินุกซ์ ผมไม่แน่ใจว่าเป็นความจริงของทุกรูปแบบ มีหลายรูปแบบที่จะออกมีและฉันไม่ได้ใช้พวกเขาทั้งหมด แต่ในผู้ที่ฉันได้ใช้มันได้กลายเป็นที่เกี่ยวข้องกับมัน ดังนั้นเท่าที่ผมรู้ว่ามีอะไรเกี่ยวกับการทุบตี ซึ่งจะทำให้คนอื่น ๆ เข้ากันได้กับลินุกซ์ กว่าชุดอื่น ๆ ของเปลือกและระบบปฏิบัติการ ฉันคิดว่านี่อาจเป็นเพียงแค่สะท้อนให้เห็นถึงความเยาว์วัยของโปรแกรมเมอร์ ว่ามีกลายเป็นที่เกี่ยวข้องกับลินุกซ์คือเหตุผลที่จะชอบทุบตีเพื่อ KSH อื่น ตั้งแต่สิ่งที่มีแนวโน้มที่จะเขียนมันและมันมีแนวโน้มที่จะแพร่กระจาย ฉันจะให้คุณด้วยเหตุผลอื่น ๆ สำหรับการที่ในภายหลัง สคริปต์บอร์นเชลล์ควรทำงานภายใต้เปลือกกรหรือทุบตี ถ้าคุณเขียนสิ่งที่บอร์นเชลล์, คุณอาจจะสามารถดำเนินการได้ภายใต้ ksh หรือทุบตี กรสคริปต์เปลือกอาจจะทำงานภายใต้ทุบตี แต่ฉันไม่สามารถรับประกันได้ว่า ต่อมาที่นี่สคริปต์ C-เปลือกควรทำงานภายใต้ TC-เปลือก C-เปลือกเป็นจริงไม่เคยใช้อย่างกว้างขวางสำหรับการเขียนสคริปต์ ตั้งแต่เปลือกบอร์นและต่อมาหอยบอร์นชนิดได้ดีกว่าสำหรับวัตถุประสงค์ที่ ดังนั้นที่จริงไม่ได้เป็นสิ่งที่สำคัญ มีค่อนข้างมากของบอร์นเชลล์สคริปต์ที่ถูกเขียนขึ้นนานมาแล้วมี ก่อนที่จะเปลือกกรหรือบอร์นเชลล์-อีกครั้งได้รับการแนะนำ เหล่านี้จะยังคงอยู่ในการใช้งานเป็นส่วนหนึ่งของระบบปฏิบัติการ และเพื่อให้คุณจะได้พบกับพวกเขาหากคุณมองเข้าไปในระบบปฏิบัติการ หรือบางแพคเกจโปรแกรมเก่า ทุบตีเป็นที่มีขอบเขตกลายเป็นชนิดของภาษากลางสำหรับระบบปฏิบัติการ มันถูกขยายแล้วไปยัง Windows และ VMS VMS ในกรณีที่คุณไม่ทราบว่าเป็นระบบปฏิบัติการที่เป็นเจ้าของ อุปกรณ์ดิจิตอลคอร์ปอเรชั่นซึ่งยังคงอยู่ในการใช้งานส่วนใหญ่อยู่เบื้องหลัง และถ้ามันจะได้รับการทำงานบนหลายระบบปฏิบัติการที่แตกต่างกัน แนวโน้มที่ผู้คนมีแนวโน้มที่จะเปลี่ยนมัน แต่การพัฒนานี้ค่อนข้างที่ผ่านมา มันเป็นเพียงการเริ่มต้นเพื่อให้ฉันไม่สามารถคาดการณ์ว่าจะเปิดออกเพื่อเป็นจริงๆชนิดของภาษากลางว่า นอกจากนี้เนื่องจาก pathnames แฟ้มและห้องสมุดแตกต่างกัน ระหว่างระบบปฏิบัติการเหล่านี้แตกต่างกัน คุณอาจจะไม่สามารถที่จะเขียนสคริปต์ทุบตีกับระบบปฏิบัติการอย่างใดอย่างหนึ่ง และเรียกใช้มันในอีกหนึ่ง คุณควรจะสามารถที่จะเคลื่อนย้ายไปมาระหว่างที่แตกต่างกัน Unix, Linux ระบบปฏิบัติการ Mac OS แต่ไม่จำเป็นต้องไปเป็น Windows หรือ VMS คุณอาจจะมีการเปลี่ยนแปลงรายละเอียดชื่อพา ธ ไฟล์ และห้องสมุดบางคนอาจจะแตกต่างกัน ซึ่งอาจส่งผลกระทบต่อวิธีการที่บางคำสั่งทำงาน หรือว่าพวกเขาดำเนินการขัดแย้งและไม่ชอบ นอกจากนั้นข้อควรระวังอื่นที่นี่คือมีการรับประกัน ว่าเปลือกหอยที่แตกต่างกันฉันได้กล่าว - บอร์นเชลล์ C-เปลือก TC-เปลือกเปลือกกรบอร์นอีกครั้งเปลือก - จะอยู่ภายใต้ระบบปฏิบัติการยูนิกซ์ใด ๆ หรือลินุกซ์หรือคอมพิวเตอร์ Mac OS พวกเขาก็อาจจะไม่ได้มี ที่เป็นหนึ่งในข้อควรระวังที่นี่ มันเป็นข้อ จำกัด ที่โชคร้ายที่นี่ตั้งแต่ที่คุณต้องการสิ่งที่ทำงานทุกที่ แต่น่าเสียดายที่คุณไม่สามารถพึ่งพาที่ เอาล่ะ ต่อไปที่นี่ สมมติว่าคุณต้องการที่จะเขียนสคริปต์เชลล์ โปรแกรมซึ่งประกอบด้วยคำสั่งเชลล์ คุณเขียนคำสั่งของคุณใส่ไว้ในไฟล์และเรียกใช้ไฟล์ ถ้าคุณต้องการที่จะรวมถึงข้อโต้แย้ง? ในกรณีของการดำเนินงานเปลือกขัดแย้งที่เรียกว่าพารามิเตอร์หรือพารามิเตอร์ตำแหน่ง และพวกเขาจะถูกเรียกด้วยเครื่องหมายดอลลาร์และตัวเลข, $ 1, $ 2 ดังนั้นถ้าสคริปต์มีชื่อนี้อาร์กิวเมนต์แรกของฉันอาจจะมีข้อโต้แย้งที่ 1 และครั้งที่สองของฉันอาจจะมีข้อโต้แย้งที่ 2 และภายในสคริปต์ของฉันหากฉันต้องการที่จะอ้างถึงสิ่งเหล่านี้ - ขอลบนี้ตั้งแต่ฉันไม่ได้จริงจะใช้มัน - ภายในสคริปต์ของฉันฉันอาจจะ $ 1 อ้างถึง arg1, $ 2, ซึ่งจะออกมาทางที่ arg2 ดังนั้นสัญลักษณ์ที่มีการอ้างถึงข้อโต้แย้ง และผู้ที่นำไปใช้กับทั้งหมดของเปลือกหอย นอกจากนี้ยังมีตัวละครอื่น ๆ $ * หมายถึงรายการอาร์กิวเมนต์ทั้งหมดทั้งหมดของพวกเขา $ # หมายถึงจำนวนของการขัดแย้ง อีกครั้งนี้นำไปใช้กับเปลือกหอยทั้งหมด สัญลักษณ์เหล่านั้น * และ # สามารถใช้กับความหมายของผู้ที่อยู่ในสถานที่อื่น ๆ นอกจากนี้ยังมี เราจะไม่ได้รับเป็นที่ สายระบุเชลล์ อะไรที่หา สมมติว่าคุณได้เขียนสคริปต์และมันเป็นเปลือกโดยเฉพาะอย่างยิ่งและคุณต้องการที่จะใช้มัน คุณจะรู้ว่าสิ่งที่เปลือกระบบปฏิบัติการของคุณจะใช้ในการเรียกใช้สคริปต์ของคุณหรือไม่ เมื่อมาถึงจุดหนึ่งที่คุณอาจคิดว่ามันจะทำงานในบอร์นเชลล์ ถ้าคุณไม่ได้พูดอย่างอื่น แต่คนที่ไม่ได้เขียนสคริปต์ในบอร์นเปลือกที่มากอีกต่อไป และคุณไม่สามารถพึ่งพาได้อีกต่อไป ดังนั้นที่นี่เรามีสายการระบุเปลือกที่นี่ ที่ระบุทุบตี โปรดทราบว่าจะระบุไว้ในพา ธ / / bin ทุบตี หากคอมพิวเตอร์มีเปลือกทุบตี แต่ไม่ได้อยู่ในไดเรกทอรีถัง / ถังนี้จะไม่ทำงาน นั่นคือรอบคัดเลือกอีกระมัดระวังอีกที่นี่ เครื่องหมายปอนด์เป็นตัวละครสายความคิดเห็น ที่ใช้กับเปลือกหอยทั้งหมด โดยเฉพาะอย่างยิ่งกรณีที่นี่ #! ที่จุดเริ่มต้นของสคริปต์ที่เป็นกรณีพิเศษ ที่ระบุเปลือกในการที่จะเรียกใช้สคริปต์ ในฐานะที่ผมบอกว่ามันอาจจะไม่เป็นสถานที่เดียวกัน / bin นอกจากนี้ยังมีสิ่งอื่นที่นี่ หากคุณเพียงแค่ใช้เครื่องหมายปอนด์ที่ไม่มีเครื่องหมายอัศเจรีย์และพา ธ , ควรระบุว่า C-เปลือก แต่ผมไม่แนะนำให้ทำแบบนั้นเพราะผมไม่สามารถที่จะรับประกัน ที่มักจะทำงาน หากคุณต้องการ C-เปลือกมันจะดีกว่าที่จะพูดอย่างนั้น แล้วมีบางสิ่งบางอย่างที่นี่ค่อนข้างสับสน ถ้าคุณใช้สายเปลือกระบุเช่น / bin / ทุบตี และเปลือกหอยที่ใช้ไม่ได้อยู่ที่นั่น ไม่มีสิ่งเช่น / bin / ทุบตีบนคอมพิวเตอร์ที่โดยเฉพาะอย่างยิ่ง อย่างใดอย่างหนึ่งเพราะมันไม่ได้มีการทุบตีหรือเพราะมันอยู่ในสถานที่ที่แตกต่างกัน คุณจะได้รับข้อผิดพลาดบอกคุณว่าสคริปต์คุณขับรถไม่อยู่ และแน่นอนสคริปต์ของคุณมีอยู่แล้วเพื่อให้เกิดข้อผิดพลาดที่ทำให้เกิดความสับสน ด้วยเหตุผลที่ว่าระบบปฏิบัติการที่จะช่วยให้คุณข้อผิดพลาดที่ หรือถูกต้องมากขึ้นที่เปลือกโต้ตอบของคุณที่คุณกำลังทำงานนี้ให้ข้อผิดพลาดที่ คือการที่จะรายงานคำสั่งที่คุณใช้ซึ่งเป็นชื่อของสคริปต์ คำสั่งที่มีประสิทธิภาพที่เรียกว่าเปลือกโดยใช้ชื่อของสคริปต์ นั่นคือสิ่งที่คุณได้รับข้อความข้อผิดพลาดที่ทำให้เกิดความสับสน วิธีการเรียกสคริปต์เชลล์อีก โดยระบุเป็นเปลือกในบรรทัดคำสั่งเป็นที่นี่ นี่คือคำสั่ง นี้กล่าวทำงานทุบตีและเรียกใช้สคริปต์ของฉันในการทุบตี ที่จะมีความสำคัญกว่าสายระบุ, และมีคุณสมบัติในการช่วยให้คุณเพื่อให้การที่แตกต่างกัน pathnames หากคุณเพียงแค่ให้คำสั่งระบบปฏิบัติการที่จะมองหาคำสั่งที่ ในสถานที่ต่างๆ ถ้ามันใช้ได้ก็ควรจะหามัน คอมพิวเตอร์จะพบทุบตีที่ใดก็ตามที่มันตั้งอยู่และใช้มัน เพื่อให้คุณไม่จำเป็นแล้วที่จะกังวลเกี่ยวกับการที่จะพบมัน มีความกังวลอื่น ๆ ที่อาจมีอยู่ที่นี่ เช่นถ้ามีมากกว่า 1 รุ่นของทุบตีซึ่งเป็นไปได้แม้ว่าจะไม่น่า เพื่อให้เป็นวิธีที่จะจัดการกับสิ่งเหล่านี้อีก บรรทัดระบุสามารถโทรเปลือกใด ๆ พวกเขายังสามารถเรียกสิ่งอื่นที่ไม่ใช่เปลือกหอย ผมมีตัวอย่างที่นี่จะ sed ซึ่งเป็นบรรณาธิการกระแส; awk ซึ่งเป็นรูปแบบการประมวลผลภาษา; และของ Perl ภาษาสคริปต์ที่พัฒนาขึ้นอย่างมาก หากคุณใส่สายระบุแสดงให้เห็นอย่างใดอย่างหนึ่งของโปรแกรมเหล่านั้นที่จุดเริ่มต้น มันจะไปโดยตรงลงในโปรแกรมที่มากกว่าเริ่มต้นเปลือก โปรแกรมเหล่านั้นมีข้อ จำกัด ความสามารถของพวกเขา Perl มีความสามารถมาก sed เป็นบรรณาธิการ มันสามารถทำในสิ่งที่มากกว่าแค่การแก้ไข แต่มันอาจเป็นเรื่องยากในการเขียนโปรแกรมที่ นอกจากนี้ยังผ่านการขัดแย้งและสิ่งที่จะเป็นทั้งสคริปต์ไปไม่ได้หรือทำให้เกิดความสับสน ดังนั้นในกรณีดังกล่าวด้วย sed awk หรือมันเป็นอย่างน้อยในประสบการณ์ของผม ดีกว่าที่จะเขียนสคริปต์เปลือกและโทร sed awk หรือจากสคริปต์เปลือก แทนที่จะโทร sed awk หรือเป็นบรรทัดระบุสคริปต์ Perl เป็นภาษาที่หลากหลายมากที่ผมกล่าวว่า คุณไม่สามารถเรียกใช้คำสั่งแบบโต้ตอบใน Perl, ซึ่งหมายความว่าคุณไม่สามารถทดสอบชิ้นส่วนของสคริปต์ที่คุณกำลังพัฒนา โดยใช้พวกเขาโต้ตอบ แต่ก็เป็นภาษาที่มีความสามารถมาก และได้พัฒนาเป็นเครื่องมือที่ใช้กันอย่างแพร่หลายมาก นั่นเป็นเพียงเล็กน้อยของการพูดสอดเกี่ยวกับสายการระบุ ในทั้งหมดหรือรูปแบบที่สุดของลินุกซ์ - อีกครั้งฉันไม่สามารถจะมั่นใจได้ว่าทุกอย่าง - และ Mac OS ถ้าคุณพิมพ์คุณจะได้รับ csh, tcsh และถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับการทุบตี พวกเขาพยายามที่มีเพื่อให้คุณได้รุ่นที่สูงขึ้นของเปลือกหอยเหล่านี้ แต่เรื่องนี้อาจสร้างความสับสน ถ้าคุณเขียนสคริปต์ใช้ tcsh หรือทุบตีคุณสมบัติในขณะที่โทร csh หรือดวลจุดโทษ แล้วพยายามที่จะเรียกใช้บนคอมพิวเตอร์ที่ไม่ได้มี tcsh หรือทุบตี, คุณอาจได้รับข้อผิดพลาดบางอย่างหากมีคำสั่งที่อยู่ในนั้น ซึ่งเปลือกหอยเหล่านั้นไม่ได้รับรู้ นอกจากนี้คุณอาจจะเรียกว่าเปลือกของคุณขึ้นในคอมพิวเตอร์ของคุณ เรียกมันว่าเป็นดวลจุดโทษหรือ csh แล้วได้รับเปลือกหอยที่สูงขึ้น คุณอาจไม่ได้คิดว่าของจริงที่ว่าคุณกำลังใช้เปลือกที่สูงขึ้น ดังนั้นนี่คือหลุมพรางที่อาจเกิดขึ้น มันเป็นวิธีการที่ยอมรับว่าถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับเตะ ถ้าคุณพิมพ์ csh คุณจะได้รับ Tsch? มีสิ่งที่อยู่ในคอมพิวเตอร์เหล่านี้เรียกว่าการเชื่อมโยง ซึ่งสามารถเชื่อมต่อกับชื่อไฟล์เพื่ออ้างถึงสิ่งเดียวกัน มันสามารถเป็นได้ทั้ง 2 ชื่อสำหรับแฟ้มเดียวกันหรือไฟล์ที่มีวัตถุประสงค์เพื่ออ้างถึงไฟล์อื่น พวกเขากำลังเรียกว่าการเชื่อมโยงอย่างหนักและสัญลักษณ์ เราจะไม่เข้าไปในนั้นอีกต่อไปวันนี้ นอกจากนี้ยังอาจเป็นแฟ้มที่แยกต่างหาก - sh ไฟล์ 1, ไฟล์ทุบตี 1 - แต่พวกเขาทั้งสองทำงานทุบตี จากนั้นมีการคัดเลือกอีกที่นี่ หากคุณกำลังเรียกร้องหนึ่งของเปลือกหอยเหล่านี้โดยหนึ่งชื่อ คุณอาจคิดว่าคุณจะได้รับการทำงานเช่นเดียวเรียกมันด้วยชื่ออื่น ดีที่จริงไม่จำเป็นต้องเป็นจริง คำสั่งเหล่านี้สามารถตรวจสอบชื่อโดยที่พวกเขาถูกเรียกว่า และพวกเขาสามารถบนพื้นฐานของชื่อนั้นทำงานแตกต่างกัน อาจจะมีปัญหาของการพยายามเพื่อให้สอดคล้องกับมาตรฐาน บางท่านอาจเคยได้ยินของมาตรฐาน POSIX หรืออื่น คุณสมบัติอื่น ๆ ที่อาจจะ นี้สามารถเลือกได้บางครั้งโดยอาร์กิวเมนต์บรรทัดคำสั่ง หรือโดยการตั้งค่าตัวแปรเปลือก เรียกมันว่าเป็นดวลจุดโทษหรือทุบตีจริงอาจนำไปสู่​​การดำเนินการที่แตกต่างกัน แม้ว่าจะเป็นไฟล์เดียวกับที่คุณกำลังดำเนินการ สิ่งที่จะต้องพิจารณาก็คือว่าแม้ว่าคอมพิวเตอร์เครื่องอื่นมี tcsh หรือเตะ หากพวกเขาไม่ได้เชื่อมโยงที่พวกเขามีในคอมพิวเตอร์ของคุณ ถ้าคุณมีเครื่องคอมพิวเตอร์ของลินุกซ์หรือ Mac OS, แล้วอีกครั้งคุณจะได้รับเปลือกที่คุณเรียกดวลจุดโทษหรือ csh ไม่หนึ่งที่คุณอาจชอบ บอร์นเชลล์ในปัจจุบันมีการปรับปรุงน้อยกว่าผู้ที่อยู่ในทุบตี แต่ที่ผ่านมาผู้ที่อยู่ในเปลือก Bourne เดิม ในฐานะที่เป็นผลจากการที่แม้บอร์นเชลล์ปัจจุบันดวลจุดโทษ, แม้เมื่อมันไม่ทุบตีคล้ายภาษา C กว่า C-เปลือกไม่ ว่าไม่เป็นความจริงเมื่อ C-เปลือกที่ถูกสร้างขึ้นเป็นครั้งแรก แต่ก็มีการพัฒนาวิธีการที่ คุณอาจจะสังเกตเห็นที่นี่ที่ทั้งหมดชื่อเปลือกเหล่านี้ยกเว้นสำหรับบอร์นเชลล์ มีสิ่งที่จะบ่งบอกถึงการที่พวกเขามีเปลือก - csh, ทุบตี - แต่บอร์นเชลล์เป็นเพียงแค่ดวลจุดโทษ ทำไม? นั่นคือเปลือกเดิม มันเป็นเปลือกแล้วไม่เปลือก, และเพราะมันเป็นเปลือกมีเหตุผลที่จะแตกต่างจากเปลือกอีก ดังนั้นที่ว่าทำไมมันมีชื่อที่และยังไม่ ด้านบนนี้ที่นี่เป็นสายจากฐานข้อมูลรหัสผ่านสำหรับบัญชีที่ฉันต้องมี บนคอมพิวเตอร์เครื่องอื่น ฉันจะพยายามที่จะได้รับชื่อที่เพื่อให้คุณสามารถมองเห็นส่วนหนึ่งว่า ณ สิ้นเปลือก ฐานข้อมูลรหัสผ่านเข้าสู่ระบบลักษณะถือสำหรับผู้ใช้ทั้งหมด ที่จุดเริ่มต้นคือชื่อผู้ใช้ที่คุณสามารถดูช่วง 2 ตัวอักษรของฉันตอนนี้ สาขาที่นี่จะแยกจากกันโดยทวิภาค สนามสุดท้ายที่คุณสามารถดูเป็น / bin tcsh เปลือก ที่ระบุเปลือก มีสิ่งที่น่าสนใจของที่นี่ เมื่อระบบปฏิบัติการยูนิกซ์ได้รับการพัฒนาเป็นครั้งแรกมีเพียง 1 เปลือก เพื่อให้มีทางเลือกที่ไม่มี ดังนั้นทำไมพวกเขาอนุญาตให้มีเขตข้อมูลในฐานข้อมูลรหัสผ่านเพื่อระบุเปลือก? ผมไม่ทราบ แต่ก็โชคดีที่พวกเขาทำ มันค่อนข้างยากที่จะทำให้การเปลี่ยนแปลงในรูปแบบฐานข้อมูลรหัสผ่าน เพราะหลายโปรแกรมอ้างถึงรูปแบบของ และจะต้องได้รับการเขียนใหม่ มันพัฒนามงคลหรือบังเอิญที่พวกเขารวมถึงสนามที่ ชนิดของสายไฟล์รหัสผ่านที่ใช้ในคอมพิวเตอร์ทุกเครื่อง Unix และ Linux ดังนั้นเท่าที่ผมรู้ Mac ที่มีระบบของตัวเอง มันจริงมีไฟล์รหัสผ่านที่มีเส้นในรูปแบบนั้น แต่ที่ไม่ได้ที่มีลักษณะการใช้งานที่กำหนดไว้ อีกคำพูดสอดมี หากคุณกำลังเรียกเปลือกคุณสามารถเรียกว่าเป็นย่อยเปลือกหอยที่มีอยู่ของคุณ ดังนั้นถ้าผมไปที่นี่ให้ได้รับการกำจัดสิ่งเหล่านี้ ที่นี่ฉันอยู่ใน C-เปลือก ตัวแปรที่ซึ่งถูกระบุเปลือกของฉัน จริงไม่ได้เสมอวิธีที่เชื่อถือได้ของการกำหนดสิ่งที่เปลือกคุณกำลังทำงาน แต่ในกรณีนี้มันเป็น ถ้าฉันเพียงแค่พิมพ์ - ตอนนี้ฉันอยู่ในทุบตี บางสิ่งบางอย่างเป็นไปได้เหมือนกัน คำสั่ง ls บอกฉันคำสั่งของฉัน ถ้าฉันไม่ระงับการกลับไปของฉัน C-เปลือกคำสั่ง ls เดียวกัน ใช่มั้ย? FG, เบื้องหน้ากลับไปที่เปลือกทุบตีฉัน pwd, ไดเรกทอรีปัจจุบันกลับไปที่ C-เปลือก pwd ที่แตกต่างกันไดเรกทอรี - จริงไม่ไดเรกทอรีที่แตกต่างกันในกรณีนี้ มันเป็นไดเรกทอรีเดียวกัน สมมติว่าผมต้องการที่จะเรียกคำสั่งที่นี่: คำสั่ง ls ที่ สิ่งที่จะทำอย่างไร มันบอกฉันที่คำสั่ง ls, อย่างใดอย่างหนึ่งที่ทำให้ผมมีรายชื่อไดเรกทอรีที่ตั้งอยู่ในคำสั่ง ls ลองกลับไปทุบตีเปลือก ลองในสิ่งเดียวกัน อืมน่าสนใจมีที่: คำสั่งไม่พบ ทำไมจึงเป็นเช่นนั้น คำสั่งที่สร้างขึ้นใน C-เปลือก นี้ไม่ได้เป็นคำสั่งที่จะต้องมีการอ่านได้ในหน่วยความจำจากที่อื่นและดำเนินการ C-เปลือกมันทำงานโดยการถ่ายโอนการดำเนินการบางส่วนของรหัสของตัวเอง และมันก็ไม่ได้อยู่ในเปลือกทุบตี ดังนั้นที่เตะไม่ได้มีเช่นในตัวคำสั่งจะมองหามันไม่พบมัน และเราได้รับข้อผิดพลาด จึงมีเรามีเปลือกทุบตีทำงานภายใต้ C-เปลือกและที่เราเรียกว่าย่อยเปลือก และในกรณีที่คุณอยากรู้ทุบตีเปลือกมีวิธีการของตัวเองในตำแหน่งคำสั่ง hashed หมายถึงความจริงที่ว่ามันสามารถที่จะดำเนินการมากขึ้นอย่างรวดเร็วที่ ถูกพบมากขึ้นอย่างรวดเร็ว ที่หนึ่งของการปรับปรุงที่สร้างขึ้นในบางส่วนของเปลือกหอยเหล่านี้ บอร์นประเภทเปลือกหอยเป็นที่ต้องการสำหรับการเขียนโปรแกรม พวกเขามีโครงสร้างการควบคุมลูปเช่นงบเงื่อนไข การเรียงลำดับของคำสั่งที่คุณอาจใช้ในการเขียนโปรแกรมภาษาเช่น C หรือสิ่งที่ภาษา บางทีคุณอาจจะเขียนโปรแกรมใน Java หรืออะไรก็ตาม เปลือกหอยมีบรรดาเกินไป เปลือกหอยบอร์นชนิดโดยเฉพาะอย่างยิ่งที่เตะมีมากขึ้น และพวกเขาได้รับการออกแบบที่มีความยืดหยุ่นมากขึ้น ทุบตีเปลือกมีอาร์เรย์ เปลือก Bourne เดิมไม่ได้ เพื่อให้สามารถเป็นประโยชน์อย่างมากสำหรับการเขียนโปรแกรม C-เปลือกไม่จริงมีอาร์เรย์ แต่ไม่ได้มีจำนวนมากของคุณสมบัติอื่น ๆ เหล่านี้ เปลือกหอยบอร์นประเภทจะดำเนินการได้เร็วขึ้น หากพวกเขาไม่ได้มีคุณสมบัติที่มีไว้สำหรับการใช้งานแบบโต้ตอบ สิ่งที่คุณโหลดลงเพื่อวัตถุประสงค์อย่างใดอย่างหนึ่งนี้จะโหลดพวกเขาลงเพื่อวัตถุประสงค์อื่น ที่มีการปิดอยู่ที่นั่น คุณสมบัติผู้ที่มีไว้สำหรับการใช้งานแบบโต้ตอบ จริงๆมีการใช้งานน้อยหรือไม่มีเลยสำหรับการเขียนสคริปต์ มันเป็นไปได้ที่จะใช้โต้ตอบย่อยเปลือกเช่นเดียวกับคนที่ผมเริ่มมี ในการทดสอบคำสั่งที่คุณตั้งใจจะใช้ในสคริปต์ นั่นคือสิ่งที่คุณไม่สามารถทำอะไรกับของ Perl คุณสามารถทำมันด้วยเปลือกหอย แม้โครงสร้างเช่นลูปและอื่น ๆ สามารถทำงานโต้ตอบ บางครั้งพวกเขาจะมีประโยชน์ในการทำงานโต้ตอบ แต่มีโอกาสมากขึ้นที่คุณกำลังใช้พวกเขาในการพัฒนาสคริปต์ นามแฝง นี้เป็นไปได้เกี่ยวกับ C-เปลือก กลไกประวัติความเป็นมาที่คุณได้รับกลับไปที่คำสั่งก่อนหน้านี้ หรือบางส่วนของพวกเขาว่าคุณได้ใช้อยู่แล้ว อีกครั้งเกี่ยวกับ C-เปลือกบอร์นเชลล์และเปลือกกรมีสิ่งเหล่านี้ แต่ผมไม่ได้ไปที่จะได้รับในพวกเขา ดังนั้นนี่คือบางส่วนนามแฝงที่มีประโยชน์ที่ฉันมี แทนการพิมพ์คำสั่ง ls - มันเป็นคำสั่งที่เหมือนกัน - เพียงพิมพ์ลิตรและช่วยตัวเอง 1 ตัวอักษร คำสั่ง ls กับตัวเลือกต่างๆทำงานทั้งหมดเหล่านั้น โปรดทราบว่าคำจำกัดความของคำพูดเหล่านั้นมีรอบตัวพวกเขา ในกรณีนี้คำพูดที่ไม่จำเป็น หากคุณสามารถกำหนดชื่อแทนผู้ที่ไม่ทราบราคาก็จะยังคงทำงาน พวกเขาจะแนะนำ มีสถานการณ์ที่คุณไม่สามารถใช้อ้างเป็น เพราะคุณต้องการบางสิ่งบางอย่างที่จะเกิดขึ้นซึ่งอ้างจะป้องกันไม่ให้ บางครั้งคุณสามารถเสนอราคาที่เป็นส่วนหนึ่งของความหมาย แต่ไม่ทั้งหมดของมัน ก็ยังแนะนำโดยทั่วไปจะใช้คำพูดเดียวมากกว่าคำพูดสอง ราคาคู่มีผลต่อคำนิยามตัวแปร โดยเฉพาะอย่างยิ่งทำให้พวกเขาได้รับการประเมินมากกว่าหยุด ทำไมเราต้องการที่จะหยุดการประเมินผลหรือไม่ คำพูดและวิธีการที่จะทำเช่นนั้นสำหรับเรา ที่นี่คำสั่งที่คุณอาจพบที่น่าสนใจคือ 'คำสั่ง ls กรัม *' กรัม *, ในขณะที่คุณอาจจะรู้ว่าเป็นตัวแทนการแสดงออก สำหรับชื่อไฟล์ที่ขึ้นต้นด้วยกรัม ถ้าฉันเพียงแค่เขียนในคำสั่ง ls คำสั่งกรัม *, ฉันจะได้รับรายชื่อของทุกคนในไดเรกทอรีปัจจุบันของฉัน ถ้าผมกำหนดนามแฝงว่ามันอยู่ที่นี่ด้วยคำพูดที่ มันจะเรียกใช้คำสั่งที่อยู่ในไดเรกทอรีปัจจุบันของคุณที่คุณกำลังใช้งานมัน แต่ถ้าคุณใช้ความหมายของนามแฝงไม่ทราบราคา มันจะประเมินตัวแทนกรัม * เมื่อทำงานกำหนดคำสั่งนี้ ดังนั้นความหมายของการนามแฝงจะถูกคำสั่ง ls ตามด้วยรายการของไฟล์ในไดเรกทอรี ซึ่งในคำสั่งนามแฝงจะดำเนินการ โดยไม่คำนึงถึงที่คุณจริงตั้งใจที่จะเรียกใช้คำสั่ง นี้ไม่ได้ในการใช้งานมากและราคาเดียวป้องกันการประเมินผลของเครื่องหมายดอกจัน ดังนั้นคุณก็จะได้รับความหมายของคำสั่ง ls เป็นกรัม * จากนั้นเมื่อคุณเรียกใช้นามแฝง lgs มันก็ทำให้เห็นว่า ขณะนี้มีคำพูดที่ไม่ได้และมันจะประเมินเครื่องหมายดอกจันเมื่อคุณเรียกใช้คำสั่งนามแฝง เพื่อให้เป็นสิ่งหนึ่งที่ คำพูดสองจะมีผลกระทบเหมือนกันที่นี่ แต่มีกรณีอื่น ๆ ที่ราคาคู่จะไม่ทำงานให้ดี นี่คืออีกหนึ่ง คุณอาจจะรู้ว่าคำสั่ง grep grep คำสั่งที่สามารถใช้ในการสแกนไฟล์สำหรับสายที่มีสายบาง ดังนั้นขอไปกว่าที่นี่และฉันจะออกจากบอร์นเชลล์ของฉัน ถูก นี่เป็นไฟล์ ขอบอกว่ามันเป็นสตริง abc grep มีเป็น ถ้าผมทำ zddd grep ผมได้รับอะไร ถูก ดังนั้นจึงพบว่าสตริงจะรายงานก็ไม่พบก็ไม่ได้แจ้ง มันออกสายที่มีสตริงที่เกี่ยวกับเรื่องใด มีทุกประเภทของตัวเลือกที่นี่ซึ่งคุณจะพบในเอกสารที่มี นี่เป็นวิธีหนึ่งที่จะทำมัน สิ่งที่เกี่ยวกับคนนี้นามแฝง grabc 'grep abc'? ที่จะรวมถึงข้อโต้แย้งที่ 1 เมื่อนามแฝงที่กำหนดไว้ ดังนั้นถ้าผมทำที่นี่ตอนนี้ถ้าผมทำ grabc, ตอนนี้นามแฝงรวมกว่าคำสั่งง่ายๆ นอกจากนี้ยังมีการโต้แย้ง เพื่อให้ห่างไกลที่ทำงาน ฉันมีคำสั่งอื่นที่นี่หนึ่งนี้เพื่อให้ผู้ที่มีสายที่แตกต่างกันในนั้น และแสดงให้เห็นว่านี้ไม่ได้พบสิ่งที่มีตั้งแต่มันไม่ตรงกับ หากฉันต้องการให้รวมอยู่ในความหมายของชื่อไฟล์ที่ฉันจะค้นหา และฉันต้องการที่จะให้เป็นอาร์กิวเมนต์นามแฝงสตริงที่ฉันกำลังมองหา? ฉันอาจต้องการที่จะบอกว่า abc เป็นอาร์กิวเมนต์นามแฝงของฉัน แต่นามแฝงกำหนดไฟล์ที่มีอยู่แล้ว และนั่นคือสิ่งที่แสดงออกมานี้ ขอให้สังเกตที่นี่เรามี grep เช่นเดียวกับก่อนที่จะ เรามีไฟล์ที่นี่สตริง \ ^ ชนิดของการแสดงออกแปลกผมคิดว่าถ้าคุณยังไม่เคยเห็นแบบนี้มาก่อน เครื่องหมายอัศเจรีย์เป็นส่วนหนึ่งของกลไกประวัติศาสตร์ C-เปลือก มันสามารถจำคำสั่งก่อนหน้านี้ก็สามารถเรียกคืนการขัดแย้งกับคำสั่งดังกล่าวและอื่น ๆ กลไกประวัติศาสตร์ถูกนำมาใช้เป็นส่วนหนึ่งของ aliasing ถ้าคุณระบุเส้นหลังเครื่องหมายอัศเจรีย์ก็จะอ้างถึงบรรทัดที่อยู่ในรายชื่อประวัติศาสตร์ ซึ่งเราจะไม่ได้รับในตอนนี้เพราะมันเป็นเรื่องอื่น ๆ ทั้งหมด มันเป็นไปได้ที่จะระบุส่วนหนึ่งของสาย ดังนั้น 03:02 จะเป็นอาร์กิวเมนต์ที่สองของจำนวนคำสั่งที่ 3 ตกที่นี่ในการแสดงออกนี้ย่อมาจากอาร์กิวเมนต์แรก หากคุณไม่ได้ให้ข้อบ่งชี้ของคำสั่งที่คุณหมายถึง มันหมายถึงคำสั่งก่อนหน้าได้ทันทีที่ และเครื่องหมายเป็นสัญลักษณ์สำหรับอาร์กิวเมนต์แรก เพราะมันเป็นเครื่องหมายและไม่หมายเลขที่คุณไม่จำเป็นต้องใช้ลำไส้ใหญ่ เลย ^ หมายถึงอาร์กิวเมนต์แรกที่คำสั่งก่อนหน้า น้อยผสมขึ้นที่นี่ ในกรณีนี้เมื่อคุณใช้นี้เป็นความหมายของนามแฝง อ้างอิงประวัติศาสตร์หมายถึงกลับไปที่คำสั่งในนามแฝงที่จะใช้ ดังนั้นนี้จะกลับ 1 คำสั่งการดำเนินการประวัติศาสตร์ แต่การดำเนินการนามแฝงมันหมายถึงคำสั่งในการที่คุณจะพิมพ์ที่ พูด grstrings_file เรามีคำพูดที่นี่อยู่ในนั้น อะไรทับขวาหาใช่หรือไม่ ในกรณีนี้เป็นที่อื่นที่เราไม่ต้องการที่จะดำเนินการกลไกประวัติศาสตร์ ขณะที่การกำหนดนามแฝง ถ้าเราไม่ได้มีเครื่องหมายมีเปลือกจะดึงในอาร์กิวเมนต์แรก ของคำสั่งที่ถูกต้องก่อนที่จะวิ่งนามแฝงคำสั่งนี้ซึ่งเราไม่ต้องการ เราอยากให้เรื่องนี้ถูกสร้างขึ้นในคำสั่งนามแฝงที่จะเรียกในการโต้แย้งในภายหลัง ราคาเดียวไม่ได้หลบหนีเครื่องหมายอัศเจรีย์อ้างอิงประวัติศาสตร์ บางทีคุณอาจจะรู้ว่าการหลบหนีการแสดงออกหมายถึงการเปลี่ยนความหมายของบางสิ่งบางอย่าง ในกรณีนี้มันหมายถึงบางสิ่งบางอย่างที่จะหยุดจากการที่มีความหมายพิเศษ ความหมายพิเศษเครื่องหมายอัศเจรีย์เป็นประวัติศาสตร์ หลบหนีและก็ไม่ได้มีความหมายว่า คำพูดไม่ได้ทำนั้นไม่ทับขวา ดังนั้นเราจริงโดยใช้ 2 ระดับของหนีที่นี่ ฉันจะย้ายคำสั่งนี้ลงในหน้าต่างอื่น ๆ ได้โดยไม่ต้องพิมพ์ โดยใช้การดำเนินการแก้ไขเหล่านี้ซึ่งคุณอาจพบว่ามีประโยชน์ อย่างอื่นที่นี่ฉันจะแสดงให้คุณ หากคุณเพียงแค่พิมพ์นามแฝงที่ไม่มีการขัดแย้งมันจะบอกคุณทุกข้อโต้แย้งของคุณ นี้เป็นพวงของชื่อแทนฉันแล้วมีที่นี่ นอกเหนือจากการที่ฉันได้ใช้ที่นี่ในวันนี้ แต่ถ้าฉันเพียงแค่พิมพ์ชื่อของนามแฝงก็บอกฉันว่ามันหมายถึง ขอให้สังเกตว่าคำพูดที่จะหายไปและทับขวาหายไป สายนี้ที่นี่เป็นผลมาจากความหมายของชื่อนั้น และตอนนี้ก็มีเพียง ^ ในนั้น นี้จะไปดูในสตริงแฟ้มสำหรับอะไร ดังนั้นถ้าผมทำสาย grstrings_file ผมไม่ได้ให้อะไรที่จะมองหาที่นั่น แต่มองในสตริง มันไม่ได้หาสตริงคำในสตริงแฟ้ม แต่ก็ไม่พบ abc และไม่พบว่า ดังนั้นที่นี่เราจะให้โต้แย้งที่นิยมในความหมายของการนามแฝง, ที่แทรกเข้ามาได้ มันคือสิ่งที่แสดงออกนี้มาจาก คุณสามารถใช้มากกว่า 1 เครื่องหมายเป็นสัญลักษณ์สำหรับอาร์กิวเมนต์แรก หากคุณต้องการที่จะใช้อาร์กิวเมนต์ที่สองแล้วคุณจะกล่าวว่า 2 ไม่มีสัญลักษณ์พิเศษสำหรับอาร์กิวเมนต์ที่สองเป็น และเนื่องจากคุณกำลังใช้ตัวเลขคุณจะต้องใช้ลำไส้ใหญ่ มี แต่ทางเลือกอื่นที่นี่ เครื่องหมายดอลลาร์ยืนสำหรับอาร์กิวเมนต์ที่ผ่านมา และเพราะเป็นสัญลักษณ์ที่คุณสามารถตัดลำไส้ใหญ่ ดังนั้นมันจะเป็นเรื่องสุดท้ายในรายการ และนอกจากนี้ยังมีสิ่งหนึ่งที่ Asterisk หมายความว่าทุกคนดังนั้นนี่คือรายการอาร์กิวเมนต์ที่สมบูรณ์ และอีกครั้งคุณสามารถตัดลำไส้ใหญ่เพราะไม่ตัวเลข ฉันหวังว่าคุณกำลังทั้งหมดการสังเกตทั้งหมดนี้ กลไกประวัติสามารถกลับไปก่อนหน้านี้สายไปในรายการประวัติ คุณสามารถทำเช่นนี้ในความหมายของชื่อ ฉันไม่เคยเห็นนี้ทำ มันจะมีผลต่อการดึงออกคำสั่งก่อนหน้านี้จากรายการประวัติ เมื่อคุณรันนามแฝงซึ่งอาจจะเป็นคำสั่งที่แตกต่างกัน ขึ้นอยู่กับเวลาและสถานที่ที่คุณรันมัน น่ากลัวที่คุณอาจต้องการที่จะดึงออกดังกล่าวอ้างอิง เพียงเพื่อให้รู้ว่าสิ่งที่คำสั่งก่อนหน้านี้เป็น ฉันไม่เคยเห็นสิ่งนี้เกิดขึ้น ฉันคิดว่าบางคนอาจต้องการที่จะ แต่นี้ไม่น่ามาก มีสิ่งอื่นที่นี่ ถ้าคุณใช้ที่อ้างอิงประวัติศาสตร์ชนิด แล้วเท่านั้นข้อโต้แย้งที่มีเช่นการอ้างอิงที่มีการใช้ หากคุณมีความหมายของชื่อที่ไม่ได้ใช้การอ้างอิงประวัติศาสตร์ชนิด ถ้ามันก็จะกลายเป็นจุดเริ่มต้นของคำสั่ง และคุณมีข้อโต้แย้งต่อไปแล้วสิ่งที่คุณพิมพ์ลงหลังจากนั้น จะถูกเพิ่มลงในคำสั่ง ในกรณีนี้เช่นฉันมีเพียงแค่ให้เราใช้อาร์กิวเมนต์แรก; เราไม่ได้ใช้คนอื่น ๆ ถ้าอาร์กิวเมนต์อื่น ๆ ที่ได้รับในบรรทัดคำสั่งพวกเขาจะไม่ถูกนำมาใช้ ดังนั้นถ้าคุณใช้การอ้างอิงประวัติศาสตร์ที่ทั้งหมดแล้วคุณต้องใช้มันจะได้รับการโต้แย้งใด ๆ มีสิ่งอื่นที่นี่ผมแค่อยากจะพูดถึงส่วนที่สอด, คือว่ากลไกประวัติศาสตร์นี้กับเครื่องหมายอัศเจรีย์ ไปกลับไปที่เดิม C-เปลือก tcsh แนะนำการดำเนินงานประวัติศาสตร์ ซึ่งใช้ประเภทของคำสั่งและสตริงจากบรรณาธิการที่ อย่างใดอย่างหนึ่งหรือ Emacs vi ความเห็นส่วนตัวของฉันคือแม็คเป็นเรื่องง่ายที่จะใช้เพื่อการนี​​้ แม้ว่าคุณจะใช้สำหรับการแก้ไข vi ปกติของคุณ มีคำสั่ง Emacs ต่างๆที่จะปรับตอนนี้สำหรับประวัติความเป็นมาเป็น ควบคุม P ได้รับสายก่อนหน้าในรายการประวัติ อีกประการหนึ่งการควบคุม P คุณจะได้รับอย่างใดอย่างหนึ่งก่อนที่ ลูกศรขึ้นจะเป็นสิ่งเดียวกัน ยังไม่มีการควบคุมได้รับคำสั่งต่อไปถ้าคุณได้เลื่อนแล้วกลับวิธีการบางอย่าง ลูกศรลงไม่ว่าเกินไป คุณสามารถเลื่อนไปทางซ้ายไปทางขวาที่มีลูกศรและสิ่งอื่น ๆ นี้สามารถทำให้การใช้งานของกลไกประวัติศาสตร์ ง่ายกว่าการใช้ไวยากรณ์เครื่องหมายอัศเจรีย์, แต่คุณจะไม่ได้ใช้ในการกำหนดนามแฝง เราจะไปกว่าที่อื่น ๆ บางครั้ง ตัวแปร คุณจะรู้ว่าสิ่งที่เป็นตัวแปรในการเขียนโปรแกรมภาษา เปลือกหอยมีพวกเขายัง C-เปลือกใช้คำสั่งที่กำหนดไว้ในการกำหนดตัวแปร เพื่อที่จะกำหนดตัวแปรเพื่อให้มีค่าของ b - ที่ผมกล่าวว่าคำนิยามที่ไร้ประโยชน์ แต่ภาพของวิธีการนี​​้จะใช้ คำสั่งชุดจะสร้างตัวแปรถ้ามันไม่ได้อยู่แล้ว พารามิเตอร์ตำแหน่งสคริปต์เปลือกสามารถพิจารณาตัวแปร แต่การใช้งานของพวกเขาและกฎระเบียบสำหรับพวกเขามีความแตกต่างกันบ้าง คุณไม่สามารถกำหนดค่าถึง $ 1 ในหลักสูตรของสคริปต์ คุณจะต้องกำหนดตัวแปรใหม่เพื่อวัตถุประสงค์ที่ว่าบางส่วนของคุณต้องการ พิมพ์การตั้งค่าที่ไม่มีการขัดแย้งและคุณได้รับรายชื่อของทุกตัวแปรที่กำหนดไว้ในปัจจุบัน และให้ของได้รับไปยังเปลือกอื่น ๆ ของฉันที่นี่และดูสิ่งที่เราได้รับถ้าเราทำอย่างนั้น ค่อนข้างมีรายชื่อยาวใช่มั้ย? เลื่อนขึ้นนิด ๆ หน่อย ๆ ดูทั้งหมดที่ บางส่วนของสิ่งเหล่านี้จะถูกกำหนดโดยอัตโนมัติโดยเปลือก เปลือกสร้างตัวแปรและให้มันค่า บางส่วนของพวกเขาจะถูกกำหนดโดยเปลือก แต่แล้วนิยามใหม่โดยผู้ใช้ ตามความต้องการของเขา และบางส่วนของพวกเขาจะถูกสร้างขึ้นโดยผู้ใช้ขึ้นอยู่กับสิ่งที่เขาทำในวันนั้น ที่มีการตั้งค่าเพียงกับการขัดแย้งใด มีคุณสมบัติที่แปลกที่นี่ของสิ่งนี้เป็น มีต้องเป็นได้ทั้งช่องว่างระหว่างเครื่องหมายเท่ากับและชื่อตัวแปรไม่ และคุณค่าหรือช่องว่างทั้งสองด้านของเท่ากับ, เป็นหนึ่งในนี้ นี้จะไม่ทำงานและนี้จริงเป็นคำสั่งที่ถูกต้อง แต่จะไม่ทำในสิ่งที่คุณตั้งใจ คำสั่งที่จะทำงานเพราะถ้าคุณเพียงแค่พูดและตั้งชื่อตัวแปร ที่ไม่มีเครื่องหมายเท่ากับหรือตั้งและชื่อตัวแปรด้วยเครื่องหมายเท่ากับลงและไม่มีค่า มันจะตั้งค่าตัวแปรให้เป็นค่า null กำหนดให้ a = เป็นคำสั่งที่ถูกต้อง คำสั่งชุดสามารถกำหนดได้มากกว่า 1 ตัวแปรในบรรทัดเดียวกัน ดังนั้นคำสั่งนี้ที่นี่มีผลกระทบของการกำหนดทั้ง a และ b เป็นโมฆะค่า อาจจะไม่ได้สิ่งที่คุณต้องการ ที่นี่นี้กล่าวก่อนหน้านี้จะนำไปสู่​​ข้อผิดพลาด เพราะ = b ไม่ได้แสดงออกที่ถูกต้อง ชื่อตัวแปรไม่สามารถเริ่มต้นด้วยเครื่องหมายเท่ากับ และมีสิ่งที่เพิ่มเติมเหล่านี้อยู่ที่นี่ จุดคู่ถูกนำมาใช้เพื่อเลือกข้อโต้แย้งจากสายประวัติศาสตร์ และพวกเขาสามารถนำมาใช้ - และฉันไม่ได้ไปเป็นมาก่อน - การปรับเปลี่ยนสิ่งเหล่านั้น นอกจากนี้ยังสามารถนำมาใช้เพื่อแก้ไขตัวแปรเปลือก ที่นี่นี้ $ a มีค่า : r จะปิดนามสกุล ขยายจะเป็นอะไรต่อไปจุดที่ จุดและสิ่งต่อไปนี้ไว้ที่ส่วนท้ายของแฟ้มที่ เพียง แต่ในตอนท้ายของรายการหลังจากเฉือนสุดท้าย ดังนั้นผมจึงมีได้ที่นี่ คือการที่ มันจะลดลง. o ถ้าไม่มีการขยายเพียง pathnames หลังจากเฉือนสุดท้ายก็จะไม่มีผล : ชั่วโมงว่าการแสดงออกตัวแปรจะปิดองค์ประกอบสุดท้ายของรายการไดเรกทอรี อีกครั้งหลังจากที่ผ่านมาเฉือน ดังนั้น / / b / C จะกลายเป็น / / b, แต่อันนี้จะเปลี่ยนเพราะองค์ประกอบหลังจากรายการเป็นโมฆะ ที่นี่มีสิ่งที่ฉันยังต้องการที่จะเน้น บ่นเหล่านี้จะไม่ค้นหาสำหรับการดำรงอยู่ของไฟล์เหล่านี้ พวกเขาเพียงแค่มองหาสตริง เหล่านี้มีวัตถุประสงค์ที่จะจัดการกับชื่อไฟล์ pathnames, แต่พวกเขาสามารถใช้กับสตริงใด ๆ แม้ว่าจะไม่ได้ชื่อไฟล์ และพวกเขาไม่ได้มองหาการดำรงอยู่ ดังนั้นหากไม่มีไฟล์ดังกล่าว / / b / C นี้จะยังคงทำงาน ไม่ว่าจะเป็นในการใช้งานใด ๆ ที่เป็นคำถามอื่น แต่ก็จะยังคงทำงาน ตัวแปรที่มีความแตกต่างกันในเปลือกหอยบอร์น เราจะได้รับในภายหลังว่า เครื่องหมายดอลลาร์สามารถหนีออกมาเช่นเดียวกับเครื่องหมายอัศเจรีย์และเครื่องหมายดอกจัน เครื่องหมายดอลลาร์สามารถหนีด้วยเครื่องหมายหรือราคาเดียว ราคาคู่มีผลแปลกในเปลือกหอยทั้งหมด ของการประเมินผลการบังคับของเงินดอลลาร์เข้าสู่ระบบการแสดงออกตัวแปร ดังนั้นถ้ามันถูกหนีวิธีหนึ่งคำพูดสองสามารถมีผล ของทำให้มันได้รับการประเมินแล้ว นี้เป็นสับสนเล็กน้อย หากมีหลายระดับของการหนีเช่นราคาเดียวในคำพูดสอง หรือคำพูดสองในราคาเดียวที่คุณควรทดสอบเพื่อดูสิ่งที่จะเกิดขึ้น ให้กับตัวแปรถ้าคุณกำลังใช้อย่างใดอย่างหนึ่ง ที่ 2 สถานการณ์ - ภายในคู่เดียวภายในเดียวของสอง - ไม่จำเป็นต้องให้ผลเดียวกัน ตัวแปรสภาพแวดล้อมที่มุ่งตัวแปร C-เปลือก ตัวแปรสภาพแวดล้อมนอกจากนี้ยังมีตัวแปรใน C-เปลือก และพวกเขายังมีตัวแปรในเปลือกหอยอื่น ๆ ด้วย ใน C-เปลือกพวกเขามีชุดที่แตกต่าง สิ่งที่ผมบอกว่าก่อนที่จะมีเกี่ยวกับตัวแปรเปลือก ตัวแปรสภาพแวดล้อมที่มีการตั้งค่าที่แตกต่างกันของตัวแปร มีข้อยกเว้นของหลายตัวแปรที่เราเรียกตัวแปรที่ถูกผูกไว้ ซึ่งมีความสำคัญมากและเราจะได้รับเป็นเหล่านั้นในภายหลัง ตัวแปรสภาพแวดล้อมที่ถูกส่งผ่านโดยอัตโนมัติ กับเปลือกหอยหรือคำสั่งที่ถูกเรียกใช้จากเปลือกของคุณ สิ่งอื่น ๆ ที่ไม่ได้ ตัวแปรเปลือกแทนไม่ได้ ตัวแปรสภาพแวดล้อมที่เป็น นั่นเป็นเหตุผลที่เราเรียกว่าตัวแปรสภาพแวดล้อม ความคิดที่ว่าสภาพแวดล้อมที่ผ่านมาขยายเพียงเปลือกปัจจุบันของคุณ พวกเขาสามารถใช้ในการกำหนดสิ่งที่คำสั่ง นี่คือตัวอย่าง PRINTER, LPDEST ทั้งสองตัวแปรเหล่านั้นสามารถกำหนดเครื่องพิมพ์ที่คำสั่งจะใช้ในการพิมพ์สิ่งที่ หากคุณมีเครื่องพิมพ์หลายรอบคุณอาจต้องการที่จะทำให้คนที่คุณชอบ เหตุผลที่เรามี 2 ตัวแปรคือชุดที่แตกต่างของคำสั่งที่ถูกเขียนขึ้น ใช้ตัวแปรที่แตกต่างกันเหล่านี้ คุณอาจจะให้พวกเขามีค่าที่แตกต่างกัน ส่วนใหญ่มีแนวโน้มที่คุณจะให้พวกเขาทั้งสองค่าเดียวกัน สิ่งเหล่านั้นทำงานได้เนื่องจากคำสั่งที่ทำพิมพ์ มีโปรแกรมที่จะตรวจสอบค่าของตัวแปรเหล่านี้ หากโปรแกรมไม่ได้เขียนวิธีการที่ถ้ามันถูกเขียนไปทำอย่างอื่น ตัวแปรจะเป็นที่ไม่เกี่ยวข้อง ดังนั้นระบบปฏิบัติการที่ไม่ได้มองหาตัวแปรเหล่านี้ ทุกครั้งที่คุณอ้างถึงเครื่องพิมพ์ทุก คำสั่งที่ไม่พิมพ์กำลังมองหาตัวแปรเหล่านี้ถ้าเป็นโปรแกรมที่ทาง ตัวแปรเหล่านี้มักจะถูกกำหนดไว้ในไฟล์เริ่มต้นของคุณ แต่ไม่จำเป็นต้อง คุณสามารถกำหนดให้ในบรรทัดคำสั่ง พวกเขาอาจจะกำหนดไว้ในคำสั่ง คำสั่งที่ทำงานบางอย่างอาจจะมีการเลือกของตัวเองของตัวแปร - ตัวแปรที่เป็นเอกลักษณ์ของแพคเกจซอฟต์แวร์โดยเฉพาะอย่างยิ่งเช่น พวกเขาจะถูกกำหนดไว้เมื่อคุณเรียกใช้แพคเกจที่ วิธีการที่ตัวแปรเหล่านี้ส่งผ่านไปยังย่อยเปลือก? เมื่อย่อยเปลือกที่เขียนก็ไม่ได้เขียนลงไปในพื้นที่ที่ พื้นที่ย่อยเปลือกที่จะอุทิศให้กับตัวแปรสภาพแวดล้อม ไม่ได้เขียนโดยย่อยเปลือกมันเขียนโดยการคัดลอก เมื่อคุณเรียกใช้คำสั่งธรรมดาเช่นคำสั่งเหล่านี้จะพิมพ์หรืออะไรก็ตาม พวกเขาเริ่มต้นด้วยการสร้างเปลือกใหม่ เปลือกสร้างเปลือกแล้วเขียนทับส่วนหนึ่งของมัน ด้วยคำสั่งที่คุณกำลังใช้งานซึ่งเป็นความสับสนเล็กน้อย แต่นั่นคือวิธีที่คำสั่งเหล่านี้ได้รับตัวแปรสภาพแวดล้อม ที่พวกเขาอ้างถึงในภายหลัง คำสั่งที่นี่สำหรับการกำหนด setenv ตัวแปร นั่นเป็นวิธีที่คุณกำหนดมัน มันเป็น 3 องค์ประกอบ: setenv ตัวแปรค่า หากคุณเพียงแค่ไม่ setenv ไม่มีข้อโต้แย้งสิ่งที่คุณได้รับ รายการทั้งหมดของตัวแปรเหล่านั้น อีกครั้งมันเป็นรายการยาวที่ดีและในกรณีนี้เช่นเดียวกับในคนอื่น ๆ ตัวแปรเหล่านี้จะถูกกำหนดโดยส่วนใหญ่การดำเนินการเข้าสู่ระบบของฉันโดยเปลือกตัวเอง มากกว่าโดยสิ่งที่ฉันทำ มีคำสั่งอื่นที่นี่ printenv เป็น ที่ยังพิมพ์ออกสิ่งแวดล้อม แจ้งให้ทราบนี้สิ่งสุดท้ายที่นี่ EDITOR = vi ที่บอกว่าถ้าฉันใช้สิ่งที่เรียกว่าการแก้ไข และผมก็ไม่ได้ระบุการแก้ไขและมันช่วยให้ฉันเลือกมันอาจให้ฉัน vi ถ้าฉันทำ EDITOR printenv? มันบอกฉันว่ามันคืออะไร ขวาก่อนที่มีตัวแปรน้อย เหล่านี้เป็นตัวเลือกค่าเริ่มต้นของคุณเมื่อฉันเรียกใช้คำสั่งน้อยลง ซึ่งจะแสดงไฟล์ ดังนั้นถ้าผมทำอย่างนั้น printenv สามารถใช้เวลา 1 หรือ 0 อาร์กิวเมนต์ขัดแย้ง ไม่เกิน 1 มีคำสั่งอื่น ๆ นอกจากนี้ยังมี แต่เราจะไม่ได้รับในสิ่งที่วันนี้ โปรดจำไว้ว่ามีการปรับเปลี่ยนสำหรับตัวแปรเปลือกเช่น: เอช ซึ่งจะวางองค์ประกอบสุดท้ายของชื่อพา ธ , หรือ: r ซึ่งจะลดลงส่วนขยาย ตอนนี้ผู้ที่นำไปใช้กับตัวแปรสภาพแวดล้อมเกินไป พวกเขาไม่ได้ใช้ในการ จะใช้เป็นที่พวกเขาไม่สามารถได้รับการแก้ไข ตอนนี้พวกเขาสามารถ มันเป็นหนึ่งในความก้าวหน้ากับการพัฒนาของเปลือกหอยในช่วงหลายปี ผมก็บอกว่าเปลือกหอยเป็นส่วนหนึ่งของสภาพแวดล้อม และตัวแปรเปลือกใน C-เปลือกจะมีข้อยกเว้นบางชุดที่แตกต่าง คุณสามารถสร้างตัวแปรสภาพแวดล้อมและตัวแปรเปลือกที่มีชื่อเดียวกัน พวกเขาจะเป็นตัวแปรที่แตกต่างกันที่พวกเขาสามารถมีค่าที่แตกต่างกัน การเปลี่ยนค่าของคนที่จะไม่เปลี่ยนค่าของอื่น ๆ ตัวแปรเหล่านี้ได้รับการประเมินทั้งหมดที่มีเครื่องหมายดอลลาร์ - $ $ สิ่งที่ ดังนั้นสิ่งที่ถ้าคุณมีนี้ คุณรู้หรือไม่ว่าคนที่คุณได้รับ ในการทดสอบของฉันฉันได้ตัวแปรเปลือก แต่นี้ไม่ได้มีการบันทึกไว้และคุณไม่สามารถพึ่งพาที่ ดังนั้นผมจึงขอให้คุณคือการสร้างเปลือกและตัวแปรสภาพแวดล้อม มีชื่อเดียวกันความคิดที่ดี เลขที่โอเค สิ่งที่เป็นข้อยกเว้นที่สำคัญผู้ที่อยู่ในสภาพแวดล้อมและตัวแปรเปลือก ที่เชื่อมโยงกับแต่ละอื่น มี 4 เหล่านี้เป็น อักษรตัวใหญ่ตัวแปรสภาพแวดล้อมระยะ, เปลือกระยะตัวแปรในตัวอักษรขนาดเล็กประเภทของการแข่งขันมินัล ฉันแค่จะไปกว่าที่นี่และฉันจะทำสะท้อนคำสั่งที่มีประโยชน์ที่นี่ ระยะ $ $ term และมี xterm เป็นประเภทอาคารหน้าต่างที่แสดงในระบบวินโดว์ xterm สีเป็นรูปแบบของว่าที่ช่วยให้สีที่แตกต่างกัน เราจะกำหนดว่าทำไมเหล่านี้หรือไม่ สิ่งนี้เป็นสิ่งที่ดีสำหรับ คำสั่งที่จัดเรียงหน้าจอเช่นบรรณาธิการ ส่งลำดับโดยเฉพาะอย่างยิ่งที่เรียกว่าลำดับการหลบหนี ไปยังสถานีหรือหน้าต่างเพื่อจัดเรียงมันและอื่น ๆ ลำดับเหล่านี้จะแตกต่างกันสำหรับประเภทที่แตกต่างกันของอาคาร นี้จะบอกว่าคนที่จะใช้ บางครั้งมีปัญหามี คุณอาจต้องการที่จะเปลี่ยนที่ หากสิ่งที่จะไม่ทำงานบางครั้งประเภทอาคารมีการตั้งค่าที่ไม่ถูกต้อง คุณอาจจะสามารถที่จะแก้ไขได้โดยการกําหนดตัวแปรระยะ ในกรณีนี้การเปลี่ยนตัวแปรหนึ่งตัวแปรสภาพแวดล้อมหรือตัวแปรเปลือก ควรเปลี่ยนคนอื่น ๆ ฉันได้ค้นพบผ่านประสบการณ์ว่าการเปลี่ยนแปลงระยะยาวในตัวพิมพ์ใหญ่ ไม่เคยเปลี่ยนเปลือกระยะตัวแปรในตัวอักษรขนาดเล็ก ปัญหานี้เป็นปัญหา ผมไม่ทราบว่าเป็นจริงเสมอ ส่วนใหญ่เวลาที่มันไม่เป็นความจริง แต่ก็สามารถเป็น ดังนั้นถ้าคุณทำการเปลี่ยนแปลงเพียงแค่ตรวจสอบว่า มันไม่บ่อยครั้งที่คุณจะต้องเปลี่ยนค่าที่ แต่เมื่อในขณะที่คุณทำ ผู้ใช้ตัวแปรสภาพแวดล้อม อีกตัวแปรสภาพแวดล้อมในตัวอักษรทุนเปลือกตัวแปรในตัวอักษรขนาดเล็ก นี้เป็นชื่อผู้ใช้ของคุณ มันเป็นเพียงภายใต้สถานการณ์พิเศษมาก ที่คุณจะต้องการที่จะเปลี่ยนที่ ถ้าชื่อผู้ใช้ของคุณเป็นคนอื่นก็สามารถโยนทุกประเภทของสิ่งที่ปิด ไดเรกทอรีบ้านไดเรกทอรีบ้านของผู้ใช้ อีกครั้งคุณจะไม่ต้องการที่จะเปลี่ยนที่ แจ้งให้ทราบในทุกกรณีเหล่านี้และหนึ่งที่เรากำลังจะครอบคลุมตัวแปรเส้นทาง ตัวแปรสภาพแวดล้อมที่อยู่ในตัวอักษรทุนและตัวแปรเปลือกที่ถูกผูกไว้เป็นตัวอักษรขนาดเล็ก ถ้าคุณเปลี่ยนหนึ่งที่คุณควรเปลี่ยนอื่น ๆ ชนิดของการเชื่อมโยงนี้ไม่สามารถจัดตั้งขึ้นในขณะที่คุณไม่สามารถผูก 2 ตัวแปร อื่น ๆ กว่าเหล่านี้ 4 และมีผลผูกพันในตัวแปรเหล่านี้ไม่สามารถยกเลิก คุณจะไม่สามารถแยกพวกเขา ดังนั้นเหล่านี้ 4 คู่ของตัวแปรที่จะผูกพัน พวกเขามักจะ ไม่มีคนอื่น ๆ จะได้รับการ นอกจากนี้มันจะเป็นไปได้ในการสร้างตัวแปรที่มีชื่อเดียวกัน ในประเภทที่ตรงข้าม คุณสามารถทำให้ระยะตัวแปรเปลือกในตัวอักษรขนาดเล็ก หรือระยะตัวแปรสภาพแวดล้อมในตัวพิมพ์ใหญ่ ตัวแปรเหล่านั้นจะมีความเป็นอิสระของตัวแปรเหล่านี้จับคู่ และพวกเขาจะเป็นอิสระจากกัน ฉันไม่สามารถนึกว่าทำไมคุณจะทำว่าถ้าคุณต้องการที่จะสร้างความสับสนให้คน หนึ่งนี้ที่นี่ตัวแปรเส้นทางนี้เป็นหนึ่งในสิ่งที่สำคัญจริงๆ สิ่งหนึ่งที่นี่คือจะมีกรณี ของตัวแปรที่มีชื่อคู่ที่คล้ายกันซึ่งจะไม่ผูกพันกัน สามารถมีตัวแปร SHELL และเปลือกในตัวพิมพ์ใหญ่และขนาดเล็ก ตามชื่อที่คุณไม่ทราบว่าตัวแปรที่เป็นตัวแปรเปลือก หรือตัวแปรสภาพแวดล้อมและพวกเขากำลังไม่ผูกพันกัน ดังนั้นชนิดของชื่อที่จับคู่ที่ไม่ได้หมายความถึงตัวแปรผูกพัน ตัวแปรเส้นทางที่ฉันได้แสดงมาก่อน คือรายการของ pathnames ที่เปลือกจะมองหาคำสั่ง ให้ของได้รับไปที่หน้าต่างนี้ที่นี่และเราจะทำเสียงก้อง $ PATH, ตัวพิมพ์ใหญ่ - ตัวแปรสภาพแวดล้อม - ก้องเส้นทาง $, ตัวอักษรขนาดเล็ก - เปลือกตัวแปร ขอให้สังเกตว่ารายชื่อของไดเรกทอรีที่จะเหมือนกัน เหล่านี้มีความผูกพัน เปลี่ยนหนึ่งคุณเปลี่ยนแปลงอื่น ๆ ในตัวแปรสภาพแวดล้อมขององค์ประกอบที่ถูกคั่นด้วยจุดคู่ ขอให้สังเกตว่า ตัวแปรเปลือกจะถูกคั่นด้วยช่องว่าง ตัวแปรสภาพแวดล้อมนี้เป็นสายเดียว ตัวแปรเปลือกเป็นอาร์เรย์ บอร์นเชลล์ไม่ได้มีอาร์เรย์ ทุบตีไม่ แต่นี้เป็นส่วนหนึ่งคงที่ของเปลือก นี้เป็นสายเดียวและไม่อาร์เรย์ C-เปลือกมักจะมีอาร์เรย์ อาร์เรย์เป็นเรื่องง่ายที่จะทำงานร่วมกับ คุณสามารถดูบางส่วนของมัน $ path เพื่อสะท้อน [1] และฉันได้รับ / usr / bin, องค์ประกอบแรก อีกครั้งจำเครื่องหมายดอลลาร์ย่อมาจากองค์ประกอบสุดท้ายของรายการประวัติ สิ่งที่เกิดขึ้นที่นั่น มันพยายามที่จะหาเครื่องหมายดอลลาร์เป็นสัญลักษณ์ตัวแปร ฉันหนีมัน อุ่ย มันจะไม่ใช้เวลาที่ทั้ง บางส่วนของสิ่งเหล่านี้ไม่ได้ทำงานให้ดี บางทีเราก็จะออกจากที่ออก เครื่องหมายดอกจันหมายถึงสิ่งที่ทั้ง แต่นั่นคือสิ่งที่คุณจะได้รับถ้าคุณไม่ได้ระบุองค์ประกอบ อีกวิธีหนึ่งที่ตัวแปรอาร์เรย์สามารถจัดการ, จำนวนขององค์ประกอบที่มี 7 องค์ประกอบ ที่นี่เราใส่เครื่องหมายปอนด์ก่อนที่ชื่อตัวแปร ที่นี่เป็นอีกหนึ่ง ใส่เครื่องหมายคำถามมี นั่นคือค่าตรรกะ นั่นแสดงให้เห็นว่าตัวแปรที่มีอยู่ ซึ่งเป็นวิธีการของการทำงานกับตัวแปรอื่น ว่าโดยวิธีการที่ไม่จำเป็นต้องเป็นตัวแปรอาร์เรย์ ที่อาจเป็นตัวแปรใด ๆ และถ้าผมทำไม่มีตัวแปรดังกล่าวและฉันจะได้รับ 0 อีกสิ่งที่เล็ก ๆ น้อย ๆ เกี่ยวกับการประเมินผลมีตัวแปร กลับไปที่คนนี้นี่ถ้าด้วยเหตุผลบางอย่างที่คุณอยากจะทำงานเกี่ยวกับเรื่องนี้ มากกว่าการทำงานกับอาร์เรย์ตัวแปรเปลือก มีคำสั่งที่สามารถแยกสิ่งเหล่านี้ขึ้นอยู่กับลำไส้ใหญ่ ในความเป็นจริงถ้าคุณกำลังจะทำเช่นนี้ในทุบตีเปลือกอาจจะเป็น ชนิดของสคริปต์บางอย่างที่อาจจะเป็นวิธีการที่คุณจะทำมัน แต่ใน C-เปลือกมันง่ายมากที่จะใช้อาร์เรย์ ในบอร์นเชลล์ตัวแปรถูกกำหนดโดยการแสดงออกเดียวเช่นนี้ เช่นวิธีการที่คุณอาจกำหนดตัวแปรในการเขียนโปรแกรมภาษาที่ และที่นี่จะต้องมีช่องว่าง มันเป็นสิ่งจำเป็นที่จะเป็นเพียงแค่ 1 สตริง ในเปลือกหอยบอร์นชนิดตัวแปรทั้งหมดเป็นตัวแปรเปลือก ตัวแปรสภาพแวดล้อมที่เป็นส่วนหนึ่งของตัวแปรเปลือก พวกเขาจะแตกต่างไปจากตัวแปรสภาพแวดล้อมที่ไม่โดยการส่งออก คำสั่งที่จะทำคือการส่งออกเช่นเดียวกับการส่งออก PRINTER ถ้าเราจะกำหนดเช่นตัวแปร ถ้าเราต้องการคำสั่งการพิมพ์ที่จะพบว่ามันก็จะต้องมีตัวแปรสภาพแวดล้อม และนั่นคือวิธีการที่เราทำให้มันเป็นหนึ่ง ที่นี่มีสิ่งที่ชนิดของความสับสน การแสดงออกนี้ส่งออกไปยังสภาพแวดล้อมที่เกิดขึ้นจากแนวความคิดนี้บอร์นเชลล์, และยังแสดงออกว่าจะใช้ในรายละเอียดของ C-เปลือก ที่ไม่มีคำสั่งเช่นการส่งออก หากคุณเพียงแค่พูดส่งออกด้วยตัวเองคุณจะได้รับรายการของการส่งออก - ดังนั้นถ้าฉันเพียงแค่จะส่งออกที่นี่ไม่มีสิ่งนั้น เอาล่ะมีเราไป สิ่งเหล่านี้โดยวิธีการนี​​้ยังมีการกำหนดไว้โดยเปลือก ผมไม่ได้กำหนดใด ๆ เหล่านี้ด้วยตัวเอง เปลือกจะทุกประเภทของสิ่งด้วยตัวเอง มันควรจะทำในสิ่งที่โดยอัตโนมัติ ในทุบตีหรือเปลือกกรคุณสามารถเรียกใช้คำสั่งเช่นนี้ ซึ่งทั้งสองจะให้ค่าตัวแปรและการส่งออกใน 1 คำสั่ง ในบอร์นเชลล์พวกเขาจะต้องแยกออกคำสั่งเช่นการส่งออก นี่คือลักษณะที่ทำให้เกิดความสับสนอีกอย่างก็คือ ตั้งค่าคำสั่งใน C-เปลือกกำหนดตัวแปร และไม่มีข้อโต้แย้งจะบอกคุณสิ่งที่มีค่าตัวแปรที่มี ในทุบตีเปลือกตั้งค่าคำสั่งที่ไม่มีการขัดแย้งจะเป็นสิ่งเดียวกัน แต่มีข้อโต้แย้งที่จะทำบางสิ่งที่แตกต่างกันมาก ดังนั้นเหล่านี้เป็นข้อโต้แย้งต่างๆที่นี่ บางส่วนของเหล่านี้เป็นตัวแปรสภาพแวดล้อมบางส่วนของพวกเขาเป็นตัวแปรเปลือก ทั้งหมดของพวกเขาเป็นตัวแปรเปลือกจริงๆ บางส่วนของผู้ที่เป็นตัวแปรสภาพแวดล้อม คำสั่งชุดที่มีข้อโต้แย้งที่สามารถนำมาใช้ในการดำเนินงาน ในพารามิเตอร์ตำแหน่งที่จะสคริปต์ ซึ่งเป็นวิธีการรับพวกเขาทั้งหมดในครั้งเดียว เราไม่สามารถจริงๆไปลงในวันนี้ว่า นอกจากนี้ยังสามารถใช้ในการเปลี่ยนพฤติกรรมของเปลือก โดยเฉพาะอย่างยิ่งในทุบตีมีตัวแปรที่จะกำหนดวิธีการทำงานเปลือก จากนั้นก็เป็นเพียงแค่หนึ่งคำสั่งที่คุณอาจจะเห็นคำสั่งนี้ เรียงตามตัวแปรและชนิดของตัวแปรที่ใช้ในกรและทุบตีเปลือกหอย มันไม่จำเป็น แต่ก็สามารถนำมาใช้เพื่อ จำกัด ค่าของตัวแปรที่ ซึ่งจะมีประโยชน์ในการป้องกันข้อผิดพลาดและมันเป็นเรื่องธรรมดา ดังนั้นฉันแค่การกล่าวขวัญว่าในกรณีที่คุณเห็นมันอยู่ที่ไหนสักแห่ง คำสั่งที่ จำได้ว่าที่ผมกล่าวถึงก่อนหน้านี้ที่คำสั่งใน C-เปลือก ซึ่งสามารถบอกตำแหน่งของพา ธ คำสั่ง ที่นี่แทนคำสั่งเป็น คุณควรจะหาบนแป้นพิมพ์ของคุณบางตัวละครที่มีลักษณะเช่นนี้ ตำแหน่งบนแป้นพิมพ์จะแตกต่างกันไป เราเรียกมันว่า backquote มันเป็นเรื่องของขนาดของใบเสนอราคา มันจะไปจากบนซ้ายไปขวาล่าง ที่นี่บนแป้นพิมพ์ Mac ของฉันมันอยู่ในมุมซ้ายบน ตัวละครที่สามารถใช้ในการดำเนินการคำสั่งภายในคำสั่ง หากคุณมีการแสดงออกภายใน backquotes, การแสดงออกที่เป็นคำสั่งก็ทำงาน ผลของคำสั่งที่ ถูกแทนที่แล้วสำหรับการแสดงออก backquote ทั้ง ภายในคำสั่งอีกต่อไปแล้วที่ทำงานด้วยการส่งออกที่ เป็นส่วนหนึ่งของสตริงของการขัดแย้งและอื่น ๆ นี่คือคำสั่งที่ใช้ที่เป็น ขอแสดงให้เห็นถึงการดำเนินงานที่นี่ ให้เราขึ้นไปที่นี่จะออก backquotes การควบคุมได้รับฉันที่จุดเริ่มต้นของเส้นที่มีรูปแบบการแก้ไข Emacs จนถึง pathnames เป็นสิ่งที่ไม่ แต่เมื่อผมทำเช่นนี้มันก็ปลั๊กในรายการของ pathnames ที่ ในสถานที่ในการแสดงออก backquote นี้ทั้งหมดและดำเนินการคำสั่ง ls-l การที่พวกเขา ชนิดของความสะดวกฮะ? เพื่อให้เป็นสิ่งหนึ่งที่เรียบร้อย นั่นเป็นวิธีการทำงานของ backquotes ตอนนี้ขอลงไปเพียงเล็กน้อยต่อไป เหล่านี้เป็นนามแฝง ที่จริงผมใช้เหล่านี้ ฉันจะพยายามที่จะได้รับในเรื่องนี้มีการดำเนินการแก้ไข 1 ถูก ตอนนี้ขอดูว่าคำจำกัดความของผู้ที่ออกมา lwh นามแฝงบอกฉันว่ามันกำหนดไว้ แจ้งให้ทราบว่าเป็นเพียง แต่คำพูดที่ด้านนอกได้รับการถ่ายออก และเครื่องหมายอัศเจรีย์จะถูกนำตัวออกจาก ! * รายการที่สมบูรณ์ของการขัดแย้งทั้งหมด ในความหมายของชื่อมันจะนำไปใช้กลับไปยังที่ที่ฉันจะใช้นี้ lwh ksh ทุบตี ถูก ดูวิธีการว่าทำงานอย่างไร มันช่วยฉันพิมพ์บาง ลองขึ้นไปนิด ๆ หน่อย ๆ ก็พูดถึงสิ่งอื่นที่นี่ ขอให้สังเกตที่นี่เปลือกหอยที่แตกต่างกันเหล่านี้ ฉันควรจะได้กล่าวถึงเรื่องนี้มาก่อน csh มี 2 กว่าที่นี่และเพื่อไม่ / / bin tcsh เราสามารถสร้างด้วยวิธีการอื่น ๆ ที่เหล่านั้นเป็นจริงไฟล์เดียวกัน จำที่ผมบอกว่าถ้าคุณพิมพ์ดวลจุดโทษที่คุณได้รับการทุบตี พิมพ์นี้และคุณได้รับนี้ แต่ผู้ที่ไม่ได้เชื่อมโยง เหล่านั้นมีคนเดียวมี และนี่คือไม่ได้ชนิดของไฟล์ที่สามารถเรียกอีกคนหนึ่ง ดังนั้นผู้ที่เป็นไฟล์แยกคนที่ C-เปลือกเป็นไฟล์เดียวกัน กลับลงมาที่นี่อีกคนหนึ่งที่นี่นามแฝงนี้ ทราบว่าทำงานนี้ไฟล์คำสั่ง นามแฝงที่ทำงานที่ ไฟล์บอกคุณชนิดของไฟล์ ทุบตี ksh ดังนั้น FWh ถูก นั่นคือผลของคำสั่งไฟล์ ผมไม่ทราบว่าถ้าคุณรู้ว่าสิ่งนี้หมายถึงที่นี่ มัค-O ไบนารีสากลมี 2 สถาปัตยกรรม มี 2​​ ประเภทหน่วยประมวลผลที่เป็นไปได้ใน Mac มี และบางโปรแกรมที่ถูกเขียนขึ้นเพื่อให้สามารถทำงานด้วยทั้งสอง และคำสั่งไฟล์สามารถระบุได้ว่าเพื่อให้เป็นสิ่งที่นี้หมายถึง ทั้งสองไฟล์เหล่านี้ถูกเขียนขึ้นด้วยวิธีการที่ ดังนั้นเราจึงเห็นว่านามแฝงทำงานเราดูวิธีการ backquote ทำงาน เราดูว่าคำสั่ง ls ไฟล์จริงหรืองานไฟล์ นี้อาจจะไม่ทำงาน ลอง "ที่ที่" และ "lwh ที่" เอาล่ะลองที่ ที่ที่ ที่เป็นเปลือกในตัว จำได้ว่าก่อนหน้านี้เราแสดงให้เห็นว่าทุบตีไม่ได้มีที่ ถ้าคุณพิมพ์ที่อยู่ในเปลือกทุบตีคุณจะได้รับข้อความข้อผิดพลาด มันเป็นเพียงส่วนหนึ่งของเปลือกแทนที่จะเป็นคำสั่งที่แยกต่างหาก เกิดอะไรขึ้นถ้าฉันพิมพ์ lwh มองหาที่ไหน ดูสิ่งที่เกิดขึ้นมี วิ่งไปที่ที่มีการส่งออกนี้และจากนั้นพยายามที่จะเรียกใช้คำสั่ง ls เป็นลิตรกับที่เป็นเปลือกในตัว ที่จะมี แต่คนอื่น ๆ ที่ไม่ได้มีอยู่ ไม่มีของเหล่านี้มีอยู่ในความเป็นจริง เพื่อที่จะไม่ทำงานและก็ยังแสดงให้เห็นว่าบางสิ่งบางอย่าง ไม่ทำสิ่งที่คุณอาจจะคิดว่า ให้พวกเราลงไปเพียงเล็กน้อยต่อไปที่นี่ ที่นี่อยู่ในทุบตี ที่ยังแทนคำสั่งเช่น backquote แต่แตกต่างจาก backquote จะใช้รูปแบบตัวแปรนี้ มีจำนวนของการแสดงออกซึ่งเริ่มต้นด้วยเครื่องหมายดอลลาร์เป็น และในขณะที่เหล่านี้จะไม่ตัวแปรที่พวกเขายืมใช้เครื่องหมายดอลลาร์ เพื่อแสดงให้เห็นการแสดงออกของบางชนิด ที่สามารถถูกล้อมรอบด้วยวงเล็บหรือวงเล็บหรือวงเล็บคู่ ซึ่งมีจุดประสงค์ที่แตกต่างกัน วงเล็บเดียวที่นี่แทนคำสั่งเช่นเดียวกับ backquotes วงเล็บคู่เป็นจริงดำเนินการทางคณิตศาสตร์ มีไวยากรณ์อื่น ๆ การดำเนินงานอื่น ๆ ไวยากรณ์ backquote สามารถใช้ได้ในทุบตี แต่หนึ่งในนี้เป็นที่นิยม มันง่ายมากที่จะอ่านและจะช่วยให้การทำรัง คุณสามารถมีภายใน $ (คำสั่ง) คำสั่งอื่น บางอย่างเช่น - ฉันได้รับรายชื่อมี ที่จะทำงานถ้าผมมี backquote ยัง หากฉันต้องการที่จะทำบางสิ่งบางอย่างเช่น - คุณอาจจะไม่จริงใช้คำสั่งนี้ แต่นี้แทนคำสั่งภายในก้องชื่อไฟล์ทั้งหมดเริ่มต้นด้วยการ จากนั้นหนึ่งนี้จะทำงานคำสั่ง ls-ลิตรในแฟ้มเหล่านั้น และจากนั้นหนึ่งนี้ก็สะท้อนออก คุณอาจจะไม่ทำเช่นนี้คุณก็ควรจะทำเสียงก้องหรือคำสั่ง ls, แต่แสดงให้เห็นถึงวิธีการทำรังของคำสั่งที่ทำงาน ดังนั้นเพียงแค่คุณสมบัติอื่นที่นี่  ที่ผมกล่าวถึงก่อนหน้านี้ที่เมื่อคุณมีที่ใน C-เปลือก การพิมพ์งานในเปลือกหอยบอร์นประเภทสำหรับตำแหน่งคำสั่ง ในตัวคำสั่งเพียงแค่สิ่งที่ผมบอกว่ามี คำสั่งนี้เป็นส่วนหนึ่งของเปลือกเช่นที่ เมื่อเปลือกรันคำสั่งเช่นคำสั่ง ls มันตั้งอยู่มันผ่านเส้นทาง พบว่ามันอยู่ในไดเรกทอรีบางบาง อ่านที่เป็นหน่วยความจำที่สร้างเปลือกใหม่ อ่านคำสั่ง ls หรือสิ่งที่เป็นเปลือก ที่ตัวแปรสภาพแวดล้อมที่มีอยู่แล้ว และจากนั้นจะดำเนินการถ่ายโอนไป ในตัวคำสั่งสำหรับคำสั่งที่อยู่ภายในเปลือก ดังนั้นเปลือกเพียงแค่เริ่มต้นการดำเนินงานบางส่วนของรหัสของตัวเอง ที่มีคำสั่งดังกล่าว มันจริงได้รับเร็วขึ้น มันไม่จำเป็นที่จะอ่านอะไรในหน่วยความจำก็มีอยู่แล้วในหน่วยความจำ คำสั่งในตัวเสมอจะมีความสำคัญกว่าคำสั่งที่มีชื่อเดียวกัน คำสั่งที่อยู่ในไดเรกทอรีในเส้นทางที่อาจมีชื่อเดียวกัน คำสั่งในไดเรกทอรีที่แตกต่างกันไฟล์ในไดเรกทอรีที่แตกต่างกัน อย่างใดอย่างหนึ่งที่เกิดขึ้นก่อนหน้านี้ในเส้นทางที่เป็นหนึ่งคุณจะได้รับ หากมีในตัวคำสั่งคุณมักจะได้รับมัน ไม่มีทางที่จะให้ความสำคัญน้อยกว่าคำสั่งในเส้นทางไม่ได้ ถ้าคุณต้องการที่จะได้รับคำสั่งเส้นทางที่คุณสามารถพิมพ์ชื่อพา ธ เต็ม ถ้ามีคำสั่งที่อยู่ในเส้นทางที่ใดที่หนึ่ง คุณสามารถพิมพ์ / bin / และที่คุณจะได้รับมัน หากคุณไม่ต้องการที่จะพิมพ์ชื่อพาทั้งคุณสามารถกำหนดนามแฝง ในความเป็นจริงถ้าคุณให้นามแฝงชื่อเดียวกับในตัวคำสั่งมันจะทำงาน เพราะความหมายของชื่อได้รับการประเมิน ก่อนที่เปลือกจะเป็นตัวกำหนดว่ามันเป็นในตัวคำสั่งที่ควรจะดำเนินการ แล้วนี้ได้รับเพียงเล็กน้อยที่ซับซ้อนมากขึ้นกับคำสั่งบางส่วนที่นี่ กรณีที่มีคำสั่งบางอย่างในตัวจริงคำสั่งและอยู่ในเส้นทาง หนึ่งในนั้นคือสะท้อนคำสั่งที่ผมใช้เพียงเล็กน้อยในขณะที่ผ่านมาในตัวอย่างเหล่านั้น echo เป็นคำสั่งในเส้นทางและมันอยู่ในทุกเปลือก พวกเขาไม่จำเป็นต้องทั้งหมดทำงานในลักษณะเดียวกัน แต่เดิมมันเป็นคำสั่งเฉพาะในเส้นทาง มันถูกสร้างขึ้นในเปลือกหอยในภายหลัง เพราะมีตัวเลือกซึ่งขึ้นอยู่กับสภาพแวดล้อมที่มี และตัวเลือกบรรทัดคำสั่งในตัวคำสั่ง ถูกเขียนขึ้นเพื่อให้สามารถทำงานได้เช่นเดียวกับคำสั่งที่ได้รับในเส้นทาง ก็ไม่น่าที่พวกเขาจะได้รับการเขียนวิธีการที่ ถ้าคำสั่งไม่ได้แล้วถูกเขียนขึ้นสำหรับเส้นทาง ดังนั้นนี้มีผลข้างเคียง ประวัติของมันมีผลที่นี่ มีตัวเลือกที่จะมี นอกจากนี้ยังมีตัวเลือกที่กำหนดโดยตัวแปรใน tcsh เรียก echo_style นั่นเป็นหนึ่งในตัวแปรเหล่านี้ที่สามารถเปลี่ยนวิธีการที่สะท้อนการทำงานของ มีกรณีอื่น ๆ ที่คุณสามารถกำหนดตัวแปรเป็น ที่มีการเปลี่ยนแปลงวิธีการที่ดำเนินการเปลือกรวมทั้งในตัวคำสั่งงาน มันจะไม่ส่งผลกระทบต่อสิ่งอื่น ตั้งแต่คำสั่งอื่น ๆ ไม่ได้มีการเข้าถึงตัวแปรเปลือก เพียงตัวแปรสภาพแวดล้อม แต่การดำเนินงานของเปลือกสามารถอ่านตัวแปรเปลือก ที่จะไม่ทำงานสำหรับ csh นั่นเป็นเพียง tcsh ที่หนึ่งของการปรับปรุง มีการแยกลำดับเมื่อประเมิน metacharacters, เมื่อจะประเมินตัวแปรแทนการอ้างอิงประวัติศาสตร์ มีลำดับโดยเฉพาะอย่างยิ่งเพราะสิ่งเหล่านี้เป็น ถ้าเป็นสิ่งที่ไม่เป็นลำดับโดยเฉพาะอย่างยิ่ง และได้รับบางสิ่งบางอย่างที่แสดงออกของการจัดเรียง ซึ่งได้รับการประเมินอยู่แล้วก็จะไม่ประเมินผลอีกครั้ง หากได้รับมันแล้วมันก็จะส่งผ่านตัวละคร ดังนั้นหากการประเมินผลของการแสดงออกบางอย่างแทนคำสั่ง หรือตัวแปรหรือสิ่งที่ก่อให้เกิดการแสดงออก ที่คุณจะต้องการที่จะประเมิน ที่จะทำงานได้เฉพาะในกรณีที่การประเมินผลที่เกิดขึ้นต่อไปในลำดับ ฉันหวังว่าฉันเป็นคนที่ชัดเจนมี ว่าลำดับการแยกการดำเนินงานใน C-เปลือก, ไม่ได้เป็นเหมือนกันสำหรับในตัวคำสั่งที่มันเป็นในตัวไม่ใช่คำสั่ง ผมไม่แน่ใจว่าเกี่ยวกับการทุบตีมี ตัวอย่างเช่นถ้าตัวแปรเปลือกผลิตอ้างอิงประวัติศาสตร์ มันอาจจะไม่ได้กลับไปในประวัติศาสตร์ มันก็จะได้รับเครื่องหมายอัศเจรีย์ ในความเป็นจริงเราก็สามารถลองที่ออกตอนนี้ ตั้ง = และเราจะต้องใส่ในนี้มี โอ้รอ ขอโทษ ฉันไม่นี้ในทุบตี ผมอยากที่จะทำมันที่นี่ เห็นดังนั้นจึงไม่ได้ประเมินการอ้างอิงประวัติศาสตร์ที่ เพราะมันมีอยู่แล้วผ่านจุดของการประเมินการแสดงออกทางประวัติศาสตร์ เมื่อมันได้รับการประเมินตัวแปร เพื่อให้เป็นที่ 1 ผลของการแยก และอีกครั้งในตัวคำสั่งยังไม่ได้ทำแบบเดียวกับที่ ขวาทั้งหมด ให้เป็นไปอย่างใดอย่างหนึ่งต่อไปที่นี่ นี้มีวัตถุประสงค์เพื่อเป็นที่ 1 สาย แต่มันทำให้ง่ายต่อการอ่าน สิ่งที่จะทำอย่างไร คุณอาจจะจำได้ว่าเราสามารถประเมินเครื่องหมายดอกจันเป็นสัญลักษณ์ตัวแทนชื่อไฟล์ และมีสัญลักษณ์ชื่อไฟล์อื่น ๆ เช่นเครื่องหมายคำถามและการแสดงออกวงเล็บ ชนิดของการประเมินผลที่เรียกว่า globbing noglob ตั้งที่จุดเริ่มต้นของคำสั่งนี้บอกว่าไม่ทำอย่างนั้น noglob ล้างกล่าวว่ากลับไปทำที่ หมายเหตุ glob ชุดที่จะไม่ได้มีผลกระทบที่ ในภาษาสามัญตั้ง glob หรือ noglob ล้างดูเหมือนจะเทียบเท่า แต่ที่นี่ก็ไม่ได้เป็น มัน noglob ล้าง ตอนนี้ tset tset ยืนชุดขั้ว มันไม่ได้ใช้ที่มักจะในขณะนี้ แต่ก่อนที่ระบบ windowing กลายเป็นใช้ได้ และคุณมีขั้วเดียวคุณอาจจะต้องกำหนดประเภท และถ้ามีอะไรบางอย่างมามากกว่าอีเธอร์เน็ตหรือจากเครือข่ายที่ คุณอาจต้องการที่จะบอกว่ามันเป็น vt100 VT100 เป็นชนิดของมาตรฐานในการดำเนินธุรกิจสถานี มันมาจากขั้วธันวาคม หากคุณเพียงแค่ทำ dialup - แจ้งให้ทราบว่า? นี้ไปกลับวิธีฮะ ดังนั้นถ้าเราไม่เพียง tset กว่าที่นี่ ถ้าฉันเพียงแค่ทำ tset ก็ตั้งค่าสถานีของฉัน แต่คุณไม่ได้เห็นอะไร มันก็ไม่ได้เปลี่ยนแปลงอะไรจริงๆ -s ถูก ระยะ setenv xterm สี เรารู้อยู่แล้วว่าคำที่ถูกกำหนดวิธีการที่เพื่อให้ไม่เปลี่ยนแปลง นั่นคือวิธีที่เราต้องการที่จะทำมัน แต่สังเกตเห็นว่าคำสั่ง tset-s ออกเพียงแค่คำสั่งเหล่านี้ มันไม่ได้เรียกพวกเขา มันไม่ได้เรียกใช้คำสั่งเหล่านี้ได้ออกให้ ดังนั้นนี้มีวัตถุประสงค์ที่จะผลิตคำสั่งซึ่งจะถูกเรียกใช้ คุณจำคำสั่งในแฟ้มที่ผมแค่แสดงให้เห็นว่าคุณมีคำถามอยู่ในนั้น ถ้าอย่างนั้นเรามาดูกันเลยว่า Q ระงับการส่งออกบางส่วน แต่ที่ไม่สำคัญที่นี่เป็นที่คุณสามารถดู ฉันแค่ทำที่จะแสดงให้คุณเห็นว่ามันไม่ได้เรื่อง นี้อยู่ในไวยากรณ์ backquote หมายเหตุ backquote นี่ backquote ที่นี่ ผมถนัดสิ่งเหล่านี้ที่นี่ เหล่านี้เป็นกรณีที่มีการบอกว่าจะทำอย่างไร ในกรณีที่โดยเฉพาะอย่างยิ่งประเภทของอาคาร - อีเธอร์เน็ตเครือข่าย dialup สิ่งที่มีคุณ มันไม่สำคัญว่าที่นี่เพราะเราไม่ได้ทำจริงใด ๆ ของสิ่งเหล่านี้ ฉันแค่แสดงคำสั่ง ถ้าผมทำเช่นนี้กับ backquote สิ่งที่ฉันจะได้รับ นอกจากนี้ยังสังเกตเห็นที่นี่ที่นี้รวมถึงชุด noglob และ noglob ล้าง, ดังนั้นผู้ที่มีการซ้ำซ้อนในขณะนี้ในความหมาย ที่ไม่จริงเสมอ แต่ตอนนี้พวกเขากำลังรวมอยู่ในคำสั่งนี้ แต่เรามาดูสิ่งที่เกิดขึ้นถ้าผมทำอย่างนั้น และไปที่จุดเริ่มต้นของบรรทัดที่มีการควบคุมและฉันจะทำอย่างนั้น เอาล่ะตั้ง: คำสั่งไม่พบ ที่ชนิดของแปลกไม่ได้หรือไม่ ชุดคำสั่งเป็นที่รู้จักกันดี มันเป็นส่วนหนึ่งของเปลือก ตั้ง: คำสั่งไม่พบ? ทำไมจึงเป็นเช่นนั้น อืมมม ดีขอคิดเกี่ยวกับเรื่องนี้ มันใช้แทนคำสั่ง backquote, และที่เกิดขึ้นในบางส่วนของลำดับของการแยกวิเคราะห์คำสั่ง ชุดเป็นในตัวคำสั่ง ดังนั้นเมื่อถึงเวลาที่มันจะแทนคำสั่งนั้น ก็อากาศแล้วผ่านจุดของการระบุในตัวคำสั่ง ดังนั้นจึงถือว่าการตั้งค่าราวกับว่ามันเป็นคำสั่งในเส้นทาง จำเป็นต้องพูดก็ไม่ได้พบว่ามันและคุณจะได้รับข้อผิดพลาด ดี มีตัวอย่างของลำดับการแยกเป็น และเราจะทำอย่างไรเกี่ยวกับที่ ขอให้สังเกตคำสั่งที่น่าสนใจมากที่นี่, ประเมินผล ฉันสงสัยว่าสิ่งที่ไม่ ถ้าคุณดูที่คู่มือ - และขอเพียงแค่ทำอย่างนั้น แสดงให้เห็นว่าเกิดความสับสนคู่มือเหล่านี้ - คน tcsh คู่มือสับสนในการหาสิ่งที่นี่ไม่ใช่เรื่องง่ายอย่างใดอย่างหนึ่ง ที่นี่เราไปหาเรื่องประเมินผลเพื่อให้เราสามารถมี 1 หรือมากกว่าการขัดแย้ง และมีรายการของสิ่งที่มี ปฏิบัติต่อข้อโต้แย้งที่เป็นปัจจัยการผลิตไปยังเปลือก และดำเนินการคำสั่งที่เกิดขึ้นในบริบทของเปลือกปัจจุบัน นี้มักจะใช้ในการรันคำสั่งที่สร้างขึ้นเป็นผลมาจากคำสั่ง หรือทดแทนเพราะตัวแปรแยกเกิดขึ้นก่อนการแทนเหล่านี้ ดีมาก และที่นี่พวกเขายังอ้างถึงคำสั่ง tset สำหรับการใช้งานตัวอย่าง เหมือนกับฉันเพียงแค่แสดงให้เห็นว่าคุณ ตอนนี้ฉันจะต้องได้รับหน้าต่างกลับไปยังสถานที่ที่มีประโยชน์ ขอได้รับมากกว่าที่นี่และเราจะเห็นประเมินผลที่ใช้ก่อนที่ ดังนั้นเรามาดูสิ่งที่เกิดขึ้นถ้าเราใส่ - ที่นี่เราขึ้นไปที่มีลูกศรไปยังคำสั่งที่ และการควบคุมที่จะเริ่มต้นประเมินผล เอาล่ะเพื่อให้มันทำงาน เมื่อคุณทำประเมินผลจะต้องใช้สิ่งที่มาหลังจากที่มันและทำให้คำสั่ง นี้ช่วยให้คุณเป็นหลักแยกเป็นครั้งที่สอง ส่วนที่นี่รันคำสั่งนี้ภายใน backquotes, ได้รับการส่งออก การส่งออกควรจะใช้เป็นคำสั่งดังกล่าวที่นี่เช่นนี้ ที่นี้และหนึ่งในนี้ ดังนั้นคำสั่งที่มีตอนนี้ที่นี่ในลำดับนี้ แต่เหล่านี้จะสร้างขึ้นในคำสั่งและมันไม่สามารถได้รับพวกเขาทันที ดังนั้นเราจะไป Eval, Eval หยิบขึ้นมาเริ่มต้นสิ่งทั้งหมดอีกครั้งและการทำงาน ตัวอย่างทั้งสอง backquoting, Eval, การแยกวิเคราะห์ผลของการแยก และคำสั่งที่น่าจะเป็นในการใช้งานน้อยมากที่จะให้คุณในปัจจุบัน ถูก ทั้งหมดขวา umask ลองดูที่คำสั่งนี้ที่นี่ umask 022 ฉันสงสัยว่าสิ่งที่ไม่ ขอเพียงพิมพ์ umask มีอะไรหลังจากที่มัน 22 ถูก 022 และทำมันอีกครั้ง ขณะที่คุณอาจจะเดาได้ umask ไม่มีข้อโต้แย้งบอกคุณหน้ากากปัจจุบัน umask กับการขัดแย้งที่ทำให้มัน แต่นั่นก็เป็นหนึ่งที่ผมมีอยู่แล้ว 022 สิ่งที่ไม่หมายถึงอะไร เหล่านี้อยู่ที่นี่เพื่อป้องกันไฟล์ พวกเขากำหนดผู้ที่ได้รับอนุญาตให้อ่านหรือเขียนหรือเรียกใช้ไฟล์ คุ้มครองที่เรียกว่าสิทธิ์ r หมายถึงอ่าน w, การเขียน, และ x ซึ่งไม่ได้อยู่ที่นั่นหมายถึงการดำเนินการ มี 3 ประเภทที่มี 3 องค์ประกอบอยู่ในหมวดหมู่ของผู้ใช้ ผู้ที่นำไปใช้กับฉันผู้ใช้ 3 เหล่านี้ที่นี่นำไปใช้กับกลุ่ม ไฟล์ที่ 1 เป็นกลุ่มผู้ใช้อาจเป็นหลายกลุ่ม แต่ถ้าผู้ใช้อยู่ในกลุ่มที่ไฟล์นี้อยู่ที่ แล้วการคุ้มครองเหล่านี้จะนำไปใช้กับเขาถ้าเขาไม่ได้ใช้งาน และหนึ่งในนี้เป็นคนอื่น ประเภทเหล่านี้เป็นพิเศษร่วมกัน การคุ้มครองผู้ใช้นำไปใช้กับเขา คุ้มครองกลุ่มนำไปใช้กับสมาชิกของกลุ่มอื่นที่ไม่ใช่ผู้ใช้ และความคุ้มครองอื่น ๆ เพียง แต่นำไปใช้กับคนอื่นที่ไม่ใช่ผู้ใช้และสมาชิกในกลุ่ม หากมี r หรือ AW หรือ x ก็หมายความว่าจะได้รับการป้องกัน หากมียัติภังค์ก็หมายความว่ามันไม่ได้เป็น มีจริงเป็นสิ่งอื่น ๆ ที่สามารถใส่ในที่นี่นอกจากนี้ ซึ่งผมจะไม่ได้เป็นตอนนี้ umask กำหนดค่าเริ่มต้นสำหรับไฟล์ที่คุณสร้าง และเป็นหน้ากากโดยทั่วไปมันบอกว่าบิตที่คุณไม่ได้ตั้งค่า วิธีนี้ได้กลายเป็นบิต? ถ้าคุณคิดว่าของแต่ละเหล่านี้เป็นจำนวนแปด นี้เป็นบิต 1s นี้เป็น 2s นี้เป็น 4s ดังนั้น 0 ถึง 7 จะอธิบายสิ่งที่การรวมกันของ r ของ w, และ x ของคุณมี 3 เหล่านี้ แล้วจำนวนที่คล้ายกันสำหรับเหล่านี้แล้วเหล่านี้ ดังนั้น 022 หมายความ 0 อื่น ๆ 2 สำหรับกลุ่มที่ 2 สำหรับผู้ใช้ แต่นี้เป็นหน้ากาก หน้ากากคือสิ่งที่คุณจะได้ไม่ต้อง ฉันขอโทษ ฉันเพียงแค่ให้คุณสิ่งที่อยู่ในลำดับที่ไม่ถูกต้อง มันเป็นครั้งแรก 3 3 เหล่านี้เป็นผู้ใช้เหล่านี้ 3 เป็นกลุ่มเหล่านี้ 3 อื่น ๆ ขออภัยฉันให้คุณเหล่านี้ในลำดับที่ไม่ถูกต้อง 0 ซึ่งเป็นครั้งแรกของผู้ที่ไม่ได้แสดงค่าที่ แต่ถ้าจำนวนไม่ได้มีมันเป็น 0 ซึ่งหมายความว่าทั้ง 3 เหล่านี้จะได้รับอนุญาต ขอให้สังเกตว่าในหนึ่งโดยเฉพาะอย่างยิ่งนี้ x ไม่ได้รับอนุญาต เหตุผลก็คือที่เปลือกมีความสามารถในการกำหนด ไม่ว่าจะเป็นไฟล์ที่ควรจะดำเนินการหรือไม่ ตั้งแต่นี้ไม่ได้เป็นแฟ้มที่ปฏิบัติการก็ไม่ได้ตั้ง x 2 วิธีการเขียนที่ได้รับอนุญาตประเภทที่สองที่นี่ หนึ่งที่อยู่ตรงกลางจะถูกปฏิเสธ ดังนั้นอีกครั้งเหล่านี้เป็นสิ่งที่ปฏิเสธ ดี x ที่ได้รับอนุญาต แต่มันไม่ใช่ที่นี่เพราะมันไม่ได้เป็นที่ปฏิบัติการ และเช่นเดียวกันสำหรับคนอื่น ๆ เพื่อให้เป็น umask ที่พบบ่อย อีกคนหนึ่งที่พบบ่อยคือ 700 - ให้ตัวเองทุกอย่างและไม่มีใครอะไร และมีความเป็นไปได้อื่น ๆ ผมจะกลับไปที่ การใช้ประวัติศาสตร์ที่ฉันสามารถค้นหากลับสำหรับการที่จะมี lwh ถูก ดังนั้นที่นี่เหล่านี้เป็นเปลือกหอย ทุบตีเจ้าของบัญชีที่เป็นระบบที่สามารถทำทุกอย่าง กลุ่มและคนอื่น ๆ สามารถทำอ่านหรือดำเนินการ แต่ไม่ได้เขียน หนึ่งนี้ไม่ได้ช่วยให้เจ้าของที่จะเขียนถึงมัน ถ้าเจ้าของอยากจะเขียนให้มันบัญชีระบบ เขาจะต้องเปลี่ยนการป้องกันครั้งแรก แต่อีกครั้ง umask ชุดเริ่มต้นโดยการหลอกลวงนั้น โดยระบุบิตที่จะไม่สามารถตั้งค่า นี้เป็นปกติในไฟล์เริ่มต้นของคุณซึ่งเป็น cshrc. สำหรับ C-เปลือก หรือรายละเอียด. สำหรับเปลือกหอยบอร์นประเภท มันสามารถเป็นที่อื่น ๆ นอกจากนี้ยังมีกรณีที่มีไฟล์อื่น ๆ ในการเริ่มต้นระบบ อย่างไรก็ตามที่ umask มีบางอย่างที่ชนิดของแปลกที่นี่, และนั่นคือเหตุผลที่มีคำสั่งเดียวสำหรับการนี​​้ ถ้าผมเขียนนี้ผมจะทำให้มันเป็นตัวแปร umask = ค่าบางอย่าง เป็นเหตุผลที่มีคำสั่งทั้งหมดเพียงเพื่อวัตถุประสงค์นี้ เหตุผลก็คือเพียงแค่นี้ไปกลับไปที่ต้นกำเนิดของระบบปฏิบัติการยูนิกซ์ Unix เป็นเพียงบางส่วนของโครงการการเขียนโปรแกรมที่ Bell Labs ในปี 1970 ในช่วงต้น คนก็มารวมตัวกันในการเขียนโปรแกรม พวกเขาไม่เคยตั้งใจที่จะกลายเป็นระบบปฏิบัติการที่ทั่วโลก คนที่แตกต่างกันเขียนชิ้นส่วนที่แตกต่างกันโดยไม่ต้องคิดเป็นอย่างมาก วิธีการที่พวกเขากำลังจะถูกนำมาใช้ - ค่อนข้างสมบูรณ์ และมันมาด้วยกันเช่นนั้นและมันยังคงเป็นเช่นนั้นในบางประการ เพื่อให้สะท้อนให้เห็นถึงประวัติความเป็นมาและยังคงมีความไม่สอดคล้องกันเหล่านี้และองค์ประกอบที่แปลกของมัน ถูก ต่อไปที่นี่ ขณะที่ผมเขียนก่อนหน้านี้ C-เปลือกที่ไม่ได้ใช้จริงมากสำหรับการเขียนโปรแกรม แม้ว่ามันจะเป็น จะรันช้ากว่าอีกครั้งการค้าออกระหว่างการใช้งานแบบโต้ตอบ ซึ่งมีการประมวลผลมากขึ้นกว่าที่เกี่ยวข้องกับความเร็ว ซึ่งสามารถทำได้โดยไม่ต้องประมวลผล คุณสมบัติพิเศษเพิ่มให้กับบอร์นเชลล์โดยกรและบอร์นอีกครั้งเปลือกหอย ดูเหมือนจะไม่ช้าลงและผมไม่ทราบว่าทำไมที่ มันก็อาจจะมีการเขียนโปรแกรมที่ดี แต่ผมไม่ได้อยู่ในฐานะที่จะรู้ว่า ความเร็วที่นี่จริงไม่ได้เป็นเช่นใหญ่จัดการแม้ว่ามันจะเป็นที่กล่าวถึง เหตุผลก็คือว่าสคริปต์เปลือกจริงได้อย่างรวดเร็วเป็นธรรม ถ้ามีจำนวนมากของคำสั่งเช่นในโปรแกรม calculational, คุณอาจจะไม่ทำมันในเชลล์สคริปต์ การดำเนินงานที่มีค่อนข้างง่ายและตรงไปตรงมา คนที่ฉันเคยมีประสบการณ์ที่ช้าเกินไป ที่เกี่ยวข้องกับการใช้งานซ้ำแล้วซ้ำอีกของคำสั่งช้า ก่อนหน้านี้ผมกล่าวถึงการแก้ไขกระแส sed คำสั่งที่เป็นไปอย่างช้า ถ้าคุณดำเนินการหลายครั้ง sed คุณจะได้รับสคริปต์ที่ช้า แต่ก็ไม่ได้เป็นเปลือกที่ช้า ใช้มันในบอร์นเชลล์จะไม่เร็วกว่าทำงานใน C-เปลือก แต่มีข้อได้เปรียบบางอย่างที่อาจจะมี ความสามารถในการเขียนโปรแกรมเพิ่มเติมในมืออื่น ๆ , มีเหตุผลที่สำคัญเหตุผลที่คุณจะใช้เปลือกหอยบอร์นประเภท C-เปลือกมีคุณสมบัติที่แปลกไป - ความจริงที่ว่าคุณไม่ทราบว่าถ้าตัวแปรเป็นตัวแปรเปลือกหรือตัวแปรสภาพแวดล้อม มันสามารถทำให้เกิดความสับสนมาก มันไม่ง่ายที่จะเขียน เพียงแค่ขึ้นอยู่กับประสบการณ์ของการเขียนโปรแกรมในภาษาอื่น ๆ ฉันคิดว่าคุณอาจพบว่าเปลือกหอยบอร์นประเภทมากขึ้นสอดคล้องกับประสบการณ์ของคุณ สคริปต์บางคนแม้ว่าจะมีหลายพันบรรทัดในระยะเวลา ผู้ที่ผมเคยเห็นที่ใช้สำหรับปะระบบปฏิบัติการ เหล่านั้นสามารถดำเนินการช้ามาก แต่คุณไม่ได้ทำงานที่บ่อยมาก ก็ต่อเมื่อคุณกำลังทำปะ, และเป็นเพียงผู้จัดการระบบที่ไม่สิ่งเหล่านั้น ดังนั้นจึงไม่ได้จริงๆมากของปัญหา ผู้ที่มีหลายร้อยสายยาวจริงดำเนินการอย่างเป็นธรรมได้อย่างรวดเร็ว กล่าวถึงที่นี่สิ่งที่การปรับปรุงเหล่านั้นมีอะไรบ้าง ผมเคยกล่าวไว้แล้วไม่กี่ของพวกเขา - อาร์เรย์คำนวณ $ () การแสดงออกสำหรับการคำนวณในทุบตีเปลือก ชนิดอื่น ๆ ของแทนคำสั่ง มีหลายชนิดที่แตกต่างกันของคำสั่งที่มีการทดสอบ โดยที่คุณสามารถทำแบบทดสอบเงื่อนไขในการดำรงอยู่ของไฟล์หรือสิ่งอื่น ๆ ล่าสุดที่นี่คำสั่งนี้ที่นี่ สิ่งนี้ทำอะไรและทำไมใครจะใช้มันได้หรือไม่ printenv VariableName เรารู้ว่าสิ่ง printenv ไม่ มันบอกเราว่าค่าของตัวแปร และ VariableName printenv จะไม่บอกเราเป็นอย่างมากเพราะไม่มีตัวแปรดังกล่าว ว่างเปล่า แต่ขอให้มันมีอะไรบางอย่างที่มีความหมาย นั่นคือไม่ได้มีอย่างใดอย่างหนึ่ง ถูก ผมคิดว่าผมไม่เคยกำหนดไว้ว่า ขอเพียงตรวจสอบสภาพแวดล้อมของฉัน นี้เป็นคำสั่งโดยที่คุณสามารถตรวจสอบสภาพแวดล้อมของคุณอีก มี EDITOR เก่าที่ดีอย่างหนึ่งที่เราเห็นก่อนที่จะเป็น สิ่งที่จะทำอย่างไร ที่นี่เรามีการแสดงออก backquote จำนี้เป็น C-เปลือก ดังนั้น EDITOR printenv จะทำให้เรามีค่าของบรรณาธิการ มัน vi แล้วมันจะตั้งค่าที่ให้กับตัวแปรคำสั่งชุด ดังนั้นตอนนี้ถ้าผมทำเสียงก้อง $ ฉันได้รับ vi ที่ดูเหมือนจะไม่เป็นประโยชน์ชะมัด แต่จริง ๆ แล้วมันไม่ได้มีวัตถุประสงค์ เนื่องจากเราไม่ทราบว่าตัวแปรเป็นตัวแปรเปลือกหรือตัวแปรสภาพแวดล้อม ด้วยการใช้ไวยากรณ์การประเมินผลเครื่องหมายดอลลาร์เราสามารถใช้ printenv เพื่อให้แน่ใจว่ามันเป็นตัวแปรสภาพแวดล้อม ดังนั้นถ้ามีการแก้ไขตัวแปรเปลือกนี้จะไม่ได้รับมัน นี้ใช้ได้เฉพาะกับตัวแปรสภาพแวดล้อม ถ้ามีตัวแปรเปลือกและฉันต้องการที่ค่าของมัน ผมต้องไปหาวิธีอื่นที่จะทำมัน วิธีหนึ่งที่จะทำเช่นนั้นจะเป็นด้วยการทำชุดและท่อ นี้เป็นหนึ่งใน metacharacters ตัวอักษรพิเศษ ก็จะส่งผลลัพธ์ของการตั้งค่าอย่างอื่น ลองมาดูสิ่งที่เราอาจจะพบว่ามี ไม่มีอะไร ถูก ขอเพียงดูว่ามีอะไรอยู่ในนั้นทั้งหมดเข้าด้วยกัน มันเป็น echo_style หนึ่งฉันกล่าวก่อน เอาล่ะเรามาดูกันเลยว่า โปรดจำไว้ว่าฉันกล่าวก่อน echo_style กำหนดวิธีการที่คำสั่ง echo จะทำงาน BSD หมายถึงการกระจายเบิร์กลีย์มาตรฐาน นี่คือเบิร์กลีย์ยูนิกซ์จากปี 1970 นั่นเป็นหนึ่งในวิธีที่สะท้อนสามารถเรียกใช้ การตั้งค่า echo_style เป็นค่าที่ใน TC-เปลือกจะทำให้เกิดเสียงสะท้อนในการทำงานในลักษณะที่ กำหนดให้ไม่ว่า แต่เพียงได้รับการตั้งค่าตัวแปรเปลือก มันจะไม่พบบรรณาธิการซึ่งไม่ได้เป็นตัวแปรเปลือก ไม่มีอะไร เพื่อให้เป็นวิธีหนึ่งในการแยกความแตกต่างของพวกเขา แต่ความจริงที่ว่าคุณมีที่จะไปผ่านบางคำสั่งแปลกเช่นนั้น แยกแยะความแตกต่างระหว่างตัวแปรเปลือกหรือตัวแปรสภาพแวดล้อม แสดงให้เห็นถึงชนิดของธรรมชาติทำไม่ได้ของ C-เปลือกเพื่อวัตถุประสงค์บางอย่าง และตอนนี้ที่ผ่านมาและอาจจะน้อยนี้เป็นหน้าคน ผู้คนที่คุณอาจจะรู้ว่าคนที่เป็นระยะสั้นคำสั่งสำหรับคู่มือ หน้าคนสำหรับหอยจะยากที่จะอ่าน พวกเขานานมาก พวกเขากำลังจัดในลักษณะที่อาจทำให้มันยากที่จะหาสิ่งที่คุณกำลังมองหา ดังนั้นหากคุณกำลังมองหาสิ่งที่มีวัตถุประสงค์ คุณอาจไม่ทราบว่าวัตถุประสงค์ที่เป็นตัวแปรเปลือกหรือสิ่งอื่น ดังนั้นคุณอาจไม่ทราบว่าจะมองหามัน คุณสามารถมองหาสตริงต่างๆ แต่สายมักจะมีการทำซ้ำ ดังนั้นมันเป็นเรื่องยากที่จะอ่านโดยทั่วไป เราก็มองไปที่ TC-เปลือกหน้าคนเล็ก ๆ น้อย ๆ ก่อนที่จะหาคำสั่ง Eval บางสิ่งบางอย่างไปได้เร็วขึ้น วิธีการหนึ่งคือการค้นหาสตริง คุณสามารถใช้วิทยุติดตามตัว เพจเจอร์มีเฉือนที่จะมองหาคำสั่งหรือสตริงในการดำเนินการวิทยุติดตามตัว คนโดยเริ่มต้นจะใช้วิทยุติดตามตัวทั้งจะมากหรือน้อย ผมไม่ทราบว่าถ้าคุณคุ้นเคยกับเหล่านั้น แต่ผู้ที่สามารถแสดงไฟล์ทีละนิด ฉันได้รับการใช้น้อยในการแสดงไฟล์เหล่านี้โดยเฉพาะอย่างยิ่งเรามีที่นี่ คุณสามารถค้นหาภายในมี คุณสามารถลองใช้สตริงการค้นหาที่แตกต่างกัน นอกจากนี้ยังมีหน้าคนในระบบปฏิบัติการที่แตกต่างกันอาจจะไม่เหมือนกัน พวกเขาสามารถเป็นหน้าเว็บที่แยกต่างหากสำหรับ csh และ tcsh พวกเขากำลังไม่ได้อยู่ใน Mac แต่พวกเขาอาจจะมีถ้าผู้ที่มีคำสั่งแยก ถ้าดวลจุดโทษไม่ได้จริงๆเรียกทุบตีมีอาจจะเป็นหน้าคนที่แยกจากกัน บางระบบมีหน้าคนที่แยกจากกันเพียงสำหรับ C-เปลือกในตัวคำสั่ง บางครั้งถ้าคุณต้องการที่จะอ่านคำอธิบายของในตัวคำสั่ง ที่ยังอยู่ในเส้นทางเช่นสะท้อนคุณจะต้องอ่านหน้าคนที่คำสั่งเกี่ยวกับการสะท้อนว่า เพื่อตรวจสอบว่ามันจะทำงานเป็นในตัวคำสั่ง แม้ว่าคุณจะไม่ได้เรียกร้องในตัวคำสั่ง นั่นเป็นข้อเสียเปรียบของระบบปฏิบัติการโดยทั่วไปไม่เพียง แต่สำหรับหอย แต่สำหรับหอยโดยเฉพาะอย่างยิ่งหน้าคนมีความยาวมาก ส่วนหนึ่งเป็นเพราะพวกเขาได้เพิ่มคุณสมบัติที่มีประโยชน์กับพวกเขาซึ่งอาจจะเป็นบวก ถูก มีคำถามหรือข้อสงสัย หัวข้อที่คุณต้องการเพื่อนำมาขึ้น? อะไรที่เกี่ยวข้องที่นี่ ดีก็รับที่ดีมากพูดคุยกับคุณทั้งหมด ฉันหวังว่าคุณมีอะไรบางอย่างออกมาจากการสัมมนาครั้งนี้ ที่จะเป็นประโยชน์สำหรับคุณในความพยายามของคุณในอนาคต [CS50.TV]