Показать последнюю команду со стрелкой вверх на оболочке linux c - PullRequest
2 голосов
/ 16 апреля 2010

Я реализовал простую оболочку linux в c. Теперь я добавляю некоторые функции, и одна из них, о которой я сразу подумал, - возможность показывать последние команды со стрелкой вверх.

Вопрос 1:
Тем не менее, я понятия не имею, как это сделать. А ты?

Вопрос 2:
Любые комментарии о том, как хранить команды "history", также приветствуются. Я полагаю, что что-то вроде очереди, которая разрешает доступ ко всем элементам, было бы хорошей идеей. Я ошибся? Должен ли я его реализовать или уже есть какая-то хорошая реализация, о которой я должен знать?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 16 апреля 2010

Создание libedit или readline поддержки в вашей оболочке.

1 голос
/ 16 апреля 2010

Если вы хотите быть ленивым, вы можете использовать rlwrap :

rlwrap prog
0 голосов
/ 16 апреля 2010

Я написал оболочку для HelenOS . Возьмите репозиторий bzr и перейдите к uspace/app/bdsh (bdsh означает (b) дождь (d) ead (sh) ell).

Другие участники с тех пор добавили редактирование строк / историю / завершение табуляции в функции, которые обрабатывают ввод. Он написан исключительно на ANSI C, не ссылается на glibc и реализует свои собственные функции. Код (как в оболочке, так и в лежащей в основе HelenOS libc) представляет собой BSD из 3 пунктов, его можно использовать в любом месте.

Если ничего другого, это может помочь просто изучить реализацию, чтобы начать.

...