Rlwrap, похоже, не сотрудничает с "read -e" - PullRequest
1 голос
/ 09 сентября 2011

Новый поворот к несколько распространенному вопросу:

В моем интерактивном скрипте я предварительно заполняю пользовательский ввод примерно так:

#process_line.sh

INPUT=$1 # previous value
read -e -p "> " -i "$INPUT" INPUT

Для реализации истории команд я звоню process_line.sh

    rlwrap ./process_line.sh $INPUT

Теперь вот поворот: если у меня есть опция "read -e", я могу редактировать предварительно заполненный ввод, НО нет истории команд, и, наоборот, я могу иметь историю команд, любезно предоставленную rlwrap, без "read -e" опция, но без предварительного заполнения (то есть "read -i" на самом деле ничего не делает).

Вопрос, конечно же, заключается в том, могу ли я одновременно выполнять предварительное заполнение ввода и историю редактирования И команды.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Выключите -e, чтобы прочитать.Тогда две реализации readline не будут конфликтовать.

Чтобы получить приглашение, вы можете передать -S "> " в rlwrap.

1 голос
/ 12 сентября 2011

Этот вариант использования был в руководстве по rlwrap начиная с версии 0.25; как именно это сделать, зависит от версии rlwrap.

В rlwrap 0.37 вы делаете это так:

INPUT = $ (rlwrap -o -S ">" -P $ INPUT cat)

Преимущество этого подхода состоит в том, что каждой входной переменной может быть присвоен собственный журнал и список завершения (с использованием параметров -f и -H)

Версия cygwin (0.24) действительно древняя, но составление rlwrap самостоятельно должно быть безболезненным. Если вы хотите, вы можете создать статически связанную версию (см. Инструкции в файле INSTALL) и распространять ее вместе со своим скриптом.

...