Wykonać funkcję readline bez przypisywania klawiszy?

26

Właśnie czytałem stronę podręcznika readline i odkryłem mnóstwo świetnych poleceń, o których nie wiedziałem. Jednak kilka nie ma domyślnych przypisań klawiszy. Czy istnieje sposób na wykonanie niezwiązanych poleceń z powłoki?

Nie pytam, jak powiązać polecenie w ~ / .inputrc, ale jak wykonać je jako „jednorazowo” z powłoki lub w skrypcie bash.

Na przykład polecenie „zmienne zrzutu”. Czy jest jakieś polecenie, do którego można podać „zmienne zrzutu” jako argument do wykonania?

erikcw
źródło
2
Nie sądzę, że tak jest, od szybkiego spojrzenia na instrukcję readline i źródło.
Jim Paris,

Odpowiedzi:

10

Wierzę, że to, czego szukasz, to bindsamo polecenie. Według man builtininformacji uruchamianie bind <readline-command>pozwala na uruchamianie jednorazowe, jednak nie udało mi się sprawić, by działało tak, jak mówi instrukcja, że ​​powinno ... sprawiało, że klucze nie działały dla mnie; twój przebieg może się różnić. Znalazłem następujące polecenia, które mogą ci się przydać.

bind -p # Equivalent to dump-functions [machine readable]
bind -P # Equivalent to dump-functions [human readable]

bind -s # Equivalent to dump-macros    [machine readable]
bind -S # Equivalent to dump-macros    [human readable]

bind -v # Equivalent to dump-variables [machine readable]
bind -V # Equivalent to dump-variables [human readable]

Edytuj notatkę Chciałbym zwrócić uwagę na to, jak denerwujące jest to, że nie działa tak, jak mówi instrukcja, ponieważ powinno, ponieważ jeśli wpiszesz, binda następnie naciśniesz tab, aby wykonać automatyczne uzupełnianie, wyświetli wszystkie polecenia.

sparticvs
źródło
3
Ponownie wywołuj funkcje readline: nie sądzę, że instrukcja faktycznie twierdzi, że możesz to zrobić; w przypadku, gdy odwołujesz się do formy składni bind readline-command: Podejrzewam, że commandistnieje linia definicji (odwzorowania), a nie bezpośrednio wywoływana funkcja readline . Autouzupełnianie jest bardzo wyraźnie skonfigurowane na niektórych platformach (np. Fedora 20), ale nie na wielu innych ; jego obecność NIE oznacza, że ​​można bezpośrednio wywoływać funkcje readline - jest to dość „głupie” specyfikowanie uzupełniania poleceń: uzupełnienie działa na każdym dostarczonym argumencie bind.
mklement0
1
+1 dla poleceń wyświetlających obowiązujące funkcje / makra / zmienne; warto dodać -Xdo poleceń powłoki (zdefiniowanych przez -x).
mklement0