Edição de linha no traço

5

Em bash ou mksh é possível mover a palavra digitada palavra por palavra, usando shortcuts como ESC B .

Isso não funciona em ksh ou traço . Tanto quanto eu entendo de googling, isso tem algo a ver com o suporte readline, no entanto em nenhum lugar eu vi mencionar como ativar o suporte para traço.

Esse é o núcleo da minha pergunta: Como ativar a navegação de linha para o traço

    
por Sergiy Kolodyazhnyy 01.12.2015 / 18:30

2 respostas

3

A resposta curta é:

Você não faz.

dash é descendente direto do Almquist Shell ( ash ). ash nunca contou com suporte a edição de linha e nem dash . Busybox ash , portanto, se você tiver uma variante ash por algum motivo e tiver edição de linha, etc., use o Busybox ash . Ninguém vai se incomodar em adicionar suporte readline, já que o uso principal do dash é para executar scripts de shell.

A menos, é claro, que você esteja disposto a codificar o suporte para readline em dash e manter esse patch você mesmo ...

A resposta longa é:

Compilar com libedit

Se você olhar para manpage de dash :

-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).

Isso só funciona se dash foi compilado com --with-libedit . Não é, nem no Ubuntu , nem, aparentemente, no Debian .

Você pode construí-lo assim:

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

Em seguida, execute:

src/dash -E

Você deve poder usar as teclas de seta para editar o comando atual.

    
por muru 01.12.2015 / 20:35
2

Se você definitivamente deseja a edição e o histórico da linha de comando dash plus, você pode usar rlwrap :

rlwrap dash

Sugestão:

rlwrap -cmD2 dash

Para usar rlwrap , você precisará:

sudo apt-get install rlwrap
    
por ΤΖΩΤΖΙΟΥ 06.12.2017 / 10:47