Sejak penyelesaian tab menjadi fitur standar dalam shell saya telah menjadi pengguna yang sangat senang. Saya bahkan suka penyelesaian cerdas Bash (di mana ia hanya mencari file PDF, jika saya mengetikkan evince foo <TAB>) - asalkan menebak dengan benar.
Ini menghancurkan hari yang sebaliknya bahagia ketika Bash menggunakan penyelesaian cerdasnya untuk menolak penyelesaian.
Hari ini saya ingin:
tar xvf centos5.8_x86_1.ova
Jadi saya masuk:
tar xvf cent<TAB>
dan Bash menolak untuk menyelesaikan path karena file .ova bukan yang biasanya Anda gunakan dengan tar.
Saya tahu saya bisa menghapus paket bash-completion untuk menghapus penyelesaian cerdas. Tetapi bisakah saya mengambil kue dan memakannya juga?
Bisakah saya meminta bash untuk menggunakan penyelesaian cerdas terlebih dahulu, dan jika gagal, maka gunakan penyelesaian non-cerdas?
sumber
Jawaban:
Yang berikut ini harus mengaktifkan penyelesaian bash normal setelah semua penyelesaian 'cerdas' gagal untuk tar program, vim dan emacs:
lihat juga halaman yang relevan di manual bash online.
Peringatan: Anda mendapatkan perilaku normal untuk jenis penyelesaian (perintah / nama file / nama pengguna, dll.) Yang ditentukan oleh penyelesaian cerdas untuk perintah yang ada, misalnya, penyelesaian untuk
service
tidak akan menyelesaikan nama file bahkan jika Anda meneleponcomplete -o bashdefault service
.Dalam hal ini dan kasus lain di mana pelengkapan otomatis cerdas gagal, Anda selalu dapat menekan
Alt-/
(atauM-/
dalam notasi manual bash) untuk menyelesaikan nama file hampir dengan cara yang sama seperti TAB bekerja jika penyelesaian cerdas dinonaktifkan (hampir sama dalam arti bahwaM-/
tidak pola lengkap suka*.txt
). Lihat di sini untuk urutan kunci untuk jenis penyelesaian lainnya seperti perintah dan nama pengguna.sumber
bash completetion adalah perpanjangan dari penyelesaian standar bash dan itu sendiri merupakan program bash. Jadi, jika Anda ingin mengubah cara kerja program, ubah saja. Ini adalah perangkat lunak gratis, Anda bebas untuk melakukannya. Untuk kasus spesifik dari
tar
perintah, file tersebut adalah/usr/share/bash-completion/completions/tar
. Untuktar
melengkapi file dengan ekstensi secara otomatisova
, tambahkan saja ke barisbegitu katanya
Perhatikan bahwa ini adalah jalur dan kode yang ada untuk Debian Wheezy (versi stabil saat ini). Distro atau versi yang berbeda mungkin memiliki kode yang berbeda tetapi idenya sama. Buka kode dan sesuaikan untuk melakukan apa yang Anda inginkan.
Edit: Saya hanya melihat bahwa pertanyaannya adalah tentang setiap kali bahwa ia tidak menemukan kecocokan dan tidak hanya kasus tertentu menambahkan
ova
ketar
. Mungkin masih bisa bermanfaat bagi seseorang, untuk mengetahui di mana mereka dapat mencari sumbernya.sumber