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
Wortvervollständigung in bash
- Blackbox
- Beiträge: 3750
- Registriert: 17.09.2008 17:01:20
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: Wortvervollständigung in bash
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!
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!
Re: Wortvervollständigung in bash
Code: Alles auswählen
complete -W "heute morgen gestern" meinprogramm
Oder in eine eigene Datei und dann via source einzubinden.
Re: Wortvervollständigung in bash
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
@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
Re: Wortvervollständigung in bash
Bei solchen Themen immer gerne

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?ropri8 hat geschrieben:11.05.2022 19:05:45Hintergrund: es soll ein Batch für time-trackinig werden.
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.
Re: Wortvervollständigung in bash
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.
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.
Re: Wortvervollständigung in bash
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
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
AbuseIPDB