Редактирование строки в тире

В bash или mksh можно перемещаться по набранной строке слово за словом, используя ярлыки, такие как ESCB.

Это не работает в ksh или dash. Насколько я понимаю из поиска в Google, это как-то связано с поддержкой readline, однако нигде я не видел упоминания о том, как включить поддержку dash.

В этом суть моего вопроса: как включить линейную навигацию для тире

2 ответа

Решение

Краткий ответ:

Вы не

dash является прямым потомком Оболочки Альмквиста (ash). ash никогда не поддерживал редактирование строк, и при этом dash, Busybox ash делает, так что если вы должны ash вариант по какой-то причине и есть редактирование строк и т. д., используйте Busybox ash, Никто не будет беспокоиться о добавлении поддержки readline, так как dashв основном используется для запуска сценариев оболочки.

Если, конечно, вы не готовы кодировать поддержку readline в dashи поддержите такой патч самостоятельно...

Длинный ответ:

Компилировать с libedit

Если вы посмотрите на dash Manpage:

-V vi           Enable the built-in vi(1) command line editor
                (disables -E if it has been set).

-E emacs        Enable the built-in emacs(1) command line editor
                (disables -V if it has been set).

Это работает только если dash был составлен с --with-libedit, Этого нет ни в Ubuntu, ни, по- видимому, в Debian.

Вы можете построить его таким образом:

git clone https://git.kernel.org/pub/scm/utils/dash/dash.git
cd dash 
./autogen.sh 
./configure --with-libedit 
make

Затем запустите:

src/dash -E

Вы должны быть в состоянии использовать клавиши со стрелками для редактирования текущей команды.

Если вы определенно хотите dash плюс редактирование командной строки и истории, вы можете использовать rlwrap:

rlwrap dash

Предложение:

rlwrap -cmD2 dash

Использовать rlwrap, вам придется:

sudo apt-get install rlwrap
Другие вопросы по тегам