Wie kann man den Platzhalter in Bash inline erweitern?

10

Ich erinnerte mich, dass Bash Folgendes tun kann:

Angenommen, das aktuelle Verzeichnis enthält 3 Dateien: a, b, c, wenn ich Folgendes eingebe:

$> somecommand *

und drücken Sie dann eine Taste oder Tastenkombinationen oder eine Tastenfolge. Der Platzhalter * online wird erweitert als:

$> somecommand a b c

aber ich kann mich nicht erinnern und kann die Tastenfolge nicht googeln! Hilfe!

Marstein
quelle
5
Versuchen SieCtrl-X *
Stéphane Chazelas

Antworten:

7

Wenn dies nicht der Fall ist, müssen Sie glob-expand-wordan eine Schlüsselsequenz binden . In der Regel durch Hinzufügen von etwas wie:

"\C-x*": glob-expand-word

zu .inputrc.

So überprüfen Sie das aktuelle Statusproblem wie folgt:

bind -P | grep glob-expand-word

Wo das Ergebnis sein könnte:

glob-expand-word can be found on "\C-x*".

Was bedeuten würde:

Ctrl-x*

Dies funktioniert höchstwahrscheinlich auch:

Ctrl-xCtrl-*


bind -PWerfen Sie einen Blick auf und Handbücher für andere Feinheiten.

Runium
quelle
3

Es scheint, dass Sie nach einer Vervollständigung der Liste suchen. In der Manpage für bash:

 COMP_TYPE
     Set to an integer value corresponding to the type of completion
     attempted  that caused a completion function to be called: TAB,
     for normal completion, ?, for listing completions after succes
     sive  tabs, !, for listing alternatives on partial word comple
     tion, @, to list completions if the word is not unmodified,  or
     %,  for  menu  completion.   This variable is available only in
     shell functions and external commands invoked by  the  program
     mable completion facilities

Es hängt also von der Abschlussfunktion für einen Befehl ab, wie dies abgeschlossen wird.

Anthon
quelle
2

Wenn Sie set -o viin Bash verwenden, Ctrl-X*funktioniert dies nicht.

Im set -o viModus müssen Sie Esc*stattdessen verwenden.

JohnGH
quelle
1
Es könnte erwähnenswert sein, dass, sobald Sie im normalen Modus sind, <C-X>*funktioniert, aber das <C-X>ist überflüssig und tut nichts. ( <C-X>Dekrementiert nicht wie in vi.) Wenn Sie sich im Einfügemodus befinden, müssen Sie <Esc>zuerst verwenden.
wchargin
Das ist toll. Wie heißen diese? Bash-Tastaturkürzel? Gibt es eine Dokumentation, in der ich weitere dieser Tastaturkürzel finden kann?
wisbucky
2
@wisbucky: Ein bisschen spät, aber für alle anderen ist GNU Readline dafür verantwortlich. Wenn Sie einen langsamen Tag haben, lesen Sie den Abschnitt BEARBEITUNGSBEFEHLE von man readline. Ich benutze Bash seit 10 Jahren und lerne immer noch neue.
Soren Bjornstad