Page 7 of 14

Re: Очень функциональный шелл

Posted: Thu Dec 15, 2011 9:07 pm
by Albom
New SVN revision #2323 by Albom in /programs/system/shell: Shell: cd command fixed

Re: Очень функциональный шелл

Posted: Thu Mar 22, 2012 11:31 pm
by Albom
Сделал поддержку консольных приложений через именованную область. Т.е. это обычное приложение для КОС, которое может быть написано на любом языке программирования.
Сейчас отлаживаю работу связи "приложение-шелл", потом допишу пример и напишу доки.
Пока что будут доступны функции putc, puts, getc, gets, exit. Если нужны ещё какие-нибудь функции или есть идеи, пишите.

Re: Очень функциональный шелл

Posted: Fri Mar 23, 2012 9:47 am
by SoUrcerer
Ну, вот, собственно, и к pipes приближаемся.
Думаю, можно будет определять, запущен тот же Lua из shelll, или нет, и в зависимости от этого передавать данные через именованную память или же создавать свое окно console.

Re: Очень функциональный шелл

Posted: Fri Mar 23, 2012 9:56 pm
by Albom
Shell 0.5 // 23.03.2012 // Albom
=======================================
* Добавлена поддержка консольных приложений, которые общаются с шеллом через именованную область

Консольное приложение может быть написано на любом языке программирования - это обыкновенная программа для КолибриОС.

1) Консольное приложение после своего запуска В ПЕРВУЮ ОЧЕРЕДЬ должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса с заглавными нулями,
например: 42 -> 0042 (т.е. сейчас ограничение до 9999).
+ нужно сделать, чтобы программа корректно завершалась, если запущена не из шелла (СЕЙЧАС НЕ РЕАЛИЗОВАНО!!!)

2) Первый байт области - команда (т.е. максимум 255 команд), далее - данные (могут отсутствовать).
Список команд для версии 0.5:
SC_OK 0 ничего не делать
SC_EXIT 1 выход
SC_PUTC 2 вывести на экран символ
SC_PUTS 3 вывести на экран строку
SC_GETC 4 считать с клавиатуры символ
SC_GETS 5 считать с клавиатуры строку
SC_CLS 6 очистить экран

3) Программа должна САМА заботиться о рациональном использовании процессорного времени.

4) Программа должна САМА заботиться о закрытии именованной области.

Re: Очень функциональный шелл

Posted: Fri Mar 23, 2012 10:31 pm
by Mario
А может надежней написать процедуру в proc_lib, для работы с именованной памятью? Как я это сделал для OpenDialog.

Re: Очень функциональный шелл

Posted: Fri Mar 23, 2012 11:34 pm
by Albom
Написать вполне реально. Возможно, так и сделаю в ближайшее время.
Кстати, ничего, что количество функций в proc_lib существенно увеличится? Вообще, не хочу раздувать API шелла, для этого и выбрал размер команды 1 байт, но функций 20-30, думаю, со временем будет реализовано.

Re: Очень функциональный шелл

Posted: Fri Mar 23, 2012 11:38 pm
by Mario
Там функций в либе - кот наплакал, вот открой box_lib - вот это уже не мало, но не настолько и много.
Единственное ограничение - библиотека асмовская, так что и другие функции придется исключительно на ассемблере делать.

Re: Очень функциональный шелл

Posted: Mon Mar 26, 2012 5:17 pm
by Nable
Albom пожалуйста, пока не поздно, смени десятичные цифры на шеснадцатеричные.
Аргументация очевидная, надеюсь.

Re: Очень функциональный шелл

Posted: Tue Mar 27, 2012 6:53 am
by Albom
Nable
Не очевидная. Какая разница - 6 или - 0x06? Тем более, что всё равно будут использоваться имена констант.
Кстати, номера системных функций тоже десятичные.


+ Начал переписывать консольную программу на ассемблер. Это первый шаг к добавлению функций в proc_lib.
+ Придумал, как сделать проверку на то, запущена программа из шелла или нет.

Re: Очень функциональный шелл

Posted: Tue Mar 27, 2012 7:16 am
by Mario
Скорее всего Nable подумал, что данные передаются в текстовом виде.

Re: Очень функциональный шелл

Posted: Wed Mar 28, 2012 7:37 pm
by Nable
> Консольное приложение после своего запуска В ПЕРВУЮ ОЧЕРЕДЬ должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса с заглавными нулями,
> С именем,
> с заглавными нулями
т.е. текстом там будет написано. Что именно я не так подумал?

Re: Очень функциональный шелл

Posted: Wed Mar 28, 2012 7:41 pm
by Mario
Все ты правильно подумал, но не учел что скилл телепатии слабо прокачан у остальных и требуется более подробное разжевывание твоего замечания - к чему именно оно относилось.

Re: Очень функциональный шелл

Posted: Sun May 13, 2012 10:01 am
by XVilka
Думал что в console.obj не обрабатываются escape-последовательности, в частности установка цветов, однако был неправ - все там присутствует. Однако команда echo -e "\e[0;31;40mTest" или echo "^[[0;31;40mTest" не выводит слово Test красным цветом
Причем во втором случае используются нажатие клафиш <Ctrl-V><Esc> или <Ctrl-[>
Судя по коду console.obj - он считает Escape последовательностями все, что начинается с символа 27, он же 0x1B (и имеет правильный формат, есстественно)

Re: Очень функциональный шелл

Posted: Sun May 13, 2012 11:00 am
by Albom
Esc-последовательности выводятся. Просто фильтруется их ввод с клавиатуры. Если запускать скрипты - всё ОК.

Re: Очень функциональный шелл

Posted: Mon May 14, 2012 10:39 pm
by XVilka
Возможно ли вывести такое? http://www.frexx.de/xterm-256-notes/dat ... table16.sh
Или хотя бы его аналог на SHS