2008-09-08 8 views
3

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

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

ответ

5

Да, используйте библиотеку GNU readline.

+0

В этом ответе я имел в виду, что существует стандартный способ ... – 2008-09-08 03:00:57

+0

Я не даю downvotes, если ответ «плохой», но я удивлен, что это принятый ответ, учитывая фактор GPL. – 2009-01-05 18:39:25

3

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

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

2

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

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

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

1

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

1

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

Readline бесплатное программное обеспечение, распределенное под условиями GNU General Public License , версия 2. Это означает , что если вы хотите использовать Readline в программе , которую вы выпускаете или распространяете всем, программа должна быть бесплатной и иметь лицензию , совместимую с GPL. Если вы хотите получить консультацию по телефону , что делает вашу лицензию совместимой с GPL, contact [email protected]

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^