การเขียนคำว่า "เปิด" ในส่วนสุดท้ายเป็นเรื่องแปลกเล็กน้อย อย่างไรก็ตาม จุดเริ่มต้นของบทความแรก (การดำเนินการเชิงตัวเลข) จริงๆ แล้วเป็นเพียงส่วนเริ่มต้นเล็กๆ เท่านั้น มีการกล่าวถึงว่าซีรีส์ทั้งหมดจำเป็นต้องมีพื้นฐานการเขียนโปรแกรมของเชลล์ ดังนั้น เพื่อให้ผู้อ่านที่ไม่มีพื้นฐานการเขียนโปรแกรมของเชลล์สามารถ เมื่ออ่านซีรีส์นี้ ฉันก็มาถึงตอนจบเพื่อเขียนบทเปิดเรื่องนี้ใหม่ บทเริ่มต้นจะแนะนำเชลล์เป็นหลัก สภาพแวดล้อมการทำงานของเชลล์ ไวยากรณ์พื้นฐานของเชลล์ และทักษะการดีบัก
อันดับแรก ให้เราดูตำแหน่งของเชลล์ในระบบปฏิบัติการทั้งหมดจากรูปต่อไปนี้ วงกลมด้านนอกของรูปภาพจะอธิบายระบบปฏิบัติการทั้งหมด (เช่น
เดเบียน/อูบุนตู/สแล็กแวร์เป็นต้น) วงกลมด้านในจะอธิบายแกนหลักของระบบปฏิบัติการ (เช่น
เคอร์เนลลินุกซ์),และ
เปลือกและ
กุยยังทำหน้าที่เป็นส่วนต่อประสานระหว่างผู้ใช้กับระบบปฏิบัติการ

กุยจัดเตรียมอินเทอร์เฟซผู้ใช้แบบกราฟิกที่ใช้งานง่ายและเรียนรู้ได้ง่าย และ
เปลือกโดยให้อินเทอร์เฟซบรรทัดคำสั่งแก่ผู้ใช้ รับอินพุตแป้นพิมพ์ของผู้ใช้ วิเคราะห์และดำเนินการคำสั่งในสตริงอินพุต จากนั้นส่งคืนผลลัพธ์การดำเนินการให้กับผู้ใช้ อาจซับซ้อนกว่าในการใช้งาน แต่เนื่องจากใช้ทรัพยากรน้อยกว่า นอกจากนี้ หลังจากมีความเชี่ยวชาญในการดำเนินงานแล้ว ประสิทธิภาพการทำงานอาจดีขึ้น และมีฟังก์ชันการประมวลผลแบบแบตช์ ดังนั้นจึงเป็นที่นิยมอย่างมากในบางแอปพลิเคชัน
เปลือกในฐานะอินเทอร์เฟซผู้ใช้ จริงๆ แล้วมันเป็นล่าม (ล่ามเช่น in
ลินุกซ์ต่อไปนี้มีการใช้กันทั่วไปมากขึ้น
ทุบตี) เราสามารถดูกระแสได้
เปลือก-
$ echo $Shell/bin/bash$ ls -l /bin/bash-rwxr-xr-x 1 รูทรูท 702160 13-05-2551 02:33 /bin/bash
ล่ามไม่เพียงแต่สามารถตีความคำสั่งง่ายๆ เท่านั้น แต่ยังตีความไฟล์ด้วยโครงสร้างไวยากรณ์เฉพาะซึ่งเรียกว่าสคริปต์อีกด้วย วิธีการตีความคำสั่งและไฟล์สคริปต์เหล่านี้โดยเฉพาะไม่ได้รับการวิเคราะห์ในเชิงลึกที่นี่ โปรดดูบทความอื่นที่ฉันเขียนในปี 2551: "ช่วงเวลาของการทำงานของโปรแกรมบนบรรทัดคำสั่ง Linux"
เนื่องจากโปรแกรมสามารถตีความไฟล์ที่มีโครงสร้างทางไวยากรณ์บางอย่างได้ เราจึงสามารถเขียนตามไวยากรณ์บางอย่างได้ มันมีไวยากรณ์ประเภทใด วิธีเรียกใช้งาน และวิธีแก้ไขข้อบกพร่อง ด้านล่างเราใช้
ทุบตีเราจะมาพูดถึงประเด็นเหล่านี้ด้วยตัวอย่าง
เพื่ออำนวยความสะดวกในการฝึกหัดต่อไปนี้ ขั้นแรกเราได้ตั้งค่าสภาพแวดล้อมการทำงานขั้นพื้นฐาน: ในระบบปฏิบัติการ Linux มีการรัน
ทุบตีบรรทัดคำสั่งกำลังรอให้เราพิมพ์คำสั่งนี้สามารถอยู่ใต้ส่วนต่อประสานกราฟิก
เทอร์มินัล(ตัวอย่างเช่น
อูบุนตูมีพลังมาก
เทอร์มิเนเตอร์) หรืออาจเป็นอินเทอร์เฟซอักขระก็ได้
คอนโซล(สามารถใช้ได้
CTRL+ALT+F1~6สลับ) หากคุณพบกระแส
เปลือกเลขที่
ทุบตีโปรดแทนที่ด้วย:
$ chsh $USER -s /bin/bash$ su $USER
หรือเพียงพิมพ์ Bash:
$ bash$ echo $Shell # ยืนยัน /bin/bash
หากคุณไม่ได้ติดตั้งระบบปฏิบัติการ Linux คุณสามารถลองใช้บริการทดลองเสมือน Linux ที่ให้บริการโดยชุมชนสาธารณะบางแห่ง ซึ่งโดยทั่วไปแล้วจะให้บริการระยะไกล
เปลือกคุณสามารถผ่านได้
เทลเน็ตหรือเป็น
สชเข้าสู่ระบบไคลเอนต์เพื่อฝึกฝน
ด้วยสภาพแวดล้อมการทำงานขั้นพื้นฐาน จะรันคำสั่งที่พิมพ์โดยผู้ใช้หรือไฟล์สคริปต์ที่เขียนโดยผู้ใช้ได้อย่างไร
-
สมมติว่าเราได้เขียนสคริปต์เชลล์ชื่อ
ทดสอบ.ช-
วิธีแรกคือตรวจสอบให้แน่ใจว่าคำสั่งที่เราดำเนินการมีสิทธิ์ปฏิบัติการ จากนั้นพิมพ์คำสั่งโดยตรงเพื่อดำเนินการ:
$ chmod +x /path/to/test.sh$ /path/to/test.sh
วิธีที่สองคือการเขียนสคริปต์โดยตรงเป็น
ทุบตีพารามิเตอร์ของล่ามจะถูกส่งผ่านใน:
$ ทุบตี /path/to/test.sh
หรือ
$ แหล่งที่มา /path/to/test.sh
หรือ
$ ./path/to/test.sh
หนึ่งก่อน
สวัสดีชาวโลกโปรแกรม
เรามาแนะนำโครงสร้างพื้นฐานของโปรแกรมเชลล์กันดีกว่า
สวัสดีชาวโลกตัวอย่างเช่น:
#!/bin/bash -v# test.shecho สวัสดีชาวโลก
บันทึกโค้ดข้างต้นเป็น
ทดสอบ.ชแล้วรันด้วยสองวิธีข้างต้น คุณจะเห็นเอฟเฟกต์ต่อไปนี้
วิธีที่หนึ่ง:
$ chmod +x test.sh$ ./test.sh ./test.sh #!/bin/bash -v echo สวัสดีชาวโลก สวัสดีชาวโลก
วิธีที่สอง:
$ bash test.shHello แหล่ง World$ test.shHello World$ test.shHello โลก
เราพบว่ามีความแตกต่างระหว่างผลการวิ่งทั้งสองครั้ง ที่นี่เราต้องให้ความสนใจ
ทดสอบ.ชเนื้อหาของไฟล์จะมีเพียง 2 บรรทัด บรรทัดที่ 2 คือการพิมพ์
สวัสดีชาวโลกทั้งสองวิธีบรรลุวัตถุประสงค์ แต่วิธีแรกพิมพ์เนื้อหาของไฟล์สคริปต์มากขึ้น เพราะเหตุใด
เหตุผลอยู่ในบรรทัดแรกของไฟล์ เมื่อเรารันไฟล์สคริปต์โดยตรง บรรทัดนี้จะบอกระบบปฏิบัติการให้ใช้
-ล่ามและพารามิเตอร์ที่เกี่ยวข้องหลังจากสัญลักษณ์ถูกนำมาใช้ในการตีความไฟล์สคริปต์ โดยการวิเคราะห์บรรทัดแรก เราพบว่าล่ามและพารามิเตอร์ที่เกี่ยวข้องนั้น
/bin/ทุบตี -v,และ
-vบังเอิญเป็นการพิมพ์ซอร์สโค้ดของโปรแกรม แต่เราไม่ได้ให้ไว้เมื่อใช้วิธีที่สอง
ทุบตีส่งผ่านอาร์กิวเมนต์เพิ่มเติมใดๆ ดังนั้นจึงเพียงตีความไฟล์สคริปต์เอง
สำหรับรายละเอียดไวยากรณ์อื่นๆ โปรดดูโดยตรงที่ "หมายเหตุการศึกษาการเขียนโปรแกรมเชลล์" ซึ่งอยู่ภาคผนวก 1 ที่ด้านหลังของหนังสือเล่มนี้
ภาษาเชลล์เป็นภาษาที่ตีความ และขั้นตอนการเขียนโปรแกรมค่อนข้างแตกต่างจากภาษาที่คอมไพล์ กระบวนการพื้นฐานมีดังนี้:
อัลกอริธึมการออกแบบ
ใช้เชลล์เพื่อเขียนสคริปต์เพื่อใช้อัลกอริทึม
เรียกใช้สคริปต์โดยตรง
จะเห็นได้ว่าไม่มีการคอมไพล์และกระบวนการเชื่อมโยงที่ยุ่งยากของภาษาที่คอมไพล์ แต่ด้วยเหตุนี้จึงไม่สะดวกในการแก้ไขข้อบกพร่องเมื่อมันผิดพลาดเนื่องจากข้อผิดพลาดทางไวยากรณ์และข้อผิดพลาดทางตรรกะปรากฏขึ้นที่รันไทม์ ด้านล่างนี้เราจะแนะนำวิธีการดีบักโดยย่อ
คุณสามารถอ้างอิงได้โดยตรง: เทคโนโลยีการดีบักสคริปต์เชลล์หรือวิธีการดีบัก BASH
ในฐานะภาษาที่แปล ภาษาเชลล์สามารถใช้เครื่องมือที่มีอยู่จำนวนมากได้ รวมถึงการคำนวณเชิงตัวเลข การประมวลผลสัญลักษณ์ การทำงานของไฟล์ การทำงานของเครือข่าย เป็นต้น ดังนั้น กระบวนการเขียนจึงอาจมีประสิทธิภาพมากขึ้น แต่เนื่องจากถูกตีความ จึงต้อง ที่จะดำเนินการระหว่างการดำเนินการ ในระหว่างกระบวนการ การเรียกโปรแกรมภายนอกจากดิสก์อย่างต่อเนื่องและการสลับระหว่างกระบวนการอาจมีข้อเสียในด้านประสิทธิภาพการทำงาน ดังนั้น เราควรเลือกใช้เชลล์หรือภาษาอื่นในการเขียนโปรแกรมตามแอปพลิเคชัน
ช่วงเวลาที่โปรแกรมถูกรันบนบรรทัดคำสั่ง Linux
บันทึกการศึกษาการเขียนโปรแกรม Linux Shell
เทคโนโลยีการดีบักสคริปต์เชลล์
วิธีการดีบัก BASH