Skip to content

Latest commit

 

History

History
32 lines (26 loc) · 3.82 KB

README_RUS.md

File metadata and controls

32 lines (26 loc) · 3.82 KB

s21_SimpleBashUtils

Разработка текстовой утилиты Bash cat.

Cat - одна из наиболее часто используемых команд в Unix-подобных операционных системах.
Команда имеет три взаимосвязанные функции в отношении текстовых файлов: отображение, объединение их копий и создание новых.
cat [OPTION] [FILE]...

cat Опции:

Опции Описание
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 обрабатывать не обязательно.