Apakah ada cara untuk membuat bash lebih ramah TAB?

31

Saya menggunakan bash pada Mac saya dan sebagai shell cygwin saya. Secara keseluruhan, saya cukup senang dengan itu.

Namun satu keluhan saya adalah bahwa penyelesaian TAB-nya tidak sebagus penyelesaian TAB Windows Command Line.

Misalnya, jika ada dua file dengan awalan yang sama, maka bash hanya berbunyi bip pada saya ketika saya mencoba untuk menyelesaikan TAB. Jika saya terus memaku TAB, maka pada akhirnya akan menunjukkan kepada saya daftar file potensial.

Saya pasti lebih suka bagaimana Windows akan menelusuri file-file potensial tepat di baris perintah.

Apakah ada cara untuk mendapatkan bash untuk beroperasi mirip dengan Windows Command Line dalam hal ini?

Jika tidak ada (saya tidak ingin mengganti shell), apakah saya melewatkan sesuatu tentang penyelesaian TAB di bash? Apakah ada cara yang lebih efisien untuk menggunakannya?

Frank Krueger
sumber

Jawaban:

42

Untuk mendapatkan perilaku 'siklus melalui kemungkinan penyelesaian', salin yang berikut ke tempat yang sesuai di file .bashrc Anda:

[[ $- = *i* ]] && bind TAB:menu-complete

Juga, penyelesaian-bash menyediakan banyak jenis penyelesaian tambahan selain penyelesaian pathname saja. Misalnya, menu-complete berfungsi baik dengan modul bash-completion Git untuk melengkapi nama perintah, nama opsi, dll.

Chris Johnsen
sumber
apa prosedur untuk melakukan ini untuk terminal OSx?
Alex
2
@Alex: Anda mengedit file .bashrcdi direktori home Anda sehingga berisi baris yang ditentukan. Jika .bash_profilefile Anda (dalam direktori yang sama) juga tidak memiliki garis seperti source ~/.bashrc, maka Anda juga harus mengeditnya untuk memasukkan baris tersebut. Pengaturan akan aktif di jendela Terminal baru . Jika Anda tidak memiliki editor yang disukai, Anda dapat membuka file di TextEdit dengan perintah open -e ~/.bashrc; jika file belum ada, Anda harus membuatnya terlebih dahulu dengan (misalnya) perintah touch ~/.bashrc.
Chris Johnsen
1
@Alex, Bash adalah shell default pada 10.3 dan yang lebih baru, termasuk 10.7 (Lion). Pertama echo $SHELL. Itu akan menjadi shell yang dipilih untuk akun pengguna Anda. Jika bukan itu yang Anda inginkan, Anda harus mengganti shell Anda dengan chpass -s /bin/bash(atau shell apa pun yang Anda inginkan). Jika $ SHELL baik-baik saja, maka periksa Terminal> Preferensi> Startup> Shells terbuka dengan: dan Terminal> Preferensi> Pengaturan> Profil> Shell> Startup untuk melihat apakah shell pengguna default telah ditimpa dengan perintah kustom.
Chris Page
5
Adakah yang tahu apa yang harus saya ikat untuk kembali satu opsi dengan Shift + Tab?
ppp
3
@ppp dalam .bashrc:bind '"\e[Z":menu-complete-backward'
lemari besi