Saya mencari penyelesaian tab pada alias baris perintah saya, misalnya, katakan saya mendefinisikan alias berikut:
alias apt-inst='sudo aptitude install'
Apakah ada cara untuk mendapatkan kelengkapan yang disediakan oleh aptitude ketika saya menekan tombol tab? yaitu ketika saya menulis 'sudo aptitude install gnumer' dan tekan tab, aptitude melengkapi ini ke gnumeric, atau jika ada ketidakpastian daftar semua paket yang tersedia dimulai dengan gnumer. Jika saya melakukannya menggunakan alias saya, tidak ada - tidak ada penyelesaian.
bash
alias
autocomplete
levesque
sumber
sumber
Jawaban:
Ada utas bagus tentang ini di forum Ubuntu . Ole J mengusulkan fungsi definisi penyelesaian alias berikut ini:
Gunakan untuk mendefinisikan fungsi penyelesaian untuk alias Anda, lalu tentukan fungsi itu sebagai pelengkap alias:
Saya lebih suka menggunakan alias untuk menambahkan argumen yang selalu digunakan untuk program yang ada. Misalnya, dengan
grep
, saya selalu ingin melewatkan perangkat dan file biner, jadi saya membuat alias untukgrep
. Untuk menambahkan perintah baru sepertigrepbin
, saya menggunakan skrip shell di~/bin
folder saya . Jika folder itu ada di jalur Anda, folder itu akan selesai secara otomatis.sumber
complete -o default -F ...
alih-alihcomplete -F ...
untuk mendapatkan hal-hal seperti pelengkapan otomatis nama file yang berfungsi dengan benar ketika melewati argumen (Bash 4.3.46).Coba alias lengkap , yang memecahkan masalah ini dengan tepat.
Setelah menginstalnya, Anda dapat menggunakan satu fungsi umum untuk menyelesaikan banyak alias seperti ini:
Anda mungkin ingin mencari file complete_alias di setiap instance bash melalui
.bash_profile
atau serupa.instalasi
aplikasi
container
sekarang dapat dilengkapi secara otomatis oleh_docker()
handler penyelesaian asli ;sumber
2018 menjawab
Anda harus menambahkan alias Anda ke program 'lengkap'. Tergantung jenis pelengkapan otomatis yang ingin Anda capai, Anda harus menggunakan -c atau -F.
Untuk pelengkapan otomatis paket:
Untuk pelengkapan otomatis perintah:
Untuk memeriksa apakah alias Anda ditambahkan dengan benar:
Akhirnya, untuk menghapus alias dari 'lengkap':
Dalam kasus Anda:
sumber
complete -F xxx
tidak bekerja di OSX (Ini hanya menunjukkan penggunaancomplete: usage: complete [-abcdefgjksuv] [-pr] [-o option] [-A action] [-G globpat] [-W wordlist] [-P prefix] [-S suffix] [-X filterpat] [-F function] [-C command] [name ...]
). Apakah Anda memiliki pointer? Terima kasih.Berikut kode dari jawaban Shawn J. Goff dengan beberapa peningkatan:
shell-check
, misalnya yang pertama benar"
-"$@"
benar mengakhiri string definisi fungsi.return 0
sehingga nilai kembali dari fungsi yang mendasarinya dapat diteruskan kembali ke pemanggil..
sumber
COMP_WORDS
array. Jika kita gunakanmake-completion-wrapper _apt_get _apt_get_install apt-get install
sebagai contoh, setelahshift 2
,$@
berisiapt-get install
. Definisi fungsi mencakupapt-get install
(dua kata literal) saat menetapkanCOMP_WORDS
.Sebagai ekstensi ke @Giles menjawab, fungsi kenyamanan berikut memberi nama otomatis pada pembungkus yang dibuat
make-completion-wrapper
untuk memungkinkan penyelesaian definisi dalam satu baris:sumber