Dalam dunia utilitas command line, menemukan file secara efisien telah lama menjadi tantangan. Perintah Unix tradisional find
, meskipun kuat, terkenal dengan sintaksisnya yang kompleks dan kurva pembelajaran yang curam. Hadirlah fd
, alternatif modern yang dengan cepat mendapatkan popularitas di kalangan pengembang dan power user karena sintaksisnya yang intuitif, kecepatan, dan default yang cerdas.
Kebangkitan Alat Command Line yang Didukung Rust
Ekosistem alat command line sedang mengalami kebangkitan, dengan utilitas baru yang ditulis dengan Rust seperti fd
memimpin perubahan. Dibuat oleh David Peter (dikenal sebagai sharkdp), fd
adalah bagian dari koleksi alat CLI modern yang berkembang yang memprioritaskan pengalaman pengguna tanpa mengorbankan kinerja. Bahasa pemrograman Rust memberikan alat-alat ini keamanan memori, konkurensi, dan kecepatan yang mengesankan—kualitas yang membuat mereka sangat cocok untuk operasi sistem file.
Banyak pengguna dalam komunitas mencatat bahwa sharkdp juga berada di balik alat populer lainnya seperti bat
(pengganti cat
dengan penyorotan sintaksis), hyperfine
(alat benchmarking), dan hexyl
(penampil hex). Koleksi alat ini mewakili filosofi desain yang konsisten yang berfokus pada peningkatan alur kerja pengembang sehari-hari melalui default yang lebih baik dan antarmuka yang lebih intuitif.
Alat Terkait oleh sharkdp
- bat: Klon cat dengan penyorotan sintaks
- hyperfine: Alat benchmark berbasis command-line
- hexyl: Penampil hex berbasis command-line
- numbat: Kalkulator ilmiah
Default Cerdas yang Benar-benar Masuk Akal
Salah satu aspek fd
yang paling dihargai adalah perilaku default yang penuh pertimbangan. Tidak seperti find
, yang mencari segalanya tanpa pandang bulu, fd
secara otomatis mengabaikan direktori tersembunyi, file dalam .gitignore
, dan direktori kontrol versi. Ini berarti hasil pencarian langsung lebih relevan untuk kebanyakan kasus penggunaan.
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.
Alat ini juga memiliki sensitivitas huruf besar/kecil yang cerdas—mencari tanpa memperhatikan huruf besar/kecil secara default tetapi beralih ke sensitif huruf besar/kecil jika pola mengandung huruf besar. Keputusan ini mencerminkan pemahaman mendalam tentang bagaimana pengembang benar-benar bekerja dengan file sehari-hari.
Fitur Utama fd
- Sintaks intuitif:
fd PATTERN
alih-alihfind . -name "*PATTERN*"
- Pencarian berbasis ekspresi reguler (secara default)
- Cepat berkat traversal direktori paralel
- Menggunakan warna untuk menyoroti berbagai jenis file (mirip dengan ls)
- Smart case: Pencarian tidak peka huruf besar/kecil secara default
- Mengabaikan direktori dan file tersembunyi secara default
- Mengabaikan .gitignore secara default
- Eksekusi perintah setelah hasil pencarian
- Ditulis dalam bahasa Rust
Kinerja Melalui Paralelisme
Di luar antarmukanya yang ramah pengguna, fd
memanfaatkan kemampuan konkurensi Rust untuk melakukan traversal direktori secara paralel. Pendekatan ini secara signifikan mempercepat pencarian, terutama pada sistem multi-core modern dan penyimpanan cepat seperti NVMe SSD. Pengguna melaporkan peningkatan kinerja yang dramatis dibandingkan dengan alat tradisional, dengan beberapa benchmark menunjukkan fd
menyelesaikan pencarian dalam hitungan detik yang akan memakan waktu hampir satu menit bagi find
.
Keunggulan kinerja menjadi sangat terlihat ketika bekerja dengan basis kode besar atau koleksi media. Selain itu, kemampuan alat untuk mengeksekusi perintah pada hasil pencarian secara paralel (melalui flag -x
atau -X
) lebih meningkatkan produktivitas saat melakukan operasi batch.
Melengkapi Ekosistem Alat Modern
fd
tidak ada dalam isolasi—ini adalah bagian dari ekosistem alat command line modern yang berkembang yang bekerja dengan baik bersama. Banyak pengguna memasangkan fd
dengan alat seperti ripgrep
(untuk pencarian konten), fzf
(untuk fuzzy finding), dan bat
(untuk melihat file). Alat-alat ini berbagi filosofi desain yang serupa dan sering saling melengkapi dalam alur kerja yang kompleks.
Komunitas telah merangkul alat-alat ini melalui berbagai titik integrasi, termasuk Terminal Trove, koleksi yang menampilkan utilitas terminal modern. Pendekatan ekosistem ini berarti bahwa mengadopsi fd
sering kali mengarahkan pengguna untuk menemukan alat lain yang dapat lebih meningkatkan produktivitas mereka.
Perintah fd Umum
- Pencarian sederhana:
fd pattern
- Pencarian peka huruf besar/kecil:
fd -s pattern
- Sertakan file tersembunyi:
fd -H pattern
- Cari jalur lengkap:
fd -p pattern
- Jalankan perintah pada hasil:
fd pattern -x command {}
- Cari berdasarkan ekstensi:
fd -e jpg
- Gunakan pola glob:
fd -g "*.jpg"
Menyeimbangkan Kesederhanaan dengan Kekuatan
Sementara fd
memprioritaskan kesederhanaan untuk kasus penggunaan umum, itu tidak mengorbankan kekuatan untuk skenario lanjutan. Alat ini mendukung ekspresi reguler, pemfilteran tipe file, dan kemampuan eksekusi perintah yang menyaingi atau melebihi kemampuan find
tradisional. Keseimbangan ini memungkinkan pengguna baru untuk memulai dengan cepat sambil memberikan pengguna berpengalaman fleksibilitas yang mereka butuhkan.
Beberapa pengguna mencatat bahwa meskipun fd
tidak mengimplementasikan setiap fitur dari find
, alat ini mencakup sebagian besar kasus penggunaan sehari-hari dengan kurva pembelajaran yang jauh lebih lembut. Untuk kasus khusus sesekali di mana fd
tidak cukup, alat tradisional tetap tersedia—menciptakan koeksistensi pragmatis daripada penggantian paksa.
Kebangkitan alat seperti fd
mewakili pergeseran dalam filosofi command line—yang menghargai pengalaman pengguna dan default yang masuk akal sambil mempertahankan kekuatan dan fleksibilitas yang diharapkan pengguna command line. Saat lebih banyak pengembang menemukan alternatif modern ini, kita kemungkinan akan melihat inovasi berkelanjutan di ruang ini, semakin meningkatkan alat yang kita gunakan setiap hari.
Referensi: fd