Alat CLI modern

Alat CLI modern ripgrep, fd, fzf, dan bat beserta keunggulannya dibanding perkakas klasik.

Daftar isi

Perkakas klasik pada command line seperti grep dan find terpasang di hampir semua sistem, tetapi sejumlah alat modern menawarkan kecepatan lebih tinggi dan nilai default yang lebih nyaman untuk kerja interaktif. Topik ini memperkenalkan ripgrep, fd, fzf, dan bat, mendemokan ripgrep langsung pada berkas contoh, serta membandingkan keempatnya dengan perkakas klasik yang digantikannya. Batas pemakaian di dalam skrip juga ditegaskan karena alat modern tidak dijamin hadir pada setiap sistem.

Karakteristik gelombang baru#

Empat alat yang dibahas pada topik ini ditulis dalam bahasa Rust dan Go, yaitu bahasa yang menghasilkan program biner cepat tanpa dependensi pustaka, sehingga pencarian pada proyek besar umumnya selesai dalam sepersekian detik. Cita rasa gelombang baru yang membedakannya dari perkakas klasik terletak pada nilai default yang mengikuti kebiasaan kerja pengembang: keluaran berwarna, pencarian yang hanya membedakan huruf besar dan kecil bila polanya memuat huruf besar, serta penghormatan terhadap .gitignore sehingga hasil build dan direktori dependensi tidak ikut dicari.

Kebalikan sifat itu perlu dicatat dengan jelas. Nilai default yang nyaman untuk manusia belum tentu cocok untuk skrip, karena skrip membutuhkan perilaku yang stabil dan dijamin ada di mana pun. Pemisahan antara alat interaktif dan alat skrip menjadi pola yang dipegang sepanjang topik ini, dan tabel perbandingan di bagian akhir merangkum pasangan klasik dan modernnya.

Berkas contoh dan pencarian dengan ripgrep#

ripgrep adalah alat pencarian pola regex (regular expression, notasi pola untuk mencocokkan teks) yang dipanggil melalui perintah rg. Tanpa argumen berkas, rg mencari secara rekursif pada direktori saat ini dan menghormati .gitignore. Berkas contoh berikut berupa log sensor suhu fiktif dan tersedia sebagai aset topik:

text catatan-suhu.txt
2026-11-04 08:00 INFO suhu 24.5
2026-11-04 09:00 INFO suhu 25.1
2026-11-04 10:00 WARNING suhu 27.8
2026-11-04 11:00 ERROR sensor 3 tidak merespons
2026-11-04 12:00 INFO suhu 26.9
2026-11-04 13:00 WARNING suhu 28.2

Pencarian dasar menampilkan setiap baris yang cocok beserta nomor barisnya karena flag -n dinyatakan eksplisit:

bash
# mencari setiap baris yang memuat WARNING
rg -n "WARNING" catatan-suhu.txt
text Keluaran
3:2026-11-04 10:00 WARNING suhu 27.8
6:2026-11-04 13:00 WARNING suhu 28.2

Flag -c mengganti tampilan baris dengan banyaknya baris yang cocok, sedangkan flag -i membuat pencarian tidak membedakan huruf besar dan kecil sehingga pola error tetap menemukan baris ERROR:

bash
# menghitung banyaknya baris INFO
rg -c "INFO" catatan-suhu.txt
# mencari tanpa membedakan huruf besar dan kecil
rg -i "error" catatan-suhu.txt
text Keluaran
3
2026-11-04 11:00 ERROR sensor 3 tidak merespons

Polanya dapat berupa regex penuh. Kelas karakter [45] mencocokkan satu karakter yang berupa 4 atau 5, sehingga hanya suhu 24 dan 25 derajat yang ditemukan:

bash
# kelas karakter regex: suhu 24 atau 25 derajat
rg -n "suhu 2[45]\." catatan-suhu.txt
text Keluaran
1:2026-11-04 08:00 INFO suhu 24.5
2:2026-11-04 09:00 INFO suhu 25.1

fd, fzf, dan bat#

fd adalah pencari berkas yang menggantikan find untuk kebutuhan sehari-hari. Pola yang diberikan dicocokkan ke nama berkas sebagai regex, direktori tersembunyi dan pola .gitignore diabaikan secara default, dan hasilnya tampil berwarna. Perintah find . -name '*suhu*' yang panjang sederhananya menjadi fd suhu.

bash
# tidak-dijalankan
# fd: mencari berkas yang namanya memuat pola suhu
# padanan klasiknya: find . -name '*suhu*'
fd suhu

fzf adalah penyaring interaktif yang membaca daftar kandidat dari masukan standar dan menyaringnya dengan pencocokan mendekati (fuzzy match) sambil pola diketik. Pada bash, pintasan Ctrl-R yang menelusuri riwayat perintah ditingkatkan oleh fzf menjadi pencarian interaktif, dan perintah git log --oneline | fzf mengalirkan daftar commit ke fzf untuk dipilih langsung.

bash
# tidak-dijalankan
# fzf: menyaring daftar secara interaktif
# biasanya dipanggil melalui pintasan Ctrl-R pada riwayat perintah
history | fzf

bat adalah penampil berkas yang memperluas cat dengan penyorotan sintaks untuk ratusan bahasa, nomor baris, dan penanda perubahan git. Pada Debian dan Ubuntu binernya bernama batcat untuk menghindari benturan nama dengan paket lain. Ketiga alat ini tidak dijalankan di sandbox karena tidak terpasang pada lingkungan ini, sedangkan perilakunya dijelaskan menurut dokumentasi resminya pada Referensi.

bash
# tidak-dijalankan
# bat: menampilkan berkas dengan penyorotan sintaks dan nomor baris
# pada Debian dan Ubuntu binernya bernama batcat
batcat catatan-suhu.txt

Perbandingan perkakas klasik dan modern#

Tabel berikut menyandingkan setiap perkakas klasik dengan pengganti modernnya beserta peningkatan utamanya.

KebutuhanPerkakas klasikPengganti modernPeningkatan utama
mencari pola di dalam berkasgrepripgrep (rg)mesin regex cepat, warna, menghormati .gitignore
mencari berkas menurut namafindfdsintaks pendek, hasil berwarna, cepat
menelusuri riwayat dan daftarCtrl-R, git-grepfzfpencarian fuzzy interaktif untuk daftar apa pun
menampilkan isi berkascatbatpenyorotan sintaks, nomor baris, integrasi git

Pemetaan pada tabel di atas tidak berarti perkakas klasik digantikan sepenuhnya. grep dan find tetap menjadi antarmuka yang dijamin POSIX dan terpasang pada hampir semua sistem, sedangkan pengganti modern dipakai demi kenyamanan sesi interaktif. Pemilihan alat karenanya diputuskan menurut konteks pemakaian, bukan menurut popularitas: pencarian yang diulang setiap hari lebih cepat dengan alat modern, sedangkan perintah yang dijalankan oleh skrip pada sistem mana pun lebih aman dengan perkakas klasik.

Alat modern di dalam skrip#

Skrip yang dikirim ke server, container, atau sistem lain tidak boleh bergantung pada rg, fd, fzf, dan bat karena keempatnya jarang terpasang secara default dan tidak dijamin oleh POSIX. Sebaliknya, grep, find, dan cat dijamin hadir pada lingkungan POSIX sehingga skrip yang memanggilnya berjalan di mana pun. Pemisahan ini sederhana tetapi penting: alat modern dipakai pada sesi interaktif, sedangkan perkakas klasik dipakai di dalam skrip portabel.

Ringkasan#

  • ripgrep mencari pola regex dengan default yang menghormati .gitignore, dan flag -c, -i, serta -n mengatur hitungan, huruf besar-kecil, dan nomor baris.
  • fd, fzf, dan bat menyempurnakan find, Ctrl-R, dan cat dengan antarmuka interaktif yang lebih nyaman.
  • Perkakas klasik tetap menjadi pilihan di dalam skrip karena dijamin POSIX dan terpasang hampir di mana pun.

Referensi#