Penyelesaian tab Bash khusus untuk program saya

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