Добавление вызова команд в приложение командной строки Unix

StackOverflow https://stackoverflow.com/questions/49075

Вопрос

Я работаю над приложением командной строки для Solaris, написанным на Java6.Я хотел бы иметь возможность прокручивать историю предыдущих команд с помощью стрелок вверх и вниз, как это позволяют многие инструменты Unix (оболочки, приглашение командного режима VIM и т. д.).

Есть ли какой-нибудь стандартный способ добиться этого, или мне придется использовать свой собственный?

Это было полезно?

Решение

Да, используйте строка чтения GNU библиотека.

Другие советы

Я думаю, вы ищете что-то вроде JLine но я никогда им не пользовался, поэтому не могу подтвердить его качество.

Очевидно, она может справиться с автодополнением и историей командной строки, а последний выпуск вышел недавно (февраль этого года), так что он ни в коем случае не мертв.

ledit отлично подходит для Linux для подобных вещей.Вероятно, его легко скомпилировать на Solaris.

Уточнение:ledit оборачивает вызов другого приложения командной строки и даже может передать файл для постоянного хранения вашей истории.

Вот домашняя страница: http://cristal.inria.fr/~ddr/ledit/

Есть проект SourceForge, http://java-readline.sourceforge.net/, который обеспечивает привязки на основе JNI к строке чтения GNU.Я поигрался с ним (не использовал в реальном проекте), и он определенно охватывает все функциональные возможности.

предупреждение: строка чтения GNU подчиняется условиям лицензирования GPL:

Readline - это бесплатное программное обеспечение, распространяемое в соответствии с условиями общей публичной лицензии GNU, версия 2.Это означает, что если вы хотите использовать READLINE в программе, которую вы выпускаете или распространяете кому-либо, программа должна быть бесплатным программным обеспечением и иметь лицензию, совместимую с GPL.Если вы хотите получить совет по сделать вашу лицензию совместимой с GPL, связаться с licensing@gnu.org.

Другими словами, использование Readline распространяет лицензию GPL из библиотеки на всю программу.(В отличие от LGPL, которая позволяет связываться с библиотекой во время выполнения и требует открытого исходного кода только для улучшения самой библиотеки.)

Для тех из нас, кто работает в коммерческом мире, даже если мы не занимаемся разработкой коммерческих приложений, это является препятствием.

В любом случае, страница википедии перечисляет несколько альтернатив, включая JLine, что звучит многообещающе.

В качестве отступления:Я работаю в компании, которая занимается разработкой медицинской продукции.Мы зарабатываем ноль (0) долларов на программном обеспечении для ПК.Почти все наше программное обеспечение работает на встроенных системах, которые мы разрабатываем (и мы не зарабатываем никаких денег на продажах/обновлениях этого программного обеспечения, а только на самих продуктах);иногда у нас есть инструменты диагностики программного обеспечения, которые можно запустить на компьютерах конечных пользователей.(программное обеспечение для разработки/производства/тестирования, которое не предоставляется клиентам, я думаю, можно использовать библиотеки GPL, но я не уверен) Медицинская продукция имеет довольно жесткий контроль;по сути, вы должны доказать FDA, что оно безопасно для пользователей, конечный пользователь не может решить: «О, мне не нравится это программное обеспечение, я просто подправлю его или воспользуюсь заменой компании XYZ на вторичном рынке» - это будет оставляют производителей устройств нести огромную ответственность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top