Виконати функцію readline без прив'язки клавіш?


26

Я якраз читав аркуш сторінки readline і виявив купу чудових команд, про які я не знав. Однак у декількох немає прив'язки ключів за замовчуванням. Чи є спосіб виконати незв’язані команди з оболонки?

Я не запитую, як зв’язати команду в ~ / .inputrc, а замість того, як виконати її як "вимкнено" з оболонки або в скрипті bash.

Наприклад, команда "dump-змінних". Чи є якась команда, яку я можу подати "dump-змінних" в якості аргументу для її виконання?


2
Я не думаю, що це є, з швидкого погляду на читальний посібник та джерело.
Джим Парис

Відповіді:


10

Я вважаю, що ви шукаєте, це сама bindкоманда. Згідно з man builtinінформацією, що працює, bind <readline-command>ви можете запускати разові дії, однак я не міг змусити її працювати так, як в керівництві сказано, що це повинно ... він продовжував робити клавіші не працюючими для мене; ваш пробіг може змінюватися. Я знайшов такі команди, які можуть вам стати в нагоді.

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]

Редагування Примітка. Хотілося б зазначити, як це дратує те, що воно не працює так, як в інструкції сказано, що слід, тому що якщо ви введете bindі потім натисніть вкладку для автоматичного завершення, вона показує всі команди.


3
Повторно виклик функцій readline: я не думаю, що посібник насправді стверджує, що ви можете це зробити; у випадку, якщо ви посилаєтесь на форму синтаксису bind readline-command: я підозрюю, що commandіснує лінія визначення (відображення), а не функція прямої дзвінки, що безпосередньо дзвониться . Автозавершення - це явно попередньо налаштований на деяких платформах (наприклад, Fedora 20), але не на багатьох інших ; його присутність НЕ означає, що ви можете зателефонувати безпосередньо в функції читання - це досить "німа" специфікація виконання команд: завершення працює на будь-якому аргументі, що постачається bind.
mklement0

1
+1 для команд для переліку функцій / макросів / змінних, що діють; варто додати -Xдля команд оболонки (визначено через -x).
mklement0
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.