2015-07-08 4 views
0

Я хотел бы написать свою собственную интерактивную оболочку для Linux.Рамка для командной оболочки как интерактивное приложение командной строки

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

Это не трудно сделать это, но я хотел бы сделать somethimg более дружественным к пользователю.

  • TAB автоматического завершения
  • интерактивная линия редактирования
  • история последних команд

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

Предпочтительная лицензия некоторые разрешительный (MIT, BSD, Apache, ..)

Предпочитаемый язык Python, C, C++, JavaScript или ш

+0

Можно было бы утверждать, что это дубликат http://stackoverflow.com/questions/1883467/is-there-a-simple-alternative-to-readline - любой ответ также был бы приемлемым ответом здесь - - хотя с современными правилами сайта этот вопрос больше не будет разрешен. –

+0

Если бы я знал readline, я бы сам это сделал. – j123b567

+0

Конечно, люди, не зная правильных ключевых слов, - это то, почему мы * хотим * хорошие повторяющиеся вопросы (то есть дубликаты, которые задают вопрос таким образом, что кто-то, кто не знает ключевых слов, будет и в значительной степени отличается от любые другие способы, о которых ранее задавали один и тот же вопрос на сайте) - мы отмечаем их как близкие, так и повторяющиеся, а затем указываем указатель/указатель на канонический ответ, тем самым добавляя ценность к базе знаний. –

ответ

0

Для Python, модуль стандартной библиотеки cmd делает это: https://docs.python.org/2.7/library/cmd.html

Для C, у вас есть несколько вариантов, доступных для управления интерактивным редактированием, историями и автодополнением:

  • readline, используемое bash, но лицензирован GPL.
  • editline, широко распространенная альтернатива BSD.
  • linenoise, более новая альтернатива.

Кстати - этот вопрос явно не по теме; Я ожидаю, что он будет закрыт.

+0

В любом случае, спасибо. Я просто не знал, с чего начать и где спросить. Это очень помогло. – j123b567

0

Если вам нужно управление заданиями (т.е. фоновый) вы можете взгляните на руководство пользователя glibc on Implementing a Shell.

+0

Поскольку OP указывает, что «нет необходимости выполнять внешние двоичные файлы», явно не нужно поддерживать выполнение их в фоновом режиме. Тем не менее, это интересная ссылка. –

+0

Он также может посмотреть на источники bash: https://ftp.gnu.org/gnu/bash/. Оболочка, которая не нуждается в выполнении внешних двоичных файлов, довольно ограничена, поскольку ей не хватает какой-либо полезной функциональности (или она может предоставить ее сама по себе, но это не сделает ее оболочкой больше (представьте все двоичные файлы, такие как mkdir, cd, ld , ls, cat, touch, file и т. д., вместе взятые)). – Sebi

+1

Чтение вопроса в контексте, цель явно меньше оболочки в том смысле, о котором вы думаете, и более интерактивной командной строки/REPL для не-оболочки части программного обеспечения. –

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