>> [สัมมนา - เปลือกหอยยูนิกซ์สภาพแวดล้อม]
[ดักลาส 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]