From ec85c78e54ad1390d82d39faac07713a738b92d8 Mon Sep 17 00:00:00 2001 From: Aleksey Zubakov Date: Thu, 20 Oct 2022 18:12:38 +0300 Subject: [PATCH] Add problemset 1 --- README.md | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 119 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a56ab4c..f85f56f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,124 @@ -# Домашние задания по Unix +## Домашнее задание 1 -Этот репозиторий содержит домашние задания к курсу Unix. +### 1. Rand (2 балл) -## Процесс сдачи +Написать команду, которая будет создавать файл rnd.txt в текущем каталоге. -[Инструкция](instruction.md) -- абсолютно аналогичная инструкция будет и на -Python. +Размер файла rnd.txt -- случайное число байт. -## Сроки сдачи +Файл должен быть полностью заполнен случайными байтами. -**Дедлайны:** см. в README в соответствующей ветке. +Размер можно вычислять заранее, запоминая результат в переменной. + +Используйте `dd`, переменную окружения `RANDOM` (`echo $RANDOM`, и см. `bash(1)`), +а также `/dev/urandom`. + +### 2. Сумма (1 балл) + +Посчитайте сумму значений в третьем столбце файла `digits.txt`. + +Используйте `paste`, чтобы сформировать выражение и `bc`, чтобы его вычислить. +Не забывайте про process subsctitution `$()` + +### 3. Посчитаемся (1 балл) + +Посчитайте количество регулярных файлов в текущем каталоге, +измененных больше 30 минут и меньше суток назад и имеющих расширение `.txt`. + +Для решения используйте `find` и `wc`. + +### 4. ping (1 балл) + +В файле `ips.txt` записаны IP-адреса (по одному на каждой строчке). + +Написать скрипт, считывающий IP-адреса из этого файла, пингует (команда `ping`) +их и записывает результат в `res.txt`, а ошибки -- в `err.txt`. + +Подсказка: +```bash +while IFS= read -r line; do + echo "Text read from file: $line" +done < my_filename.txt +``` + +### 5. Четное-нечетное (1 балл) +Введите целое число и проверьте, является ли оно чётным или нечётным. +Скрипт должен запрашивать число, и выводить **EVEN** или **ODD** соответственно. + +### 6. Палиндром (1 балл) +Написать скрипт, который проверяет, является ли введенная строка палиндромом. +Скрипт должен запрашивать строку, и выводить **YES** или **NO** соответственно. + +### 7. factor (1 балл) + +Написать скрипт, который раскладывает на простые множители все числа из +заданного в первом параметре скрипта файла и записывает результат в другой файл, +заданный во втором параметре. Каждое число из разложения необходимо вывести +столько раз, сколько оно там встречается (см. пример для числа 1236). + +Пример входных данных: + + 123 + 15123 + 1236 + 97 + +Пример выходных данных: + + 123: 3 41 + 15123: 3 71 71 + 1236: 2 2 3 103 + 97: 97 + +### 8. find (1 балл) + +Переименовать все файлы в текущем каталоге (с учетом всех подкаталогов рекурсивно), +имеющие расширение не .sh и измененные не более двух суток назад и не менее суток +назад, добавив в начало имени файла символ '\_'. + +Подсказка: + +``` +find . -print0 | + while IFS= read -r -d '' line + do + echo $line + done +``` + + +### 9. cal (задача с маленькой звездочкой, 2 балла) + +С помощью команд `cal`, `cat` и `grep` вывести текущее число. Выводить месяц и +год необязательно, но можно. + +Выводить весь календарь и утверждать, что условие задания выполнено запрещается. + +### 10. Зоопарк (1 балл) + +Имеется файл, содержащий сведения о животных в зоопарке: + + id;name;h;strike;color + 1;Chicken;12;0.38;Yellow + 2;Goose;18;0.11;Green + 3;Orca;8;0.81;Yellow + 4;Porcupine;19;0.74;Yellow + 5;Bear;23;0.14;Green + 6;Turtle;4;0.08;Black + +Требуется организовать неэтичные бои без правил. Для этого нужно вывести имя +животного (`name`) и тангенс его ударной силы (`strike`) +(именно тангенс, не синус и косинус). + +При этом интересуют нас только те животные, +которые не выбыли из турнира, то есть те, перед которыми в списке было нечетное число животных того +же цвета (`color`); + +Пример вывода: + + Orca 1.0505 + Bear 0.1409 + +Примечания: +* Разрешено использовать только `awk`. +* Тангенс нужно выводить с точностью в четыре знака после запятой.