Ketika saya menggunakan program like svn
dan saya ketik Terminal Gnome:
svn upd
dan tekan Tabitu selesai otomatis ke:
svn update
Apakah mungkin melakukan hal seperti itu di skrip bash khusus saya?
bash
auto-completion
UAdapter
sumber
sumber
Jawaban:
Anda bisa menggunakan Programmable Completion . Lihat
/etc/bash_completion
dan/etc/bash_completion.d/*
untuk beberapa contoh.sumber
/usr/share/bash-completion/completions/<program>
The provided link has that already
- Mungkin hari ini, tapi mungkin besok. Atau tahun depan. Atau dalam satu dekade. Apa pun yang Anda sarankan tentang dokumentasi masih relevan, Stack Overflow mengecilkan jawaban hanya tautan karena alasan ini.Saya terlambat enam bulan tetapi saya mencari hal yang sama dan menemukan ini:
Anda harus membuat file baru:
Untuk pelengkapan otomatis statis (
--help
/--verbose
misalnya) tambahkan ini:COMP_WORDS
adalah array yang berisi semua kata individual di baris perintah saat ini.COMP_CWORD
adalah indeks kata yang berisi posisi kursor saat ini.COMPREPLY
adalah variabel array dari mana Bash membaca kemungkinan penyelesaian.Dan
compgen
perintah mengembalikan array elemen dari--help
,--verbose
dan--version
mencocokkan kata saat ini"${cur}"
:Sumber: http://www.debian-administration.org/articles/316
sumber
-
dan menunjukkannya tanpa harus mulai mengetikkan kata target, hapus sajaif [...] then
danfi
./etc/bash_completion.d/
. Saya hanya datang ke sini karena saya ingin mengirim jawaban di suatu tempat, tetapi ternyata seseorang sudah tiga tahun lebih maju :) Jelas, ringkas dan contoh lengkap, terima kasih!Semua penyelesaian bash disimpan di
/etc/bash_completion.d/
. Jadi, jika Anda sedang membangun perangkat lunak dengan bash_completion, akan bermanfaat jika Anda memiliki deb / make install drop file dengan nama perangkat lunak dalam direktori tersebut. Berikut ini contoh skrip penyelesaian bash untuk Rsync:Mungkin akan bermanfaat untuk meninjau salah satu file penyelesaian bash di sana yang paling cocok dengan program Anda. Salah satu contoh paling sederhana adalah
rrdtool
file.sumber
source ~/.local/mycrazycompletion
dalam~/.bashrc
pkg-c
onfig --variable = completionsdir bash-completion` dan direktori itu adalah rekomendasi yang diberikan oleh Bash Completion FAQ yang ditautkan di atas.Berikut ini adalah tutorial lengkapnya.
Mari kita punya contoh skrip bernama admin.sh yang ingin Anda lengkapi autocomplete.
Catatan pilihan opsi. Skrip panggilan dengan opsi ini akan mencetak semua opsi yang memungkinkan untuk skrip ini.
Dan di sini Anda memiliki skrip autocomplete:
Perhatikan bahwa argumen terakhir yang harus diselesaikan adalah nama skrip yang ingin Anda tambahkan pelengkapan otomatis. Yang perlu Anda lakukan adalah menambahkan skrip autocomplete ke bashrc as
atau salin ke /etc/bash.completion.d
sumber
prev
variabelnya? Anda sepertinya tidak menggunakannya.-o nospace
opsi?Jika semua yang Anda inginkan adalah penyelesaian otomatis berbasis kata sederhana (jadi tidak ada penyelesaian sub-perintah atau apa pun),
complete
perintah memiliki-W
opsi yang hanya melakukan hal yang benar.Sebagai contoh, saya memiliki baris berikut di saya
.bashrc
untuk melengkapi otomatis sebuah program bernama jupyter :Sekarang
jupyter <TAB> <TAB>
lengkapi otomatis untuk saya.The docs di gnu.org membantu.
Tampaknya bergantung pada
IFS
variabel yang ditetapkan dengan benar, tetapi itu tidak menyebabkan masalah bagi saya.Untuk menambahkan penyelesaian nama file dan penyelesaian BASH default, gunakan
-o
opsi:Untuk menggunakan ini di zsh, tambahkan kode berikut sebelum menjalankan
complete
perintah di~/.zshrc
:sumber
bash jupyter <TAB><TAB>
?