Page 9 of 14

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

Posted: Sat Feb 09, 2013 2:55 pm
by SoUrcerer
Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?

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

Posted: Sat Feb 09, 2013 8:35 pm
by johnfound
SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
Я уже почти сделал этого - только надо протестировать немножко. Но будет работать только с новым сетевым стеком от hidnplayr.

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

Posted: Sat Feb 09, 2013 11:10 pm
by Albom
SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
Дело нужное. И если будет хорошая документация, то можно внедрить в shell.

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

Posted: Sat Feb 09, 2013 11:30 pm
by johnfound
Albom wrote:Дело нужное. И если будет хорошая документация, то можно внедрить в shell.
Документация будет. Но все там очень просто. В конечном счете реализировал вот так.

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

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

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

Posted: Sun Feb 10, 2013 3:59 pm
by Albom
Как некоторый шаг к допиливанию существующей программы cp - файлик с функциями общения с shell и пример его использования.
Реализовал пока не все функции и если программа запущена не из shell, то она виснет (необходима доработка _sc_init).
Работа продолжается.

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

Posted: Wed Feb 13, 2013 12:03 am
by Leency
Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде

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

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

Posted: Thu Feb 14, 2013 4:01 pm
by Albom
Пока положу здесь.
Spoiler:http://rus-linux.net/MyLDP/BOOKS/Archit ... /bash.html
Leency wrote:Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде
Когда-то обязательно будет реализовано.

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

Posted: Thu Feb 14, 2013 4:08 pm
by Leency
Albom
Очень надо уже сейчас. :oops:

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

Posted: Sat Feb 16, 2013 2:27 pm
by Albom
Shell 0.6 // 16.02.2013

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

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

Posted: Sat Feb 16, 2013 3:34 pm
by SoUrcerer
А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?

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

Posted: Sat Feb 16, 2013 4:57 pm
by Leency
Клёво, это ещё один шаг вперёд. Мне очень нужно, чтобы комманды работали относительно пути запущенного скрипта.
Запускаем /bd0/4/programs/install.sh, в нём строка

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

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

Posted: Sat Feb 16, 2013 8:57 pm
by Albom
SoUrcerer wrote:А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?
За разбор параметров отвечает функция

Code: Select all

int parameters_prepare(char *param, char* argv[]);
Её при необходимости можно вызывать из любой мини-команды. На вход всех мини-команд подаётся char *param. Мини-команды возвращают либо TRUE, либо FALSE, но результат по сути никак не обрабатывается.
Leency wrote:Мне очень нужно, чтобы команды работали относительно пути запущенного скрипта.
А что, не работает? Если нет, то, думаю, добавить такую возможность не сложно.

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

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

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

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

Posted: Sat Feb 16, 2013 11:13 pm
by Albom
1) Постараюсь добавить хоть простую обработку ошибок
2) Текущую директорию можно узнать по команде pwd

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

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

Posted: Sun Feb 17, 2013 5:07 pm
by Albom
Кто-нибудь подскажет, как проверить объём свободного пространства на диске ДО копирования файла?