Ich verstehe das, wenn Sie tippen ls *
es ist eigentlich erweitert um ls a b c
wenn das aktuelle Verzeichnis Dateien enthält 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 funktioniert, oder Tab abgeschlossen funktioniert.
Also, 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 einmal gesehen, aber ich könnte mich geirrt haben.
bash
autocomplete
globbing
bramp
quelle
quelle
Antworten:
Du kannst den ... benutzen
glob-expand-word
Funktion, vom Menschenbash
:Fügen Sie so etwas zu Ihrer hinzu
~/.inputrc
:So
$ ls *
gefolgt von Strg-X wird zu erweitern$ ls a b c
in deinem Beispiel.quelle
bind -p | grep 'C-x'
Sie zu sehen.C-x*
auf meinem System.In der Bash wird die Readline-Fähigkeit aufgerufen
glob-expand-word
und ist gebunden an Strg X * standardmäßig.quelle
Wenn du drin bist
vi
Modus (set -o vi
) ist der "magische Schlüssel" Esc * . Das funktioniert mit beidenbash
undksh
.quelle
Um diese zu nutzen, können wir tun
ls *
Strg + x *oder
ls *
Esc *Erweitern Sie komplizierte Zeilen, bevor Sie die Eingabetaste drücken
quelle
Eine Alternative zu glob-expand-word (\ C-x *) sind Einfüge-Vervollständigungen (\ e *). Es funktioniert ohne Sternchen am Ende, aber es enthält auch andere Vervollständigungen wie versteckte Dateien. Ich habe beide in ~ / .inputrc rebound:
Mit glob-complete-word (\ eg) kann zum Beispiel konvertiert werden
/System/Library/Launch*/*Finder
zu/System/Library/LaunchAgents/com.apple.Finder.plist
.quelle