บ้าน เสียง Unix / linux shells 101

Unix / linux shells 101

สารบัญ:

Anonim

บรรทัดคำสั่งบนระบบ Unix และ Linux นั้นมีประสิทธิภาพมาก แต่เชลล์เป็นเครื่องมือที่ทรงพลังยิ่งกว่าที่เห็น คุณสามารถปรับแต่งและเปลี่ยนพวกเขาออกเป็นเนื้อหาในหัวใจของคุณตราบใดที่คุณรู้วิธี

เชลล์คืออะไร

เกือบทุกคู่มือ Unix และ Linux มีไดอะแกรมมาตรฐานของเปลือกหุ้มรอบระบบปฏิบัติการคล้ายแท่งลูกกวาดบางชนิด เชลล์ไม่ได้เป็นเพียงแค่ส่วนต่อประสานระหว่างระบบปฏิบัติการรวมถึงเคอร์เนลระบบไฟล์และการเรียกใช้ระบบต่าง ๆ และผู้ใช้ เป็นเวลาหลายปีที่มันเป็นส่วนติดต่อผู้ใช้แบบโต้ตอบเท่านั้นก่อนที่ส่วนติดต่อผู้ใช้แบบกราฟิกจะกลายเป็นเรื่องธรรมดาในปี 1980 ส่วนต่อประสานกราฟิกกับผู้ใช้อาจถือเป็นเชลล์ชนิดหนึ่งเนื่องจากพวกมันทำหน้าที่หลายอย่างเช่นการเรียกใช้งานโปรแกรมการตั้งค่าระบบและการจัดการไฟล์


ส่วนต่อประสานข้อความที่ใช้ข้อความต่ำต้อยเหล่านี้มีพลังที่น่าประหลาดใจ สิ่งหนึ่งคือภาษาโปรแกรมเต็มเปี่ยม ก่อนการปรากฏตัวของภาษาสคริปต์ที่มีประสิทธิภาพยิ่งขึ้นเช่น Python เชลล์สคริปต์เหมาะอย่างยิ่งสำหรับการเขียนโปรแกรมที่ไม่จำเป็นต้องใช้พลังของ C พวกเขายังคงมีประโยชน์สำหรับการทำงานของระบบอัตโนมัติและการสร้างต้นแบบอย่างรวดเร็ว


นอกจากนี้ยังมีคุณสมบัติมากมายที่ทำให้การทำงานกับและค้นหาไฟล์ง่ายขึ้น หนึ่งในสิ่งที่ใช้กันอย่างแพร่หลายคือ "wildcarding" หรือ "globbing" ผู้ใช้ Unix และ Linux เกือบทุกคนคุ้นเคยกับสัญลักษณ์ตัวแทน "*" เพื่อจับคู่อักขระใด ๆ นี่เป็นหน้าที่ของเชลล์ กระสุนที่แตกต่างกันมีตัวเลือกที่ทรงพลังกว่า


หนึ่งในคุณสมบัติเด่นของ Unix คือความสามารถในการเปลี่ยนเส้นทางอินพุตและเอาต์พุตของโปรแกรม เชลล์ใช้ฟังก์ชันนี้


เชลล์เป็นเพียงโปรแกรมอื่นดังนั้นจึงเป็นไปได้สำหรับโปรแกรมเมอร์ที่มีทักษะที่เหมาะสมในการสร้าง มีหอยใหญ่หลายชนิดที่เกิดขึ้นในช่วงหลายปีที่ผ่านมา

ประวัติและบทสรุปของเชลล์

แม้ว่าจะมี Unix shells หลายตัวในช่วงแรก ๆ ของระบบปฏิบัติการ แต่สิ่งแรกที่ได้รับการยอมรับอย่างมากนอก Bell Labs ก็คือ Bourne Shell ซึ่งได้รับการตั้งชื่อตาม Stephen R. Bourne นวัตกรรมหลักของเชลล์คือสนับสนุนคุณสมบัติการเขียนโปรแกรมแบบมีโครงสร้างทำให้สามารถใช้เชลล์เป็นภาษาโปรแกรมจริงได้เป็นครั้งแรก เป็นสิ่งที่ขาดไม่ได้เลยที่ Unix และ Linux รุ่นใหม่ทั้งหมดยังคงใช้งานอยู่แม้ว่าโดยปกติแล้วจะเป็นหนึ่งในเชลล์รุ่นใหม่ที่เลียนแบบเชลล์เป้าหมาย


เชลล์หลักตัวถัดไปคือ C Shell ซึ่งโดยปกติจะย่อว่า "csh" เปลือกนี้ได้รับการพัฒนาที่ UC Berkeley กลายเป็นองค์ประกอบสำคัญของรสชาติ BSD ของ Unix ตามชื่อที่แนะนำไวยากรณ์ของมันถูกออกแบบมาให้คล้ายกับภาษาการเขียนโปรแกรม C แต่ถูกออกแบบมาเพื่อการใช้งานแบบโต้ตอบ


มันรวมกลไกประวัติที่อนุญาตให้ผู้ใช้ย้อนกลับและทำซ้ำคำสั่งใด ๆ ที่ออกก่อนหน้านี้โดยไม่ต้องพิมพ์ทั้งบรรทัดใหม่และปรับปรุงการควบคุมงานซึ่งทำให้การทำงานหลายอย่างง่ายขึ้น (โปรดจำไว้ว่านี่เป็นเวลาที่คนส่วนใหญ่ยังใช้เทอร์มินัลที่ใช้ข้อความ)


กระสุนหลักตัวถัดไปคือ Korn Shell ซึ่งมาจาก Bell Labs เปลือกหอยนั้นถูกตั้งชื่อตาม David Korn ไม่ใช่กลุ่มโดยวิธี นวัตกรรมหลักของ Korn Shell คือการแนะนำการแก้ไขบรรทัดคำสั่งเพื่อขยายฟังก์ชันประวัติให้ดียิ่งขึ้นไปอีก ผู้ใช้สามารถย้อนกลับและแก้ไขคำสั่งที่พิมพ์โดยใช้คำสั่งที่คล้ายกับโปรแกรมแก้ไข vi หรือ Emacs


ในบรรดากระสุนหลัก Bourne Again Shell หรือ bash นั้นเป็นกระสุนที่ได้รับความนิยมมากที่สุดนับตั้งแต่เปิดตัวในช่วงปลายยุค 80 เชลล์นี้พัฒนาขึ้นโดยเป็นส่วนหนึ่งของโครงการ GNU รวมเอานวัตกรรมของเชลล์ C และ Korn เข้าด้วยกันโดยที่ยังคงความเข้ากันได้กับเชลล์ Bourne ดังนั้นชื่อนี้ เป็นเชลล์ "มาตรฐาน" ในลีนุกซ์ส่วนใหญ่


Z Shell (zsh) เปิดตัวครั้งแรกในปี 1990 เป็นความฝันของผู้ใช้บรรทัดคำสั่ง ไม่เพียง แต่จะมีคุณสมบัติที่สำคัญอื่น ๆ ที่หอยส่วนใหญ่มี แต่ยังปรับแต่งได้อย่างบ้าคลั่งด้วยคุณสมบัติที่ทรงพลังมากมาย หนึ่งในสิ่งที่ทรงพลังที่สุดคือการวนซ้ำแบบซ้ำซึ่งช่วยให้ผู้ใช้จับคู่ชื่อไฟล์ในไดเรกทอรีย่อยเมื่อออกคำสั่งแทนที่จะเป็นไฟล์ในไดเรกทอรีการทำงานปัจจุบัน ผู้ใช้ขั้นสูงจริงๆยังสามารถปรับแต่งตัวเลือกความสมบูรณ์จับคู่ไฟล์โดยไม่ต้องพิมพ์ออกมาให้สมบูรณ์ และสำหรับนักพิมพ์แบบนิ้วอ้วนก็สามารถแก้ไขการสะกดของคุณได้ เชลล์นี้ล้ำหน้ามากหน้าคู่มือของมันได้ถูกแบ่งออกเป็นหลายส่วนที่ยาวมาก

การเขียนสคริปต์

ดังที่ได้กล่าวไว้ก่อนหน้านี้เชลล์ไม่ได้เป็นเพียงอินเตอร์เฟสบรรทัดคำสั่ง แต่เป็นภาษาการเขียนโปรแกรมที่ทรงพลัง ความสวยงามของการเขียนสคริปต์เชลล์คือคุณสามารถใช้ภาษาเดียวกันทั้งในการใช้งานแบบปกติและในสคริปต์ซึ่งทำให้เส้นโค้งการเรียนรู้ราบเรียบมาก เชลล์สมัยใหม่ประกอบด้วยคุณสมบัติภาษาการเขียนโปรแกรมปกติทั้งหมดรวมถึงการควบคุมการไหลฟังก์ชั่นและตัวแปร บางคนมีโครงสร้างข้อมูลขั้นสูงเช่นเชื่อมโยงอาร์เรย์


แม้จะมีพลัง แต่การเขียนโปรแกรมใน shells มีข้อผิดพลาดเล็กน้อย ปัญหาที่ใหญ่ที่สุดคือมันง่ายเกินไปที่จะเขียนสคริปต์ที่ขึ้นอยู่กับบางโปรแกรมที่อาจไม่ได้อยู่ในระบบอื่นหรือขึ้นอยู่กับรสนิยมเฉพาะของ Unix หรือ Linux นั่นเป็นเหตุผลที่เชลล์สคริปต์เหมาะที่สุดสำหรับโปรแกรมที่คุณรู้ว่าจะรันบนระบบเดียวเท่านั้น หากคุณกำลังพยายามสร้างบางสิ่งบางอย่างแบบพกพาและไม่ต้องการเขียนโปรแกรม C ทางออกที่ดีที่สุดของคุณคือการเขียนในภาษาสคริปต์อื่นเช่น Perl หรือ Python

Peek ภายใต้ฮูดของบรรทัดคำสั่ง Unix / Linux

มีพลังงานที่ซ่อนอยู่ใต้พื้นผิวของบรรทัดคำสั่ง Unix / Linux ของคุณมากขึ้น บทความนี้อาจเป็นแรงบันดาลใจให้คุณดูภายใต้ประทุนของเปลือกหอยที่คุณชื่นชอบเพื่อดูว่าคุณสามารถทำอะไรได้บ้าง หากคุณต้องการเข้าสู่การเขียนสคริปต์เชลล์คุณอาจต้องการตรวจสอบหนังสือ Unix Power Tools และเรียนรู้ Bash Shell กระดาษต้นฉบับของ Stephen R. Bourne บนเปลือกของเขายังทำหน้าที่เป็นการแนะนำที่ดีเกี่ยวกับโลกของการเขียนสคริปต์เชลล์แม้ว่ามันจะเก่า

Unix / linux shells 101