LavaShell
Аналог shell под названием lavash на языке C++.
1. База
Реализован простой парсер аргументов командной строки. Поддерживаются в том числе аргументы в кавычках и экранирование.
Реализована поддержка опции -c
, принимающая на вход аргументом строку (в том числе содержащую пробелы) являющуюся командой для исполнения.
Простой запуск подпрограммы реализован с помощью системных вызовов fork
, exec
, wait*
и других.
Код возврата программы соответствует коду возврата запущенного приложения.
2. Pipe
Реализован оператор "|", соединяющий вывод предыдущей команды со входом следующей через pipe.
3. Files
Реализована поддержка ввода/вывода из файлов с помощью операторов <
и >
.
4. Операторы "и" &&
и "или" ||
Реализованы операторы "и" и "или", которые последовательно запускают команды и возвращают логическую истинность выражения в виде кода возврата. Операторы являются ленивыми и не выполняют последующую команду, если по предыдущей результат уже ясен.
5. Код возврата
Код возврата равен коду возврата запущенной команды.
6. Тесты
Реализованы тесты для тестирования описанного выше функционала.