Bash completion

Aus Digiwiki

Wechseln zu: Navigation, Suche

Bash Completion

Für viele Programm ist die Bash completion über das gleichnamige Paket ( bash-completion in Ubuntu) vorhanden. Wer Interesse hat diese zu erweitern, legt eine Datei im Ordner /etc/bash_completion.d/ ab.

Über die Datei /etc/bash_completion erhält man ein entsprechendes Funktions Toolkit

Beispiel

nmcli ist das Command Line Interface des NetworkManagers. Wir stellen hier ein paar Autovervollständigungen für Befehle und Netzwerke zur Verfügung.

Anbwendungsbeispiele:

nmcli [TAB]

...soll uns die Optionen nm con und dev liefern


nmcli con up id Mein[TAB]

...soll uns den Namen des Profils vervollständigen, z.B. zu Mein Wlan allerdings mit escapeten Leerzeichen (also Mein\ Wlan)


File /etc/bash_completion.d/nmcli

 # bash completion for nmcli

have nmcli &&
_nmcli()
{
    local cur prev

    COMPREPLY=()
    _get_comp_words_by_ref cur prev
    if [[ "$prev" == 'nmcli' ]]; then
       COMPREPLY=( $( compgen -W "nm con dev" -- "$cur" ) )
    elif  [[ "$prev" == 'con' ]]; then
       COMPREPLY=( $( compgen -W "list status up down delete" -- "$cur" ) )
    elif  [[ "$prev" == 'up' ]]; then
       COMPREPLY=( $( compgen -W "id uuid" -- "$cur" ) )
    elif  [[ "$prev" == 'id' ]]; then
# Namen von Netzwerk Profilen koennen Leerzeichen enthalten.
# Daher definieren wir den Trennchar auf Zeilenumbruch um
# und escapen die Leerzeichen in der Ausgabe
       local IFS=$'\n'
       COMPREPLY=( $( compgen -W "$(nmcli -m tabular -t -f NAME con list )" -- "$cur" |sed -e 's/ /\\&/g' ) )
    fi
    } &&

complete -F _nmcli nmcli
Persönliche Werkzeuge