In Bash wird die Readline-Funktion aufgerufen glob-expand-word
und ist CtrlX*standardmäßig an diese gebunden .
So erweitern Sie * in der Bash-Befehlszeile
Ich verstehe, dass, wenn Sie tippen, ls *
es tatsächlich erweitert wird, ls a b c
wenn das aktuelle direkt Dateien hat a
, b
und c
.
Ich habe mich gefragt, ob es eine Möglichkeit gibt, dies zu erweitern, bevor ich die Eingabetaste drücke. Ähnlich wie Strg + X oder Tab Complete funktioniert.
Um mich klar zu machen
$ ls * <press magic key> $ ls a b c
ähnlich wie:
$ ls ~/ <press tab> $ ls /home/username
Ich dachte, ich hätte das schon mal gesehen, aber ich hätte mich geirrt.
5 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
Sie können die glob-expand-word
Funktion von Mann aus verwenden bash
:
Das Wort vor dem Punkt wird als Muster für den Pfadnamen behandelt Erweiterung, und die Liste der übereinstimmenden Dateinamen wird eingefügt, das Wort ersetzen. Wenn ein numerisches Argument angegeben wird, wird ein Sternchen wird vor der Erweiterung des Pfadnamens angehängt.
Fügen Sie so etwas zu Ihrem hinzu ~/.inputrc
:
Control-x: glob-expand-word
Also $ ls *
gefolgt von Ctrl-Xwird $ ls a b c
in Ihrem Beispiel erweitert.
Wenn Sie sich im vi
Modus ( set -o vi
) befinden, wird der "magische Schlüssel" angezeigt Esc*. Das funktioniert mit beiden bash
und ksh
.
$ bind -q glob-expand-word glob-expand-word kann über "\ Cx *" aufgerufen werden. $ bind -q Insert-Vervollständigungen Insert-Vervollständigungen können über "\ e *" aufgerufen werden.
So können wir diese nutzen
ls *
Ctrl+x *
oder
ls *
Esc *
Erweitern Sie komplizierte Zeilen, bevor Sie die Eingabetaste drücken
Eine Alternative zu glob-expand-word (\ Cx *) sind Insert-Vervollständigungen (\ e *). Es funktioniert ohne Sternchen am Ende, enthält aber auch andere Vervollständigungen wie versteckte Dateien. Ich habe beide in ~ / .inputrc rebound:
# insert glob results (\C-x* by default) "\C-g": glob-expand-word # insert completion list (\e* by default) "\ei": insert-completions
glob-complete-word (\ eg) kann beispielsweise zur Konvertierung /System/Library/Launch*/*Finder
in verwendet werden /System/Library/LaunchAgents/com.apple.Finder.plist
.
Verwandte Probleme
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?
-
8
Benennen Sie eine Gruppe von Dateien mit einem Befehl um
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
5
Wie entferne ich einen symbolischen Link zu einem Verzeichnis?
-
8
Rette mich vor dem Kauderwelsch
-
9
Wie kann ich jeder Zeile einer Textdatei eine Zeilennummer und einen Tabulator voranstellen?
-
1
Wann sollte ich Konfigurationen in .bashrc vs einfügen? .bash_profile?
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?