เหตุใดยูทิลิตี้บังคับ POSIX จึงไม่ได้สร้างไว้ในเชลล์?
จุดประสงค์ของคำถามนี้คือเพื่อตอบสนองความอยากรู้อยากเห็นไม่ใช่เพื่อแก้ปัญหาการคำนวณโดยเฉพาะ คำถามคือ: เหตุใดยูทิลิตี้บังคับ POSIX จึงไม่ได้สร้างอยู่ในการใช้งานเชลล์? ตัวอย่างเช่นฉันมีสคริปต์ที่อ่านไฟล์ข้อความเล็ก ๆ น้อย ๆ และตรวจสอบว่ามีการฟอร์แมตอย่างถูกต้อง แต่ใช้เวลา 27 วินาทีในการเรียกใช้บนเครื่องของฉันเนื่องจากมีการจัดการสตริงจำนวนมาก การจัดการสตริงนี้สร้างกระบวนการใหม่นับพันโดยเรียกโปรแกรมอรรถประโยชน์ต่าง ๆ ดังนั้นความเชื่องช้า ผมค่อนข้างมั่นใจว่าถ้าบางส่วนของสาธารณูปโภคที่ถูกสร้างขึ้นในคือgrep, sed, cut, trและexprแล้วสคริปต์ที่จะวิ่งในครั้งที่สองหรือน้อยกว่า (ขึ้นอยู่กับประสบการณ์ของผมใน C) ดูเหมือนว่าจะมีหลายสถานการณ์ที่การสร้างโปรแกรมอรรถประโยชน์เหล่านี้จะสร้างความแตกต่างระหว่างว่าโซลูชันในเชลล์สคริปต์มีประสิทธิภาพที่ยอมรับได้หรือไม่ เห็นได้ชัดว่ามีเหตุผลที่เลือกที่จะไม่สร้างยูทิลิตี้เหล่านี้ในตัวอาจมียูทิลิตี้หนึ่งเวอร์ชันในระดับระบบเพื่อหลีกเลี่ยงการมียูทิลิตี้รุ่นนั้นไม่เท่ากันหลายรุ่น ฉันไม่สามารถคิดด้วยเหตุผลอื่น ๆ อีกมากมายที่จะรักษาค่าใช้จ่ายในการสร้างกระบวนการใหม่จำนวนมากและ POSIX กำหนดเพียงพอเกี่ยวกับยูทิลิตี้ที่ดูเหมือนว่าปัญหาจะมีการใช้งานที่แตกต่างกันไม่มาก ไม่ขัดขืน อย่างน้อยก็ไม่เป็นปัญหาใหญ่เท่าความไร้ประสิทธิภาพของการมีกระบวนการมากมาย