Очень функциональный шелл
-
Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
Я уже почти сделал этого - только надо протестировать немножко. Но будет работать только с новым сетевым стеком от hidnplayr.SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
Дело нужное. И если будет хорошая документация, то можно внедрить в shell.SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
Документация будет. Но все там очень просто. В конечном счете реализировал вот так.Albom wrote:Дело нужное. И если будет хорошая документация, то можно внедрить в shell.
Программа-консоль, используя SocketPair выделяет два IPC сокета - первый, передает приложению через заголовке, а на вторым слушает/говорит сама.
Программа-консоль может делать с принятой информацией чего захочет - отображать на екране, записать в файл, посылать через HTTP, клиенту и т.д.
Как некоторый шаг к допиливанию существующей программы cp - файлик с функциями общения с shell и пример его использования.
Реализовал пока не все функции и если программа запущена не из shell, то она виснет (необходима доработка _sc_init).
Работа продолжается.
Реализовал пока не все функции и если программа запущена не из shell, то она виснет (необходима доработка _sc_init).
Работа продолжается.
- Attachments
-
-
test_asm.zip (4.01 KiB)Downloaded 259 times
-
Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде
# install.sh
cp ./file1 /sys/file2
./dir1/file2
# install.sh
cp ./file1 /sys/file2
./dir1/file2
Из хаоса в космос
Пока положу здесь.
Когда-то обязательно будет реализовано.Leency wrote:Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде
Albom
Очень надо уже сейчас.
Очень надо уже сейчас.
Из хаоса в космос
Shell 0.6 // 16.02.2013
+ Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /rd/1/File managers, не переходя в неё
+ Добавлена функция разделения строковой переменной на int argc, char* argv[], что означает возможность улучшения команд (обработка нескольких параметров)
+ Добавлена команда cp (копирование файла). Принимает обязательно два параметра - имя файла-источника и имя файла-результата. Имена могут быть краткими (в текущем каталоге), так и с полным путём (должны начинаться с /). Ограничение на размер файла - 4 Гбайта
* Исправлена кодировка в сообщении об ошибке в консольном приложении
* Клавиши истории (вверх и вниз) поменяны между собой
* Количество команд в истории увеличено с пяти до десяти
* Уменьшено количество предупреждений при компиляции
* Команда ccpuid преобразована в параметр cpu команды ver
* Исправления в пакетных файлах сборки
+ Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки
+ Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /rd/1/File managers, не переходя в неё
+ Добавлена функция разделения строковой переменной на int argc, char* argv[], что означает возможность улучшения команд (обработка нескольких параметров)
+ Добавлена команда cp (копирование файла). Принимает обязательно два параметра - имя файла-источника и имя файла-результата. Имена могут быть краткими (в текущем каталоге), так и с полным путём (должны начинаться с /). Ограничение на размер файла - 4 Гбайта
* Исправлена кодировка в сообщении об ошибке в консольном приложении
* Клавиши истории (вверх и вниз) поменяны между собой
* Количество команд в истории увеличено с пяти до десяти
* Уменьшено количество предупреждений при компиляции
* Команда ccpuid преобразована в параметр cpu команды ver
* Исправления в пакетных файлах сборки
+ Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки
А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?
Клёво, это ещё один шаг вперёд. Мне очень нужно, чтобы комманды работали относительно пути запущенного скрипта.
Запускаем /bd0/4/programs/install.sh, в нём строка
cp file1 /sys/file2 #копирует из /bd0/4/programs/file1 в /sys/file2
Запускаем /bd0/4/programs/install.sh, в нём строка
cp file1 /sys/file2 #копирует из /bd0/4/programs/file1 в /sys/file2
Из хаоса в космос
За разбор параметров отвечает функцияSoUrcerer wrote:А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?
Code: Select all
int parameters_prepare(char *param, char* argv[]);
А что, не работает? Если нет, то, думаю, добавить такую возможность не сложно.Leency wrote:Мне очень нужно, чтобы команды работали относительно пути запущенного скрипта.
+Ещё. Теперь в параметрах проблема с кавычками - передать параметр с ними пока нельзя (например, в новом mp3-плеере).
Нужно добавить символы экранирования - \', \" и \[пробел]. Тогда проблем будет меньше.
Меня очень печалит, что я не вижу информации об ошибках. Например, иногда я делаю по ошибке опечатку - вместо cd /bd0/1/bin-i386 набираю cd /bd0/2/bin-i386
Пока я не убеждаюсь, что по-прежнему нахожусь в той же папке, где и был, командой ls - я не знаю, что опечатался. Стоит выводить в таком случае ошибку.
Меня очень печалит, что я не вижу информации об ошибках. Например, иногда я делаю по ошибке опечатку - вместо cd /bd0/1/bin-i386 набираю cd /bd0/2/bin-i386
Пока я не убеждаюсь, что по-прежнему нахожусь в той же папке, где и был, командой ls - я не знаю, что опечатался. Стоит выводить в таком случае ошибку.
1) Постараюсь добавить хоть простую обработку ошибок
2) Текущую директорию можно узнать по команде pwd
Обнаружил, что копирование работает недостаточно надёжно. Буду работать над 0.6.1...
2) Текущую директорию можно узнать по команде pwd
Обнаружил, что копирование работает недостаточно надёжно. Буду работать над 0.6.1...
Кто-нибудь подскажет, как проверить объём свободного пространства на диске ДО копирования файла?
Who is online
Users browsing this forum: No registered users and 18 guests