Rozumiem, że jeśli wpiszesz ls *
, to faktycznie zostanie rozwinięte, ls a b c
gdy bieżący bezpośrednio ma pliki a
, b
i c
.
Zastanawiałem się, czy istnieje sposób, aby to rozwinąć, zanim wejdę. Podobne do działania klawiszy Ctrl + X lub tabulacji .
Żeby się wyrazić
$ ls *
<press magic key>
$ ls a b c
w podobny sposób jak:
$ ls ~/
<press tab>
$ ls /home/username
Myślałem, że już to widziałem, ale mogłem się mylić.
bash
autocomplete
globbing
bramp
źródło
źródło
Odpowiedzi:
Możesz użyć
glob-expand-word
funkcji z manbash
:Dodaj coś takiego do swojego
~/.inputrc
:Tak więc
$ ls *
następuje Ctrl-Xrozwinięcie do$ ls a b c
, w twoim przykładzie.źródło
bind -p | grep 'C-x'
je zobaczyć.C-x*
moim systemem.W bashie wywoływana jest funkcja readline
glob-expand-word
i jest CtrlX*domyślnie związana .źródło
W
vi
trybie (set -o vi
) „magicznym kluczem” jest Esc*. Działa to zarówno z, jakbash
iksh
.źródło
Aby z nich skorzystać, możemy to zrobić
ls *
Ctrl+x *lub
ls *
Esc *Rozwiń skomplikowane linie przed wciśnięciem Enter
źródło
Alternatywą dla glob-expand-word (\ Cx *) jest wstawianie uzupełnień (\ e *). Działa bez gwiazdki na końcu, ale zawiera również inne uzupełnienia, takie jak ukryte pliki. Mam odbicie zarówno w ~ / .inputrc:
glob-complete-word (\ eg) może być użyty do konwersji np .
/System/Library/Launch*/*Finder
na/System/Library/LaunchAgents/com.apple.Finder.plist
.źródło