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