[gelöst] Funktion(en) aus bash/zsh-Completion zweckentfremden

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

[gelöst] Funktion(en) aus bash/zsh-Completion zweckentfremden

Beitrag von smutbert » 27.02.2021 23:27:37

Hallo allerseits,

mir ist schon öfter aufgefallen, dass die automatische Befehlsvervollständigung gelegentlich Dinge erledigt, die ich auch gerne in dem einen oder anderen Shellskript machen würde.

Ein Beispiel wäre pulseaudio/pactl. Wenn ich (in zsh)

Code: Alles auswählen

pactl set-card-profile alsa_card.pci-0000_00_1f.3
eingebe und <Tab> drücke, erhalte ich eine Liste der möglichen Profile dieser Soundkarte.

Jetzt habe ich einmal geraten, dass diese Funktion von der Datei »/usr/share/bash-completion/completions/pactl« kommt und versuche nachzuvollziehen wie das läuft.
Ich habe mir erlaubt, die Teile die ich für relevant halte hier hochzuladen NoPaste-Eintrag41287 – ich meine in Zeile 59 müsste die Liste in die Variable COMPREPLY geschrieben werden, aber bei allen meinen Versuchen ist die Ausgabe der aufgerufenen Funktion __profiles leer geblieben.

Vielleicht mag sich das jemand ansehen und mir auf die Sprünge helfen.
Zuletzt geändert von smutbert am 28.02.2021 12:22:14, insgesamt 1-mal geändert.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Funktion(en) aus bash/zsh-Completion zweckentfremden

Beitrag von eggy » 28.02.2021 04:47:54

compgen ist nen bash-built-in, auf ner zsh ohne userconfig gibts "zsh: command not found: compgen"
Schau mal wie die zsh completion funktioniert, da gibts sicher ähnliches.

Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Funktion(en) aus bash/zsh-Completion zweckentfremden

Beitrag von smutbert » 28.02.2021 10:53:07

Ohje, da habe ich ja komplett an der falschen Stelle gesucht (ich hatte nur vom zshwiki.org in Erinnerung, dass zsh die auto-completion-Skripte der bash unterstützt, habe aber nicht gewusst, dass man das erst aktivieren muss).

Dann dürfte also »/usr/share/zsh/vendor-completions/_pulseaudio« verantwortlich sein – einmal sehen ob ich da weiter komme als bei der bash-Variante.

Benutzeravatar
smutbert
Moderator
Beiträge: 8313
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: [gelöst] Funktion(en) aus bash/zsh-Completion zweckentfremden

Beitrag von smutbert » 28.02.2021 13:10:15

Auweia, die Spracheinstellungen waren schuld. Die bash-Funktion erfüllt auch unter zsh problemlos ihren Zweck, wenn die Ausgabe von pactl nicht deutsch ist.

Antworten