Wortvervollständigung in bash

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
ropri8
Beiträge: 71
Registriert: 22.02.2008 08:37:56

Wortvervollständigung in bash

Beitrag von ropri8 » 11.05.2022 19:05:45

Hallo!
In der bash gibt es ja die Pfadvervollständigung mittels <TAB>-Taste. Ich suche nun so was ähnliches, nur dass die Wörter aus einer Datei stammen, (welche zuvor eingelesen wird) und deren Name dann bei der Eingabe vervollständigt werden soll. Geht das? Hintergrund: es soll ein Batch für time-trackinig werden. Die Projekte (Wörter) werden aus einer sqlite-DB abgefragt und temporär in eine Datei geschrieben. Aus dieser stammen dann die Daten, die vervollständigt werden sollen.
Gruß, Roman

Benutzeravatar
Blackbox
Beiträge: 3750
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Wortvervollständigung in bash

Beitrag von Blackbox » 11.05.2022 20:03:55

Mich würde erst einmal interessieren, was das Ziel dieser Übung werden soll?
Eigenbau PC: Debian Sid - Kernel: 5.17.3 - Xfce 4.16 & twm
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 5.17.3 - Xfce 4.16 & twm
Notebook: TUXEDO Book BU1406 - Debian Sid - Kernel: 5.17.3 - Xfce 4.16 & twm
Alles Minimalinstallationen und ohne PA/PW.
Rootserver: Rocky Linux 8.6 - Kernel: 5.14

Freie Software unterstützen, Datenschutz stärken!

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

Re: Wortvervollständigung in bash

Beitrag von eggy » 11.05.2022 20:20:00

Code: Alles auswählen

complete -W "heute morgen gestern" meinprogramm 
der einfachste Fall wäre das da in die .bashrc zu schreiben.
Oder in eine eigene Datei und dann via source einzubinden.

ropri8
Beiträge: 71
Registriert: 22.02.2008 08:37:56

Re: Wortvervollständigung in bash

Beitrag von ropri8 » 13.05.2022 18:43:24

Hallo!
@eggy: danke für den Tipp - wusste nicht, das selbst die bash-completion derartige Möglichkeiten bietet. Ist im Prinzip genau dass, was ich suche.
Ich hab' nur noch ein Henne-Ei Problem: Der Batch, den ich mit bash-completion aufrufen will muss zuerst in der Datenbank nachschauen, um die Liste für die bash-completion zu erstellen. Daher kann er beim Aufruf noch nicht vervollständigen .... aber dass ist sozusagen eine andere Geschichte ... vielleicht fällt mir ja noch eine Lösung ein. Tipps werden natürlich gerne angenommen.

Gruß,
Roman

JTH
Moderator
Beiträge: 1725
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Wortvervollständigung in bash

Beitrag von JTH » 13.05.2022 18:55:09

ropri8 hat geschrieben: ↑ zum Beitrag ↑
13.05.2022 18:43:24
Tipps werden natürlich gerne angenommen.
Bei solchen Themen immer gerne :D Ich hab allerdings noch nicht ganz verstanden, was du vorhast.

ropri8 hat geschrieben: ↑ zum Beitrag ↑
11.05.2022 19:05:45
Hintergrund: es soll ein Batch für time-trackinig werden.
Was meint das? Batch ist eher ein Windows-Begriff – meinst du womöglich ein Shellskript, das du wie eine Anwendung für Time-Tracking benutzen und dafür aufrufen möchtest?

Wenn ja, wäre die (Bash-) Completion tatsächlich ein Ansatz. eggy hat da nur die allergrundlegenste Möglichkeit angedeutet, mit einer fix feststehenden Wortliste und ohne das Gerüst drumherum. Wenn du dir angucken willst, was da alles möglich ist, guck dich mal in /usr/share/bash-completion/completions um. Das sind die Vervollständigungsskripte, die – in der Bash zumindest – dahinterstecken, wenn du hinter einer Konsolenanwendung TAB drückst. Da ist einiges möglich, auch eine temporäre Verbindung zu einer Datenbank ist absolut denkbar. /usr/share/bash-completion/bash_completion ist ein dazugehöriges Skript, das viele Helferlein enthält und von den vorigen erwähnten benutzt wird. Es geht allerdings, mit evtl. etwas mehr Handarbeit, auch ohne das.
Manchmal bekannt als Just (another) Terminal Hacker.

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

Re: Wortvervollständigung in bash

Beitrag von eggy » 13.05.2022 19:39:32

Du könntest ein Script erstellen, dass die Anfrage zusammenbaut.
echo "complete -W \"" > projekte.sh
sqlanfrage >> projekte.sh
echo "\"" >> projekte.sh
Die projekte.sh könntest du dann in der .bashrc einbinden
"source projekte.sh" bzw ". projekte.sh".
Je nachdem wie häufig sich da was ändert und wie lange Deine Datenbankanfrage braucht, kannst du das Erstellen z.B. via cronjob, manuell oder bei Aufruf der .bashrc machen. Letzteres ist eher unpraktisch, weil man viel häufiger neue Terminals aufmacht, als man denkt.

Benutzeravatar
oln
Beiträge: 152
Registriert: 05.01.2021 09:41:24

Re: Wortvervollständigung in bash

Beitrag von oln » 20.05.2022 09:55:07

Moin,
ich habe mal ettwas ähnliches gemacht. Dabei hat mir diese Seite den richtigen Einstieg gegeben:
https://opensource.com/article/18/3/cre ... ion-script
Gruß Ole
AbuseIPDB

Antworten