Como ter recursos de edição em aplicativos de linha de comando que não os fornecem

3

Existem alguns programas de linha de comando que recebem informações do usuário, mas não fornecem recursos de edição, como sh (alias dash ) ou nslookup e outros.

Existe uma maneira de forçar esses aplicativos a fornecer recursos de edição para corrigir a linha atual ou recuperar as linhas anteriores?

    
por enzotib 11.12.2011 / 15:46

2 respostas

2

Existem pelo menos três ferramentas para obter o que é necessário, estas são:

  • rlwrap - wrapper de linha de comando do recurso readline
  • rlfe - um front-end usando readline para "cozinhar" linhas de entrada para outros programas
  • ledit - editor de linha para programas interativos

Você pode usar cada um deles antes de enviá-los para o comando wrap, como em

rlwrap sh

O primeiro, rlwrap , parece o melhor, porque o segundo torna a linha em negrito, e o terceiro não mostra o prompt com sh , mas funciona.

    
por enzotib 11.12.2011 / 15:53
0

A tecnologia onipresente para aprender é readline, porque os programas que foram compilados com readline suporte já tem esse recurso - em qualquer distribuição do Linux e em qualquer utilitário GNU do Unix. (A maioria dos programas GNU foram feitos dessa forma, e é "doloroso" quando eles não são - o suficiente para mim, se eu os recompilei, se eles não foram feitos "corretamente".) É como aprender o editor vi - uma vez é "em você" nunca sai; e, faz o trabalho com os vários programas muito mais proficiente e agradável. O suporte a readline se comporta da mesma forma em qualquer programa compilado com essa biblioteca. Como o readline foi implementado em um programa de software individual ficou a cargo do (s) programador (es) desse programa, portanto a milhagem pode variar.

Por exemplo, no BASH, a tecla de seta para cima evoca a linha anterior, e em quase todos os programas do console, [CTRL] + [U] apaga tudo o que resta do cursor enquanto [ALT] + [F] avança uma palavra e [ALT] + [B] recua uma palavra e muito mais ...

O Nslookup tem isso, e sh / dash - mas eles são mínimos.

    
por user8290 11.12.2011 / 16:11