Menavigasi beberapa lapisan direktori bersarang sering kali menyebalkan. Di Firefox, mudah karena mereka memiliki bookmark. Jadi yang ingin saya lakukan untuk menandai file adalah dengan mengetik:
$ go --add classes "repo/www/public/util/classes"
Lalu, untuk masuk ke direktori ini, saya akan mengetik:
$ go classes
Sebelumnya saya telah menggunakan tautan simbolis, untuk mencapai sesuatu yang serupa, tetapi saya tidak ingin mengacaukan direktori rumah saya. Ada banyak fitur lain yang terbukti bermanfaat. Misalnya, saya ingin dapat mulai mengetik go cl
dan kemudian tekan tab untuk melengkapi otomatis. Kadang-kadang saya memiliki beberapa salinan repositori yang sudah diperiksa dan karenanya akan berguna bagi program untuk memungkinkan saya membuat beberapa konteks dan untuk mengatur bookmark relatif ke direktori basis konteks.
Jadi, sebelum saya mulai membuat skrip sendiri, apakah sudah ada yang seperti ini?
Jawaban:
Saya mencari alat bookmark-shell terlalu lama, dan saya tidak puas dengan solusi yang saya temukan.
Namun, akhirnya saya menemukan alat universal yang hebat: command-line fuzzy finder .
Ini terutama memungkinkan Anda untuk "mencari fuzzy" file (periksa animasi kaya gif dengan tautan di atas), tetapi juga memungkinkan untuk memberi makan data teks sewenang-wenang padanya dan menyaring data ini. Jadi, ide cara pintasnya sederhana: yang kita butuhkan adalah memelihara file dengan path (yang merupakan jalan pintas), dan fuzzy-filter file ini. Begini tampilannya: kami mengetik
cdg
perintah (dari "cd global", jika Anda mau), dapatkan daftar bookmark kami, pilih yang diperlukan hanya dengan beberapa penekanan tombol, dan tekan Enter. Direktori kerja diubah ke item yang dipilih:Ini sangat cepat dan mudah: biasanya saya cukup mengetik 3-4 huruf dari barang yang dibutuhkan, dan semua yang lain sudah disaring. Selain itu, tentu saja kita dapat menelusuri daftar dengan tombol panah atau dengan
Ctrl+j
/Ctrl+k
.Artikel terperinci tentang solusi pintasan / bookmark ini ada di sini: Pintasan fuzzy untuk shell Anda .
sumber
Saya pikir Anda sedang mencari sesuatu seperti autojump . Anda harus berkeliling sedikit untuk mengembangkan satu set "bobot kunci" yang berkorelasi dengan jumlah waktu yang dihabiskan dalam direktori tertentu. Kemudian, dengan asumsi Anda menghabiskan banyak waktu di dir 'kelas' itu, Anda bisa langsung ke sana dengan mengetik
Anda dapat melihat "bobot kunci" Anda dengan
sumber
f
: github.com/clvv/fSeperti disebutkan, alias adalah mekanisme yang baik. Shell bash juga memiliki built-in mekanisme untuk melompat tepat ke lokasi:
CDPATH
. Setel sepertiPATH
, tetapi digunakancd
alih-alih mencari program.Dari halaman manual:
Saya sendiri, saya telah menggabungkan ini dengan direktori yang memiliki symlink ke tempat saya ingin pergi:
Ini memiliki kelemahan bahwa direktori tampaknya tidak benar, tetapi itu bisa diperbaiki menggunakan
cd -P
atau pengaturanset -P
.sumber
alias C='cd -P .'
daripadaset -P
, karena untuk symlinks sistem saya tidak keberatan berada di direktori symlink.help cd
dan masih tidak mengerti apa -P opsi tidak.mkdir test; ln -s test linktotest; cd linktotest; pwd; cd -P .; pwd
Anda dapat menggabungkan fitur pencarian riwayat dan riwayat Bash yang ada. Tekan Ctrl-Runtuk memulai pencarian terbalik tambahan, lalu mulai mengetik bagian jalan yang paling mungkin unik.
Anda dapat terus mengetik huruf hingga Anda kembali ke perintah paling baru yang
cd
melibatkan direktori itu, atau Anda dapat menekan Ctrl-Rlagi untuk melompat kembali ke riwayat ke perintah terbaru berikutnya yang cocok dengan apa yang Anda ketikkan sejauh ini.Saya melakukan ini sepanjang waktu.
Sebenarnya, saya melangkah lebih jauh. Begitu saya mulai menemukan urutan perintah yang layak disimpan dalam sejarah tetapi tidak layak dilakukan ke skrip shell, saya mulai menghubungkannya dengan
&&
dan;
kombinator sehingga saya dapat membalikkan pencarian substring dari satu perintah panjang itu, tekan Enterdan jalankan seluruh urutan di sekali.Misalnya, inilah cara saya membangun dan menjalankan salah satu program saya selama pengembangan:
Saya melakukan ini dari direktori instal, yang berada di bawah direktori sumber tingkat atas. Dengan membungkus
cd
, membangun dan menginstal bagian dalam sub-shell, saya memastikan bahwa apa pun yang terjadi selama proses ini, saya kembali ke shell normal saya tanpa ada yang berubah. Hanya jika itu berhasil (&&) saya memulai program yang dibangun dan diinstal. Saya dapat menemukan ini dalam sejarah saya hanya dengan Ctrl-Ritu sta, bahwa menjadi semua yang biasanya saya butuhkan untuk secara unik menemukan urutan perintah ini.Contoh lain tentang bagaimana saya menggunakan ini adalah urutan yang digunakan untuk membangun RPM untuk program yang sama. Sebagian besar pekerjaan yang membosankan ada di skrip shell, tetapi masih ada beberapa perintah yang biasanya harus saya ketik untuk melakukan semua pekerjaan membangun dan menggunakan RPM yang dibangun, yang sekarang saya jarang harus ketik ulang, karena Bash terus itu dalam sejarah bagiku.
Gabungkan semua ini dengan
export HISTSIZE=bignum
danshopt histappend
dan Anda baru saja membangun memori perintah gajah.Solusi lain yang saya kodekan sekali adalah dalam jawaban saya untuk pertanyaan lain di sini . Mungkin harus dirancang untuk tujuan Anda, dan itu hanya menangani
cd
perintah, sedangkan opsi pencarian riwayat bekerja di mana-mana dan untuk setiap perintah.sumber
Saya sendiri gunakan
alias
untuk mempersingkat jalan yang sering saya kunjungi. Anda dapat menempatkan setalias
es di Andabashrc
, sehingga bash dapat mengingatnya setiap kali Anda masuk. Dan untungnya bash menambahkan alias ke auto complete.Saya akan menulis sesuatu seperti ini untuk kasus Anda:
alias go-classes="cd ~/repo/www/public/util/classes"
sumber
Anda mungkin mencari bashmark (di github).
Dari README:
Bashmarks adalah skrip shell yang memungkinkan Anda untuk menyimpan dan melompat ke direktori yang biasa digunakan. Sekarang mendukung penyelesaian tab.
sumber
Ini sama sekali tidak lengkap atau bukti bodoh, hanya konsep untuk memulai. Dengan menambahkan berikut ini di Anda,
~/.bashrc
Anda akan memiliki tiga perintah untuk menambahkan hapus dan daftar bookmark direktori (yang didasarkan pada alias shell, sehingga Anda mendapatkan semacam penyelesaian otomatis juga).Penggunaannya cukup sederhana.
bmadd
dengan argumen menambahkan alias yang dinamai argumen. Alias ini hanya membuat cd ke direktori yang ditetapkan. Tanpa argumen ia menggunakan dirname saat ini sebagai nama alias. Dengan cara yang sama,bmdel
hapus alias jika ada danbmlist
daftarkan bookmark saat ini.misalnya
sumber
Saya menemukan kebutuhan yang sama beberapa waktu lalu dan memutuskan untuk mengumpulkan beberapa skrip untuk membantu saya menandai jalur absolut / relatif dan memetakannya ke nama yang lebih pendek yang dapat saya ingat dengan mudah.
Script sangat mudah digunakan dan itu hanya akan membuat fungsi dengan nama pendek yang Anda berikan sebagai alias ke direktori yang ingin Anda lompati. Yang perlu Anda lakukan hanyalah mengetikkan nama pendek itu dan itu akan mengarahkan Anda ke direktori yang ditandai.
Berikut ini tautan ke sumber skrip bookmarker. Ngomong-ngomong, saya menamainya The Bookmarker.
Pemakaian
Setelah diinstal itu cukup sepele untuk digunakan.
Untuk menandai direktori:
Untuk menavigasi ke direktori yang ditandai:
Untuk melihat apa yang ditandai:
Untuk menghapus direktori yang ditandai:
Untuk contoh lebih lanjut, petunjuk pemasangan dll. Lihat dokumentasi yang sangat terperinci .
sumber
cdargs
adalah alat terbaik untuk bookmark direktori.Untuk contoh penggunaan, lihat bookmark untuk video perintah cd di YouTube.
Contoh Penggunaan
cdargs
adalah GUI ncurses sehingga Anda dapat bernavigasi secara visual di dalam shell Anda. Setelah terinstal, Anda mengaturnya di shell yang diberikan dengan sumber skrip shell:Ini memungkinkan beberapa fungsi yang bisa Anda panggil dari shell Anda.
Panggil GUI:
Menghasilkan GUI jenis ini:
Anda dapat menggunakan tombol panah untuk bergerak ke atas dan ke bawah untuk menavigasi daftar. Panah kiri ( ←) naik satu tingkat di pohon direktori, panah kanan ( →) akan menelusuri ke dalam direktori.
menandai direktori:
Anda dapat menggunakan cuntuk direktori saat ini Anda menavigasi atau Anda dapat menggunakan auntuk menambahkan direktori yang sedang Anda sorot dengan kursor.
mode operasi:
cdargs
sedikit mirip vi / vim dalam hal ini di mana ia memiliki gagasan tentang mode . Ada 2 diantaranya, browsing (B) dan listing (L). Anda dapat melihat mode mana yang Anda gunakan melalui tampilan di bagian bawah cangkang Anda.Mode daftar:
Mode penjelajahan:
Anda dapat mengubah mode Anda dengan menekan tombol tab (TAB ).
Ini hanya puncak gunung es, lihat halaman manual (
man cdargs
) dan juga bantuan bawaan untuk informasi lebih lanjut.sumber
Alat terbaik untuk ini adalah: wcd . Saya telah menguji banyak alat lain, dan yang ini digunakan persis seperti yang Anda tanyakan dan lebih baik dalam banyak hal daripada semua solusi sebelumnya.
sumber
Jawaban lainnya bagus dan spesifik. Cara lain untuk melihatnya adalah dengan menggunakan prosesor makro keyboard yang dapat melakukan hampir semua hal yang dapat Anda pikirkan.
Lihat AutoKey. Ini dapat menggantikan frasa seperti pengolah kata yang benar atau bash history dan juga dapat menjalankan skrip python pada hotkey yang Anda tetapkan yang dapat melakukan hampir semua hal dan juga mengirim penekanan tombol ke perangkat input karakter Anda - sama seperti jika Anda mengetiknya.
Satu - satunya "kekurangan" yang dimilikinya (sehubungan dengan pertanyaan ini) adalah bahwa ia membutuhkan gui untuk menjalankan in - gnome atau kde. Jawaban lain tidak memiliki persyaratan ini.
sumber
Ada alternatif lain yang disebut z .
Itu belajar pada setiap perubahan direktori:
Kemudian Anda dapat mengubah ke direktori itu nanti dengan pencocokan fuzzy:
sumber
Apparix adalah alat lain yang melakukan ini. Salah satu fitur yang bermanfaat adalah Anda dapat langsung menuju ke subdirektori dari tanda dan menyelesaikan tab pada sub-direktori tersebut.
sumber
Solusi lain yang, saya percaya, adalah
autojump
danz
sekarangfasd
.Ini melacak direktori mana yang Anda kunjungi dan
z dir-name
akan berubah ke direktori dengan namadir-name
yang paling sering Anda gunakan. Ini juga memiliki beberapa fungsi untuk file yang sering digunakan.Anda dapat mengkloningnya dari: https://github.com/clvv/fasd
Menginstal adalah langsung, mengkloning, melakukan instal, dan kemudian memodifikasi
.bashrc
(atau.zshrc
dll) Anda.sumber
Anda perlu menambahkan alias ke
.bashrc
atau.bash_profile
.Sekarang, katakanlah Anda ingin pintasan
~/Desktop/Coding/Projects
, untuk memanggil yang akan Anda ketikgoto_Projs
. Anda perlu menambahkan baris berikut ke file yang terbuka di editor teks:alias goto_Projs='cd ~/Desktop/Coding/Projects'
Sekarang lakukan apa pun yang diinginkan oleh editor teks Anda untuk disimpan (ke
/User/<yourusername>/
atau~/
tentu saja) dan keluar, dan ketika prompt shell dikembalikan pergisource ~/.bash_profile
Alias Anda sekarang harus tersedia untuk memanggil seperti yang dijelaskan di atas.
sumber
Saya menggunakan metode menambahkan komentar di akhir perintah dan kemudian memohon
ctrl R
untuk membalikkan pencarian komentar. Ini memiliki keuntungan sebagai berikut:ctrl R
ctrl R
dantab
on the fly untuk membuat perubahan kecil pada perintah itu sendiri, sehingga membuat komentar semacam jalan pintas generik ke keluarga perintah serupasumber