Добавление вызова команды в приложение командной строки Unix - PullRequest
3 голосов
/ 08 сентября 2008

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

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

Ответы [ 5 ]

5 голосов
/ 08 сентября 2008

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

3 голосов
/ 08 сентября 2008

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

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

2 голосов
/ 17 сентября 2008

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

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

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

1 голос
/ 05 января 2009

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

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

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

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

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

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

1 голос
/ 17 сентября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...