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

...
  • SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
    Я уже почти сделал этого - только надо протестировать немножко. Но будет работать только с новым сетевым стеком от hidnplayr.
  • SoUrcerer wrote:Недавно поднималась тема расширения стандартного заголовка для поддержки потоков stdio и stderr. Albom, что думаешь по этому поводу? Возможно, стоит в этом направлении тоже посмотреть?
    Дело нужное. И если будет хорошая документация, то можно внедрить в shell.
  • Albom wrote:Дело нужное. И если будет хорошая документация, то можно внедрить в shell.
    Документация будет. Но все там очень просто. В конечном счете реализировал вот так.

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

    Программа-консоль может делать с принятой информацией чего захочет - отображать на екране, записать в файл, посылать через HTTP, клиенту и т.д.
  • Как некоторый шаг к допиливанию существующей программы cp - файлик с функциями общения с shell и пример его использования.
    Реализовал пока не все функции и если программа запущена не из shell, то она виснет (необходима доработка _sc_init).
    Работа продолжается.
    Attachments
    test_asm.zip (4.01 KiB)
    Downloaded 254 times
  • Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде

    # install.sh
    cp ./file1 /sys/file2
    ./dir1/file2
    Из хаоса в космос
  • Пока положу здесь.
    Spoiler:http://rus-linux.net/MyLDP/BOOKS/Archit ... /bash.html
    Leency wrote:Очень-очень-очень прошу сделать поддержку относительных путей в скриптах. Ну очень надо. Что-то вроде
    Когда-то обязательно будет реализовано.
  • Albom
    Очень надо уже сейчас. :oops:
    Из хаоса в космос
  • Shell 0.6 // 16.02.2013

    + Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /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
    Из хаоса в космос
  • SoUrcerer wrote:А что насчет внутренних мини-команд? У них есть свой argc/argv? Они возвращают сообщения об ошибках?
    За разбор параметров отвечает функция

    Code: Select all

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

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

    Обнаружил, что копирование работает недостаточно надёжно. Буду работать над 0.6.1...
  • Кто-нибудь подскажет, как проверить объём свободного пространства на диске ДО копирования файла?
  • Who is online

    Users browsing this forum: No registered users and 3 guests