Редактирование строки в тире
В 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