Board.KolibriOS.org
http://board.kolibrios.org/

Очень функциональный шелл
http://board.kolibrios.org/viewtopic.php?f=48&t=1111
Page 9 of 13

Author:  SoUrcerer [ Sat Feb 09, 2013 2:55 pm ]
Post subject:  Re: Очень функциональный шелл

Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?

Author:  johnfound [ Sat Feb 09, 2013 8:35 pm ]
Post subject:  Re: Очень функциональный шелл

SoUrcerer wrote:
Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?


Я уже почти сделал этого - только надо протестировать немножко. Но будет работать только с новым сетевым стеком от hidnplayr.

Author:  Albom [ Sat Feb 09, 2013 11:10 pm ]
Post subject:  Re: Очень функциональный шелл

SoUrcerer wrote:
Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?

Дело нужное. И если будет хорошая документация, то можно внедрить в shell.

Author:  johnfound [ Sat Feb 09, 2013 11:30 pm ]
Post subject:  Re: Очень функциональный шелл

Albom wrote:
Дело нужное. И если будет хорошая документация, то можно внедрить в shell.


Документация будет. Но все там очень просто. В конечном счете реализировал вот так.

Программа-консоль, используя SocketPair выделяет два IPC сокета - первый, передает приложению через заголовке, а на вторым слушает/говорит сама.

Программа-консоль может делать с принятой информацией чего захочет - отображать на екране, записать в файл, посылать через HTTP, клиенту и т.д.

Author:  Albom [ Sun Feb 10, 2013 3:59 pm ]
Post subject:  Re: Очень функциональный шелл

Как некоторый шаг к допиливанию существующей программы cp - файлик с функциями общения с shell и пример его использования.
Реализовал пока не все функции и если программа запущена не из shell, то она виснет (необходима доработка _sc_init).
Работа продолжается.

Attachments:
test_asm.zip [4.01 KiB]
Downloaded 119 times

Author:  Leency [ Wed Feb 13, 2013 12:03 am ]
Post subject:  Re: Очень функциональный шелл

Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде

# install.sh
cp ./file1 /sys/file2
./dir1/file2

Author:  Albom [ Thu Feb 14, 2013 4:01 pm ]
Post subject:  Re: Очень функциональный шелл

Пока положу здесь.


Leency wrote:
Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде

Когда-то обязательно будет реализовано.

Author:  Leency [ Thu Feb 14, 2013 4:08 pm ]
Post subject:  Re: Очень функциональный шелл

Albom
Очень надо уже сейчас. :oops:

Author:  Albom [ Sat Feb 16, 2013 2:27 pm ]
Post subject:  Re: Очень функциональный шелл

Shell 0.6 // 16.02.2013

+ Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /rd/1/File managers, не переходя в неё
+ Добавлена функция разделения строковой переменной на int argc, char* argv[], что означает возможность улучшения команд (обработка нескольких параметров)
+ Добавлена команда cp (копирование файла). Принимает обязательно два параметра - имя файла-источника и имя файла-результата. Имена могут быть краткими (в текущем каталоге), так и с полным путём (должны начинаться с /). Ограничение на размер файла - 4 Гбайта
* Исправлена кодировка в сообщении об ошибке в консольном приложении
* Клавиши истории (вверх и вниз) поменяны между собой
* Количество команд в истории увеличено с пяти до десяти
* Уменьшено количество предупреждений при компиляции
* Команда ccpuid преобразована в параметр cpu команды ver
* Исправления в пакетных файлах сборки
+ Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки

Author:  SoUrcerer [ Sat Feb 16, 2013 3:34 pm ]
Post subject:  Re: Очень функциональный шелл

А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?

Author:  Leency [ Sat Feb 16, 2013 4:57 pm ]
Post subject:  Re: Очень функциональный шелл

Клёво, это ещё один шаг вперёд. Мне очень нужно, чтобы комманды работали относительно пути запущенного скрипта.
Запускаем /bd0/4/programs/install.sh, в нём строка

cp file1 /sys/file2 #копирует из /bd0/4/programs/file1 в /sys/file2

Author:  Albom [ Sat Feb 16, 2013 8:57 pm ]
Post subject:  Re: Очень функциональный шелл

SoUrcerer wrote:
А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?

За разбор параметров отвечает функция
Code:
int parameters_prepare(char *param, char* argv[]);

Её при необходимости можно вызывать из любой мини-команды. На вход всех мини-команд подаётся char *param. Мини-команды возвращают либо TRUE, либо FALSE, но результат по сути никак не обрабатывается.

Leency wrote:
Мне очень нужно, чтобы команды работали относительно пути запущенного скрипта.

А что, не работает? Если нет, то, думаю, добавить такую возможность не сложно.

+Ещё. Теперь в параметрах проблема с кавычками - передать параметр с ними пока нельзя (например, в новом mp3-плеере).

Author:  SoUrcerer [ Sat Feb 16, 2013 10:39 pm ]
Post subject:  Re: Очень функциональный шелл

Нужно добавить символы экранирования - \', \" и \[пробел]. Тогда проблем будет меньше.
Меня очень печалит, что я не вижу информации об ошибках. Например, иногда я делаю по ошибке опечатку - вместо cd /bd0/1/bin-i386 набираю cd /bd0/2/bin-i386
Пока я не убеждаюсь, что по-прежнему нахожусь в той же папке, где и был, командой ls - я не знаю, что опечатался. Стоит выводить в таком случае ошибку.

Author:  Albom [ Sat Feb 16, 2013 11:13 pm ]
Post subject:  Re: Очень функциональный шелл

1) Постараюсь добавить хоть простую обработку ошибок
2) Текущую директорию можно узнать по команде pwd

Обнаружил, что копирование работает недостаточно надёжно. Буду работать над 0.6.1...

Author:  Albom [ Sun Feb 17, 2013 5:07 pm ]
Post subject:  Re: Очень функциональный шелл

Кто-нибудь подскажет, как проверить объём свободного пространства на диске ДО копирования файла?

Page 9 of 13 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/