Может ли "bind -x" получить доступ к текущей командной строке? - PullRequest
0 голосов
/ 29 марта 2019

Когда я набираю какую-то команду, я иногда хочу прочитать справку по команде. Например, когда я печатаю

sort --overwrite some_texI # I is a cursor

, я бы хотел проверить, есть ли у команды sort опция --overwrite, читая вывод sort --help или какую-либо опцию-сводку, которую я сделал. Я ожидаю, что bind -x может понять это, но не знаю, как передать (часть) информацию о текущей командной строке (в данном случае, слово «сортировать»). Конечно, bind -x 'KEY: "sort --help"' работает хорошо, но я хочу, чтобы это работало для всех команд. Таким образом, псевдо-команда будет bind -x 'KEY: "CURRENT_COMMAND --help"'.

Может ли кто-нибудь дать решение или подсказку?

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете использовать READLINE_LINE переменную bash. man bash говорит

bind [-m keymap] keyseq: команда readline-команда

(надрез)

-x keyseq: команда оболочки

(snip) Когда команда shell выполнена, оболочка устанавливает переменную READLINE_LINE для содержимого буфера строки readline

Итак, что вы хотите, это первое слово READLINE_LINE. Таким образом, решение bind -x 'KEY": "array=($READLINE_LINE); ${array[0]} --help"'.

...