fd: เครื่องมือค้นหาไฟล์สมัยใหม่ที่กำลังได้รับความนิยมในหมู่ผู้ใช้คอมมานด์ไลน์

BigGo Editorial Team
fd: เครื่องมือค้นหาไฟล์สมัยใหม่ที่กำลังได้รับความนิยมในหมู่ผู้ใช้คอมมานด์ไลน์

ในโลกของยูทิลิตี้คอมมานด์ไลน์ การค้นหาไฟล์อย่างมีประสิทธิภาพเป็นความท้าทายมาอย่างยาวนาน คำสั่ง find แบบดั้งเดิมของ Unix แม้จะมีความสามารถสูง แต่เป็นที่รู้จักในด้านไวยากรณ์ที่ซับซ้อนและเส้นโค้งการเรียนรู้ที่ชัน เข้ามาพบกับ fd ทางเลือกสมัยใหม่ที่กำลังได้รับความนิยมอย่างรวดเร็วในหมู่นักพัฒนาและผู้ใช้ระดับสูง ด้วยไวยากรณ์ที่เข้าใจง่าย ความเร็ว และค่าเริ่มต้นที่ชาญฉลาด

การปฏิวัติเครื่องมือคอมมานด์ไลน์ด้วยพลัง Rust

ระบบนิเวศของเครื่องมือคอมมานด์ไลน์กำลังประสบกับการปฏิวัติครั้งใหม่ โดยมียูทิลิตี้ใหม่ที่เขียนด้วย Rust อย่าง fd เป็นผู้นำการเปลี่ยนแปลง สร้างโดย David Peter (รู้จักในนาม sharkdp) fd เป็นส่วนหนึ่งของคอลเลกชันเครื่องมือ CLI สมัยใหม่ที่ให้ความสำคัญกับประสบการณ์ผู้ใช้โดยไม่ลดทอนประสิทธิภาพ ภาษาโปรแกรมมิ่ง Rust มอบความปลอดภัยด้านหน่วยความจำ การทำงานแบบขนาน และความเร็วที่น่าประทับใจให้กับเครื่องมือเหล่านี้—คุณสมบัติที่ทำให้พวกมันเหมาะสมอย่างยิ่งสำหรับการทำงานกับระบบไฟล์

ผู้ใช้หลายคนในชุมชนได้สังเกตว่า sharkdp ยังเป็นผู้อยู่เบื้องหลังเครื่องมือยอดนิยมอื่นๆ เช่น bat (ตัวทดแทน cat ที่มีการไฮไลต์ไวยากรณ์) hyperfine (เครื่องมือวัดประสิทธิภาพ) และ hexyl (โปรแกรมดูไฟล์แบบเลขฐานสิบหก) คอลเลกชันเครื่องมือเหล่านี้แสดงถึงปรัชญาการออกแบบที่สอดคล้องกัน มุ่งเน้นการปรับปรุงขั้นตอนการทำงานของนักพัฒนาในชีวิตประจำวันผ่านค่าเริ่มต้นที่ดีขึ้นและอินเตอร์เฟซที่เข้าใจง่ายกว่า

เครื่องมือที่เกี่ยวข้องโดย sharkdp

  • bat: โปรแกรมเหมือน cat แต่มีการไฮไลต์ไวยากรณ์
  • hyperfine: เครื่องมือวัดประสิทธิภาพบนคอมมานด์ไลน์
  • hexyl: เครื่องมือดูข้อมูลแบบเลขฐานสิบหกบนคอมมานด์ไลน์
  • numbat: เครื่องคิดเลขทางวิทยาศาสตร์

ค่าเริ่มต้นอัจฉริยะที่มีความหมายจริงๆ

หนึ่งในแง่มุมที่ได้รับการชื่นชมมากที่สุดของ fd คือพฤติกรรมค่าเริ่มต้นที่ผ่านการคิดอย่างรอบคอบ ไม่เหมือนกับ find ที่ค้นหาทุกอย่างโดยไม่แยกแยะ fd จะข้ามไดเรกทอรีที่ซ่อนอยู่ ไฟล์ใน .gitignore และไดเรกทอรีควบคุมเวอร์ชันโดยอัตโนมัติ นี่หมายความว่าผลการค้นหาจะมีความเกี่ยวข้องมากขึ้นทันทีสำหรับกรณีการใช้งานส่วนใหญ่

Big sharkdp fan. Thank you for making awesome software that i use DAILY. bat, fd, hexyl, hyperfine... I'm going to take this moment to remind all of you well-paid engineers that if we each spread $10 a month sponsoring talented software makers like sharkdp the Internet would be a better place.

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

คุณสมบัติหลักของ fd

  • ไวยากรณ์ที่เข้าใจง่าย: fd PATTERN แทนที่จะเป็น find . -name "*PATTERN*"
  • การค้นหาโดยใช้ regular expression (เป็นค่าเริ่มต้น)
  • รวดเร็วเนื่องจากการทำงานแบบขนานในการสำรวจไดเรกทอรี
  • ใช้สีเพื่อไฮไลท์ประเภทไฟล์ที่แตกต่างกัน (คล้ายกับคำสั่ง ls)
  • Smart case: ค้นหาโดยไม่คำนึงถึงตัวพิมพ์ใหญ่-เล็กโดยค่าเริ่มต้น
  • ไม่รวมไดเรกทอรีและไฟล์ที่ซ่อนอยู่โดยค่าเริ่มต้น
  • ไม่รวมไฟล์ที่อยู่ใน .gitignore โดยค่าเริ่มต้น
  • สามารถดำเนินการคำสั่งหลังจากได้ผลลัพธ์การค้นหา
  • เขียนด้วยภาษา Rust

ประสิทธิภาพผ่านการประมวลผลแบบขนาน

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

ข้อได้เปรียบด้านประสิทธิภาพจะเห็นได้ชัดเจนเป็นพิเศษเมื่อทำงานกับฐานโค้ดขนาดใหญ่หรือคอลเลกชันสื่อ นอกจากนี้ ความสามารถของเครื่องมือในการดำเนินการคำสั่งกับผลการค้นหาแบบขนาน (ผ่านตัวเลือก -x หรือ -X) ยังช่วยเพิ่มประสิทธิภาพการทำงานเมื่อทำงานกับการดำเนินการแบบกลุ่ม

เติมเต็มระบบนิเวศของเครื่องมือสมัยใหม่

fd ไม่ได้อยู่อย่างโดดเดี่ยว—มันเป็นส่วนหนึ่งของระบบนิเวศที่กำลังเติบโตของเครื่องมือคอมมานด์ไลน์สมัยใหม่ที่ทำงานร่วมกันได้ดี ผู้ใช้จำนวนมากจับคู่ fd กับเครื่องมืออย่าง ripgrep (สำหรับการค้นหาเนื้อหา) fzf (สำหรับการค้นหาแบบฟัซซี่) และ bat (สำหรับการดูไฟล์) เครื่องมือเหล่านี้มีปรัชญาการออกแบบที่คล้ายคลึงกันและมักเสริมซึ่งกันและกันในขั้นตอนการทำงานที่ซับซ้อน

ชุมชนได้นำเครื่องมือเหล่านี้มาใช้ผ่านจุดเชื่อมต่อต่างๆ รวมถึง Terminal Trove ซึ่งเป็นคอลเลกชันที่แสดงยูทิลิตี้เทอร์มินัลสมัยใหม่ วิธีการระบบนิเวศนี้หมายความว่าการนำ fd มาใช้มักนำผู้ใช้ไปสู่การค้นพบเครื่องมืออื่นๆ ที่สามารถเพิ่มประสิทธิภาพการทำงานของพวกเขาได้มากขึ้น

คำสั่ง fd ที่ใช้บ่อย

  • การค้นหาแบบง่าย: fd pattern
  • การค้นหาแบบคำนึงถึงตัวพิมพ์ใหญ่-เล็ก: fd -s pattern
  • รวมไฟล์ที่ซ่อนอยู่: fd -H pattern
  • ค้นหาเส้นทางไฟล์เต็ม: fd -p pattern
  • ดำเนินการคำสั่งกับผลลัพธ์: fd pattern -x command {}
  • ค้นหาตามนามสกุลไฟล์: fd -e jpg
  • ใช้รูปแบบ glob: fd -g "*.jpg"

การสร้างสมดุลระหว่างความเรียบง่ายกับพลัง

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

ผู้ใช้บางคนสังเกตว่าแม้ fd จะไม่ได้นำฟีเจอร์ทุกอย่างของ find มาใช้ แต่มันครอบคลุมกรณีการใช้งานประจำวันส่วนใหญ่ด้วยเส้นโค้งการเรียนรู้ที่อ่อนโยนกว่ามาก สำหรับกรณีพิเศษที่ fd ไม่เพียงพอ เครื่องมือแบบดั้งเดิมยังคงมีอยู่—สร้างการอยู่ร่วมกันอย่างเป็นรูปธรรมมากกว่าการบังคับให้เปลี่ยนแทน

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

อ้างอิง: fd