- Команды cat, echo, pwd, wc, exit, cd, ls, grep
- Запуск внешних команд
- Синтаксис с одинарными и двойными кавычками
- Переменных окружения и подстановки
- Пайплайн через "|"
Встроенная реализация grep с поддержкой регулярных выражений и поддержкой флагов.
| Флаг | Описание |
|---|---|
-w, --word-regexp |
Поиск только слова целиком |
-i, --ignore-case |
Регистронезависимый (case-insensitive) поиск |
-A, --after-context |
Следующее за -A число говорит, сколько строк после совпадения распечатать |
Для парсинга аргументов командной строки в команде grep используется библиотека CLI11 (версия 2.4.2).
-
Header-only: Удобен, так как представлен в виде только одного заголовочного файла, что упрощает интеграцию в проект.
-
Простота использования: Декларативный синтаксис позволяет легко определять флаги и опции:
app.add_flag("-i", case_insensitive, "Case insensitive"); app.add_option("-A", after_context, "Lines after match");
-
Обновляемость: Проект активно поддерживается и обновляется, имеет понятную и подробную документацию.
- Boost.Program_options: Избыточен для grep, требует линковки.
- Apache Commons CLI: Не применим для C++, написан на Java.
- getopt: C-стиль, неудобен для сложных сценариев и плохо расширяем.
make build-{debug/release}- собрать дебажную или релизную версиюmake run-{debug/release}- собрать и запустить дебажную или релизную версиюmake start-{debug/release}- запустить дебажную или релизную версиюmake tests- запустить тесты в дебажном режимеmake clean- очистить билд-директорииmake format- отформатировать код
make build-release
make start-release
- Вуколов Максим Вячеславович
- Григорович Вячеслав Дмитриевич
- Мингарипов Нияз Рустемович