Saya telah menggunakan terminal setiap hari selama bertahun-tahun sekarang. Saya menggunakan shell non-default yang sangat disesuaikan. Saya menggunakan penyelesaian tab secara ekstensif dan telah menghafal flag untuk banyak perintah. Sampai sekitar setahun yang lalu, saya pikir saya telah mencapai puncak produktivitas terminal. Kemudian, saya menemukan gelombang utilitas shell yang, meskipun tidak jelas, secara mendasar mengubah cara saya berinteraksi dengan lingkungan terminal saya menjadi lebih baik.
Artikel ini adalah yang pertama dalam seri tentang utilitas baru ini (ditambah beberapa alat yang sudah saya kenal lebih lama, dan suka). Hari ini, kita akan melihat alat khusus untuk berpindah di sekitar sistem file Anda.
Melompat-lompat:z
Anda tahu bagaimana Anda bisa mengetikkan beberapa huruf pertama dari situs web yang umum digunakan ke browser Anda dan menekan Enter dengan keyakinan bahwa Anda akan dibawa ke tempat yang tepat? Bagaimana jika kami membawa pengalaman yang sama ke dalam cangkang Anda? Bayangkan Anda dapat berteleportasi ke direktori yang biasa digunakan hanya dengan mengetikkan sebagian kecil namanya. Itulah yang z
tidak.
z
skrip shell melacak direktori yang Anda kunjungi dan kapan Anda mengunjunginya. Ini menggabungkan frekuensi akses Anda ke direktori dengan keterkinian akses Anda untuk menentukan "frekuensi" akses Anda. Saat Anda memberikan beberapa huruf untuk nama direktori, z
memilih kandidat yang berisi substring yang disediakan dengan frekuensi tertinggi. Hasilnya benar dalam jumlah waktu yang menakutkan.
Ini dia aksinya:
Fakta Singkat:
bash
/zsh
implementasi:GitHubfish
implementasi:GitHub- Lisensi (
bash
/zsh
):WTFPLv2 - Lisensi (
fish
):MIT - Bahasa:Skrip shell
Ada sejumlah alat serupa di luar sana, seperti autojump
dan fasd
. Coba semuanya!
Penemuan fuzzy:fzf
Terkadang, mencari hal-hal dengan ekspresi reguler berlebihan. Ada saat-saat di mana huruf yang tepat harus muncul dalam urutan yang benar. fzf
utilitas memungkinkan Anda mencari kecocokan fuzzy tanpa rasa sakit. Bagaimana alat ini berhubungan dengan bergerak di sekitar sistem file Anda? Tunggu saja dan Anda akan lihat.
Secara default, fzf
bekerja di stdin, jadi Anda dapat menggunakannya seperti grep
:
$ fzf < long-log-file.txt
Contoh langsung:
Karena fzf
berfungsi untuk memfilter stdin dan mengirimkan output pada stdout, Anda dapat melakukan lebih dari sekadar mencari file dengan alat ini. Ingin mencari direktori di bawah direktori saat ini?
$ fzf
Betul sekali. Jika stdin bukan pipa, fzf
mencari semua file di bawahnya dan mengeluarkan pilihan Anda di stdout, yang memudahkan untuk menggabungkan hasilnya dengan perintah lain seperti editor.
Jika Anda ingin mencapai hal yang sama dengan kontrol lebih, Anda dapat menjalankan:
$ find . -type d | fzf
Anda dapat menggunakan fzf
untuk bergerak dengan berlari:
$ cd $(find . -type d | fzf) #bash/zsh
$ cd (find . -type d | fzf) #fish
Sekarang, ada juga aplikasi seru lainnya. Anda bisa:
- Ingat perintah dari riwayat Anda dengan:
$ eval $(history | fzf) #bash/zsh $ eval (history | fzf) #fish
- Edit file di bawah direktori saat ini dengan:
$ $EDITOR $(find . | fzf) #bash/zsh $ $EDITOR (find . | fzf) #fish
- Pilih paket untuk menginstal dengan:
$ sudo apt install $(apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | sed 's|([^/]+)/.*|\1|' | fzf) #bash/zsh $ sudo apt install (apt search <word> 2>/dev/null | tail -n+3 | grep '^\w' | string split / | fzf) #fish
- Buat pilihan, secara umum, berdasarkan teks yang dibatasi baris. Langit adalah batasnya!
fzf
utilitas memiliki integrasi yang ada dengan bash
, zsh
, dan fish
. Jika Anda menginstal shell tersebut, fzf
secara alami menambah dan memperluas alur kerja seperti "penelusuran indeks terbalik" dan penyelesaian tab. Saya pengguna berat fish
integrasi, saya sendiri.
Fakta Singkat:
- Dapatkan
fzf
:GitHub - Lisensi:MIT
- Bahasa:Go
Ingin lebih?
Jika alat ini terlihat berguna bagi Anda, nantikan artikel lainnya. Jika Anda tidak sabar, seri ini didasarkan pada ceramah yang saya berikan di All Things Open 2019. Anda dapat menemukan lebih banyak alat dan trik di sana.