เครื่องมือบรรทัดคำสั่ง sd ที่สัญญาว่าจะทำให้การดำเนินการค้นหาและแทนที่ง่ายขึ้นด้วยไวยากรณ์ที่เข้าใจง่าย ได้จุดประกายการถกเถียงในหมู่นักพัฒนาเกี่ยวกับข้อจำกัดในการใช้งานจริงและเครื่องมือทางเลือก ในขณะที่ sd โฆษณาตัวเองว่าเป็นเครื่องมือทดแทนที่เร็วกว่าและใช้งานง่ายกว่าเครื่องมือแบบดั้งเดิมอย่าง sed แต่ความคิดเห็นจากชุมชนกลับเผยให้เห็นความเห็นที่หลากหลายเกี่ยวกับประโยชน์ในโลกแห่งความเป็นจริง
เครื่องมือทางเลือกที่ชุมชนแนะนำ
- scooter: เครื่องมือทดแทนแบบโต้ตอบสำหรับกรณีที่ต้องการการยืนยัน
- f2: เครื่องมือสำหรับเปลี่ยนชื่อไฟล์และจัดการไฟล์
- rg (ripgrep): เครื่องมือค้นหาที่มี JSON output สำหรับสคริปต์ทดแทนแบบกำหนดเอง
- fish shell's string replace: ฟังก์ชันทดแทนในตัวสำหรับผู้ใช้ fish shell
การสนับสนุนไฟล์หลายไฟล์จุดประกายการถกเถียงหลัก
ประเด็นที่ถกเถียงกันมากที่สุดมีจุดศูนย์กลางอยู่ที่แนวทางของ sd ในการจัดการไฟล์หลายไฟล์ นักพัฒนาบางคนโต้แย้งว่า sd ขาดการสนับสนุนแบบเนทีฟสำหรับการแทนที่ทั่วทั้งโปรเจกต์ ซึ่งพวกเขาถือว่าเป็นสิ่งจำเป็นสำหรับงานพัฒนาประจำวัน ข้อจำกัดนี้ทำให้ผู้ใช้ต้องหาทางแก้ไขชั่วคราวหรือยึดติดกับเครื่องมือทางเลือกที่จัดการการดำเนินการจำนวนมากทั่วทั้งโค้ดเบสได้ดีกว่า
อย่างไรก็ตาม สมาชิกชุมชนคนอื่นๆ โต้แย้งการวิจารณ์นี้โดยชี้ให้เห็นว่า sd รับอาร์กิวเมนต์ไฟล์หลายไฟล์และทำงานได้ดีกับรูปแบบ globbing ของเชลล์ ความไม่เห็นด้วยนี้เน้นย้ำถึงความคาดหวังที่แตกต่างกันเกี่ยวกับสิ่งที่ถือว่าเป็นการสนับสนุนไฟล์หลายไฟล์แบบเนทีฟในเครื่องมือบรรทัดคำสั่ง
การอ้างสิทธิ์ด้านประสิทธิภาพพบกับความสงสัย
แม้ว่าเอกสารของ sd จะแสดงผลการทดสอบที่น่าประทับใจโดยแสดงประสิทธิภาพที่เร็วกว่า sed 2-12 เท่า แต่นักพัฒนาที่มีประสบการณ์บางคนยังคงไม่เชื่อมั่นเกี่ยวกับการเปลี่ยนเครื่องมือเพียงเพื่อประสิทธิภาพที่เร็วขึ้น ความรู้สึกนี้สะท้อนถึงความชอบที่กว้างขวางในการยึดติดกับเครื่องมือที่คุ้นเคยเมื่อความแตกต่างด้านประสิทธิภาพอาจไม่คุ้มค่ากับการเรียนรู้ไวยากรณ์และเวิร์กโฟลว์ใหม่
เกณฑ์มาตรฐานประสิทธิภาพ (sd เทียบกับ sed)
กรณีทดสอบ | ประสิทธิภาพของ sd | ประสิทธิภาพของ sed | การปรับปรุงความเร็ว |
---|---|---|---|
การแทนที่แบบง่าย (JSON ขนาด 1.5GB) | 0.997 ± 0.006 วินาที | 2.338 ± 0.008 วินาที | เร็วกว่าประมาณ 2.35 เท่า |
การแทนที่แบบ Regex (JSON ขนาด 55M) | 0.942 ± 0.004 วินาที | 11.315 ± 0.215 วินาที | เร็วกว่าประมาณ 11.93 เท่า |
เครื่องมือทางเลือกได้รับความสนใจ
การถกเถียงนี้ยังได้นำความสนใจมาสู่เครื่องมือคู่แข่งหลายตัวในพื้นที่การแทนที่ข้อความ สมาชิกชุมชนได้เน้นย้ำถึงทางเลือกอื่นๆ เช่น scooter สำหรับการแทนที่แบบโต้ตอบ f2 สำหรับการดำเนินการไฟล์ และแม้กระทั่งฟังก์ชันเชลล์ในตัวอย่างคำสั่ง string replace ของ fish สิ่งนี้ชี้ให้เห็นถึงระบบนิเวศที่หลากหลายของเครื่องมือจัดการข้อความ ซึ่งแต่ละตัวมีจุดแข็งเฉพาะสำหรับกรณีการใช้งานที่แตกต่างกัน
การถกเถียงรอบ sd แสดงให้เห็นถึงวิวัฒนาการอย่างต่อเนื่องของเครื่องมือบรรทัดคำสั่ง ที่ซึ่งทางเลือกสมัยใหม่ต้องสร้างสมดุลระหว่างการใช้งานที่ดีขึ้นกับเวิร์กโฟลว์ที่ก่อตั้งขึ้นแล้วซึ่งนักพัฒนาได้ปรับปรุงมาหลายปีของการปฏิบัติ
อ้างอิง: sd - search & displace