11 Maret 2020 [bash, Programming, Tech]
Saya suka penyelesaian tab Bash, dan saya menginginkannya untuk perintah yang saya tulis, sehingga dapat secara otomatis menyelesaikan bagian baris perintah ketika saya menjalankan program saya.
Kode
Ini skrip (install-bash-completion) yang saya tulis untuk mengaturnya (tidak perlu root – diinstal di ~/.local):
#!/bin/bash
set -u
set -e
DIR=${BASH_COMPLETION_USER_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/bash-completion}/completions
mkdir -p ${DIR}
cp _myprogram ${DIR}
Skrip penyelesaian sebenarnya (_myprogram) yang diinstalnya terlihat seperti ini:
_myprogram_commands()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(bash -c "./myprogram --commands")
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -F _myprogram_commands ./myprogram
Menginstal
Untuk menginstalnya, jalankan:
./install-bash-completion
Kemudian logout dan login lagi.
Sekarang ketika Anda mengetik ./myprogram dan menekan TAB beberapa kali, Anda akan melihat daftar kemungkinan penyelesaian.
Catatan
Skrip penyelesaian harus diberi nama sesuai dengan nama program, dengan garis bawah di depannya.
Jika saya ingin ini berfungsi ketika dipasang di PATH saya, saya perlu mengubah ./myprogram menjadi myprogram saja di 2 tempat.
Perhatikan baris opts=$(bash -c “./myprogram –commands”) – ini benar-benar menjalankan program saya untuk mendapatkan daftar penyelesaian. Ini berarti program saya harus menerima opsi –commands yang mencetak perintah yang valid. Atau, saya dapat melakukan hard-code dengan mengganti baris itu hanya dengan:
opts="cmd1 cmd2 --help --etc"
Informasi lebih lanjut:
Berita Terkini
Berita Terbaru
Daftar Terbaru
News
Jasa Impor China
Berita Terbaru
Flash News
RuangJP
Pemilu
Berita Terkini
Prediksi Bola
Technology
Otomotif
Berita Terbaru
Teknologi
Berita terkini
Berita Pemilu
Berita Teknologi
Hiburan
master Slote
Berita Terkini
Pendidikan
Resep
Jasa Backlink
Slot gacor terpercaya
Anime Batch
