การพัฒนาอินเตอร์เฟซแบบคอมมานด์ไลน์ยังคงมีการพัฒนาอย่างต่อเนื่อง โดย Schemesh ได้ปรากฏตัวขึ้นในฐานะโซลูชันนวัตกรรมที่เชื่อมช่องว่างระหว่างฟังก์ชันการทำงานของเชลล์ Unix แบบดั้งเดิมกับความสามารถในการเขียนโปรแกรม Lisp แนวทางการผสมผสานนี้ได้จุดประกายให้เกิดการถกเถียงอย่างมากในชุมชนนักพัฒนา โดยเฉพาะในกลุ่มผู้ที่สนใจด้านการเขียนสคริปต์เชลล์และการเขียนโปรแกรมเชิงฟังก์ชัน
แนวทางการใช้ไวยากรณ์แบบคู่ที่เป็นเอกลักษณ์
Schemesh แนะนำวิธีการโต้ตอบกับคอมมานด์ไลน์ที่โดดเด่น โดยอนุญาตให้ผู้ใช้สามารถสลับระหว่างคำสั่งเชลล์และนิพจน์ Lisp ได้อย่างราบรื่น เชลล์จะจดจำไวยากรณ์จากอักขระเริ่มต้น - วงเล็บจะเรียกใช้โหมด Lisp ในขณะที่คำสั่งเชลล์แบบดั้งเดิมก็ยังคงทำงานได้ตามปกติ การออกแบบนี้ได้รับการตอบรับเป็นอย่างดีจากนักพัฒนาที่ชื่นชอบความสามารถในการใช้ประโยชน์จากทั้งสองรูปแบบโดยไม่ต้องออกจากเทอร์มินัล
ผมชอบมากที่มันไม่ได้สละความรู้สึกของเชลล์แบบคอมมานด์ไลน์ และการเปลี่ยนไปใช้ภาษาที่มีโครงสร้างข้อมูลที่เหมาะสมนั้นใช้เพียงแค่หนึ่งตัวอักษรเท่านั้น
คุณสมบัติเด่น:
- การแก้ไขแบบโต้ตอบพร้อมรองรับหลายบรรทัด
- การแยกวิเคราะห์ไวยากรณ์สองรูปแบบ ( Shell และ Scheme )
- รองรับการควบคุมงานอย่างเต็มรูปแบบ
- การเปลี่ยนเส้นทางและการเชื่อมต่อแบบท่อของ Shell
- รองรับการเข้ารหัส UTF-8b
- การจัดการประวัติการใช้งานอัตโนมัติ
- การเติมคำอัตโนมัติตามบริบท
การควบคุมงานและการจัดการไปป์ไลน์ขั้นสูง
จุดเด่นของ Schemesh คือระบบควบคุมงานที่ซับซ้อน ซึ่งจัดการงานเชลล์เป็นออบเจกต์ระดับแรกในสภาพแวดล้อม Lisp ผู้ใช้สามารถจัดการกระบวนการที่กำลังทำงานได้ทั้งด้วยคำสั่งเชลล์แบบดั้งเดิม (CTRL+Z, bg, fg) และฟังก์ชัน Lisp การใช้งานรองรับการประมวลผลคำสั่งไปป์ไลน์แบบขนาน ซึ่งแตกต่างจากตัวเลือกอื่นๆ เช่น Eshell ที่ประมวลผลคำสั่งแบบลำดับ
การเปรียบเทียบกับโซลูชันที่มีอยู่
การอภิปรายในชุมชนได้เน้นย้ำถึงความแตกต่างที่สำคัญระหว่าง Schemesh กับเครื่องมือที่มีอยู่เช่น scsh, Eshell และ Rash ในขณะที่ scsh มุ่งเน้นไปที่การเขียนสคริปต์เชลล์ และ Eshell ขาดการควบคุมงานแม้จะมีการผสานรวมกับ Emacs แต่ Schemesh ให้ประสบการณ์เชลล์แบบโต้ตอบที่สมบูรณ์กว่า พร้อมคุณสมบัติต่างๆ เช่น การแก้ไขบรรทัด การเติมคำอัตโนมัติ และประวัติการใช้งานที่สามารถค้นหาได้ ในขณะที่ยังคงรักษาการควบคุมการเขียนโปรแกรมอย่างสมบูรณ์ผ่าน Scheme
ความต้องการในการติดตั้ง (สำหรับ Debian):
- build-essential
- chezscheme-dev
- liblz4-dev
- libncurses-dev
- git
- uuid-dev
- zlib1g-dev
การกำหนดค่าและการขยายความสามารถ
Schemesh แสดงให้เห็นถึงการออกแบบที่รอบคอบในระบบการกำหนดค่า โดยโหลดไฟล์เริ่มต้นโดยอัตโนมัติจากตำแหน่งมาตรฐานเช่น ~/.config/schemesh/ วิธีนี้ช่วยให้ผู้ใช้สามารถปรับแต่งสภาพแวดล้อมของตนเองในขณะที่ยังคงความเข้ากันได้กับข้อกำหนด Unix เชลล์นี้ยังคงรักษาคุณสมบัติสำคัญเช่น ตัวแปรสภาพแวดล้อม ไวลด์การ์ด และการเปลี่ยนเส้นทาง ทำให้เป็นตัวเลือกที่เหมาะสมสำหรับการใช้งานประจำวัน
การผสมผสานความสามารถของเชลล์ Unix กับพลังการเขียนโปรแกรมของ Lisp ถือเป็นก้าวสำคัญในการออกแบบอินเตอร์เฟซแบบคอมมานด์ไลน์ ที่มอบสิ่งที่ดีที่สุดของทั้งสองโลกให้กับผู้ใช้ ในขณะที่ยังคงความเข้ากันได้กับเครื่องมือและเวิร์กโฟลว์ Unix ที่มีอยู่
อ้างอิง: schemesh: การผสมผสานระหว่างเชลล์ Unix และ Lisp REPL