Pergunta

Estou trabalhando em um aplicativo de linha de comando para Solaris, escrito em Java6.Eu gostaria de poder percorrer um histórico de comandos anteriores usando as setas para cima e para baixo, como muitas ferramentas Unix permitem (shells, prompt do modo de comando VIM, etc.).

Existe alguma maneira padrão de conseguir isso ou eu tenho que fazer a minha própria?

Foi útil?

Solução

Sim, use o Linha de leitura GNU biblioteca.

Outras dicas

Acho que você está procurando algo como Linha J mas nunca usei, então não posso atestar sua qualidade.

Aparentemente, ela pode lidar com o preenchimento automático e o histórico da linha de comando, e o último lançamento foi recentemente (fevereiro deste ano), então não está de forma alguma morto.

ledit é ótimo no Linux para esse tipo de coisa.Provavelmente é facilmente compilado no Solaris.

Esclarecimento:ledit encapsula a chamada para seu outro aplicativo de linha de comando e pode até receber um arquivo para armazenar persistentemente seu histórico.

Aqui está a página inicial: http://cristal.inria.fr/~ddr/ledit/

Existe um projeto SourceForge, http://java-readline.sourceforge.net/, que fornece ligações baseadas em JNI para GNU readline.Eu brinquei com ele (não usado em um projeto real) e certamente cobre todas as funcionalidades.

aviso: Linha de leitura GNU está sujeito aos termos de licenciamento GPL:

O ReadLine é um software livre, distribuído sob os termos da licença pública geral da GNU, versão 2.Isso significa que se você quiser usar Readline em um programa que você lança ou distribui para qualquer pessoa, o programa deve ser gratuito software e ter um GPL-compatível licença.Se você gostaria de conselhos sobre tornando sua licença compatível com GPL, Entre em contato licensing@gnu.org.

Em outras palavras, o uso do Readline espalha a GPL de uma biblioteca para todo o programa.(Contraste com LGPL, que permite vinculação em tempo de execução a uma biblioteca e requer código aberto apenas para melhorias na própria biblioteca.)

Para nós que trabalhamos no mundo comercial, mesmo que não estejamos desenvolvendo aplicações comerciais, isso é um empecilho.

De qualquer forma, a página da Wikipédia lista várias alternativas, incluindo JLine, que parece promissora.

Apenas como um aparte:Trabalho para uma empresa que projeta produtos médicos.Ganhamos zero (0) dólares com software para PC.Quase todos os nossos softwares são executados nos sistemas embarcados que projetamos (e não ganhamos nenhum dinheiro com vendas/atualizações deste software, apenas com os próprios produtos);às vezes temos ferramentas de diagnóstico de software que podem ser executadas nos PCs dos usuários finais.(software de design/fabricação/teste que não é lançado para os clientes, acho que seria possível usar bibliotecas GPL, mas não tenho certeza) Os produtos médicos têm controles bastante rígidos;você basicamente tem que provar ao FDA que é seguro para os usuários, não é como se o usuário final pudesse decidir "ah, eu não gosto deste software, vou apenas ajustá-lo ou usar o substituto de reposição da empresa XYZ" - isso seria deixam os fabricantes de dispositivos expostos a uma enorme responsabilidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top