Cat - одна из наиболее часто используемых команд в Unix-подобных операционных системах.
Команда имеет три взаимосвязанные функции в отношении текстовых файлов: отображение, объединение их копий и создание новых.
cat [OPTION] [FILE]
...
№ | Опции | Описание |
---|---|---|
1 | -b (GNU: --number-nonblank) | нумерует только непустые строки |
2 | -e предполагает и -v (GNU only: -E то же самое, но без применения -v) | также отображает символы конца строки как $ |
3 | -n (GNU: --number) | сжимает несколько смежных пустых строк |
4 | -s (GNU: --squeeze-blank) | сжимает несколько смежных пустых строк |
5 | -t предполагает и -v (GNU: -T то же самое, но без применения -v) | также отображает табы как ^I |
- Программы должны быть разработаны на языке Си стандарта C11 с использованием компилятора gcc.
- Код программ cat и grep должен находиться в ветке develop в папкe src/cat/ соответственно.
- Не использовать устаревшие и выведенные из употребления конструкции языка и библиотечные функции. Обращать внимания на пометки legacy и obsolete в официальной документации по языку и используемым библиотекам. Ориентироваться на стандарт POSIX.1-2017
- При написании кода необходимо придерживаться Google Style.
- Программы должны представлять собой исполняемый файл с аргументами командной строки.
- Сборка программ должна быть настроена с помощью Makefile с соответствующими целями: s21_cat.
- Если используются сторонние библиотеки, в Makefile должны быть заложены сценарии сборки, предусматривающие их подключение/загрузку.
- Необходимо покрытие интеграционными тестами для всех вариантов флагов и входных значений, на базе сравнения с поведением реальных утилит Bash.
- Программа должна быть разработана в соответствии с принципами структурного программирования.
- Необходимо исключить дублирование кода, переиспользовать общие модули между утилитами. Общие модули можно вынести в отдельную папку src/common.
- Можно использовать стандартные и нестандартные библиотеки языка Си, можно использовать собственноручно разработанные библиотеки из других проектов.
- Формулировка сообщения при возникновении ошибочной ситуации не имеет значения.
- Ввод через stdin обрабатывать не обязательно.