Erweiterte Bash Completion

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Alternativende
Beiträge: 2091
Registriert: 07.07.2006 18:32:05

Erweiterte Bash Completion

Beitrag von Alternativende » 28.10.2015 09:06:07

Hallo zusammen,

ich habe an einem Server eine interessante Entdeckung zur Vervollständigung von Bash-Befehlen gemacht.

Wenn ich dort z.B. /etc/init.d/ eingebe und dann die Pfeiltasten nach oben auswählen werden mir scheinbar alle Befehle aus der History angezeigt die so beginnen. Das funktioniert auch mit allen anderen Dingen die ich auf der Shell eingegeben habe.

An meinem Desktopsystem funktioniert das nicht... Daher nun die Frage, woher kommt dieses Feature?

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

Re: Erweiterte Bash Completion

Beitrag von smutbert » 28.10.2015 09:29:12

Schreib

Code: Alles auswählen

"\e[A":history-search-backward
"\e[B":history-search-forward
in die ~/.inputrc, eine Konfigurationsdatei für readline, das von der Bash verwendet wird. Wenn sie nicht vorhanden ist, dann kannst du sie einfach anlegen und danach musst du die bash neu starten.

Die erste Zeile sollte das machen, was du beschrieben hast, die zweite Zeile ist für die Pfeil-nach-unten-Taste - so kann man sich in den Suchergebnissen vor und zurück bewegen.

Alternativende
Beiträge: 2091
Registriert: 07.07.2006 18:32:05

Re: Erweiterte Bash Completion

Beitrag von Alternativende » 28.10.2015 16:54:52

Hi,

danke für den Tipp, werde das mal ausprobieren. Woher weißt du das?

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Erweiterte Bash Completion

Beitrag von Liffi » 28.10.2015 17:10:42

Alternativende hat geschrieben:Woher weißt du das?
Vermutlich schon mal getippt. Eine Suche nach "bash history arrow" liefert auch ähnliche Ergebnisse :-).

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

Re: Erweiterte Bash Completion

Beitrag von smutbert » 28.10.2015 17:11:16

Kann ich mich nicht mehr erinnern, gefunden habe ich es (auskommentiert) in meiner .inputrc. Eigentlich müsste so ziemlich alles was man dazu benötigt auch in der Manpage (man 3 readline) stehen.

Radfahrer

Re: Erweiterte Bash Completion

Beitrag von Radfahrer » 28.10.2015 17:11:36

Ich habe das auch schon seit längerem so. Habe allerdings noch zwei Zeilen mehr. Gefunden habe ich das vor langer Zeit im freien Magazin.

Code: Alles auswählen

## Intelligente Befehlshistory-Suche 

"\e[A":history-search-backward
"\e[B":history-search-forward
"\e[C":forward-char
"\e[D":backward-char
... und nicht vergessen, es ebenfalls in die .inputrc vom root einzufügen, damit es auch als root funktioniert.

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Erweiterte Bash Completion

Beitrag von Liffi » 28.10.2015 17:24:13

Ich habe (in der zsh) auch zwei verschiedene. Einen um den kompletten Pfade zu vervollständigen, einen nur für das 'erste Wort' (zumindest Leerzeichen ist hier ein funktionierender Trenner).
vim /test [page-up] liefert mir also vim /test/foobar
vim /test [arrow-up] kann mir aber auch vim blabla liefern.

Alternativende
Beiträge: 2091
Registriert: 07.07.2006 18:32:05

Re: Erweiterte Bash Completion

Beitrag von Alternativende » 29.10.2015 07:48:34

Ich habe die 4 Zeilen in der /etc/inputrc eingefügt. Funktioniert bestens, die Frage die sich mir stellt ist nur warum das kein Standard ist.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Erweiterte Bash Completion

Beitrag von uname » 29.10.2015 07:56:41

Wenn es dir um weitere Ideen geht, könntest du dir mal die Zsh-Konfiguration von GRML anschauen [1]. Ich denke da wirst du noch ein paar andere nette Funktionen finden, wobei ich jedoch nicht weiß ob das auch für Bash funktionieren würde. Der wahre Shell-Kenner nutzt sowies Zsh wobei ich nicht dazu gehöre. Aber ich nutze gerne Funktionen von Debiantmux bzw. Debianscreen auch wenn es nur indirekt mit der Shell zu tun hat. Und unter Openbox gönne ich mir eigentlich auch nur eine "große" Anwendung. Und das ist Debianterminator mit seinen grafischen Terminal-Funktionen.

[1] https://grml.org/zsh/

Alternativende
Beiträge: 2091
Registriert: 07.07.2006 18:32:05

Re: Erweiterte Bash Completion

Beitrag von Alternativende » 29.10.2015 08:40:28

Der terminator ist wirklich super, bin durch einen Blogeintrag darauf aufmerksam geworden und liebe es seitdem.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Erweiterte Bash Completion

Beitrag von rendegast » 29.10.2015 13:48:15

Beispiele

Code: Alles auswählen

$ locate inputrc
/etc/inputrc
....
/usr/share/augeas/lenses/dist/inputrc.aug
/usr/share/augeas/lenses/dist/tests/test_inputrc.aug
/usr/share/doc/bash/inputrc.arrows
/usr/share/doc/libreadline5/inputrc.arrows
/usr/share/doc/libreadline6/inputrc.arrows
/usr/share/doc/readline-common/inputrc.arrows
/usr/share/readline/inputrc
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten