💻 Разбор домашних заданий
⚡ Разбор ДЗ кратко
ДЗ 24 (sleeper.sh):
#!/bin/bash
for i in {1..10}; do
date +"%H:%M:%S"
sleep 2
done
ps -ef | tail +2 | wc -l
cat /proc/cpuinfo
cat /etc/os-release | grep PRETTY_NAME | awk -F'"' '{print $2}'
ДЗ 25 (PR в PyCharm): форк → clone → ветка andrew-hw16 → файл → commit+push → PR в learning_git.
Разбор ДЗ занятия 24 — sleeper.sh
Задание из источника (Lecture 15):
- Создать скрипт
sleeper.sh, который 10 раз с интервалом в 5 секунд пишет дату в формате HHMMSS и количество процессов одним числом - Убрать/уменьшить временной интервал, используя
viилиnano - Записать в файл информацию о процессоре:
cat /proc/cpuinfo - Записать имя ОС, отфильтровать до чистого имени
- Создать 50 файлов с расширением
.txtи именами от50.txtдо100.txt
Решение из источника
Файл скрипта: /opt/ГРУППА/ПАПКА/sleeper.sh
#!/bin/bash
# Часть 1: 10 итераций с датой и паузой
for i in {1..10}; do
date +"%H:%M:%S"
sleep 2
done
# Часть 2: количество процессов (без заголовка)
ps -ef | tail +2 | wc -l
# Часть 3: информация о процессоре
cat /proc/cpuinfo
# Часть 4: имя ОС без кавычек
cat /etc/os-release | grep PRETTY_NAME | awk -F'"' '{print $2}'
# Альтернатива для ОС:
# cat /etc/os-release | grep PRETTY_NAME | sed 's/PRETTY_NAME=//'
# Часть 5: создать файлы 50.txt .. 100.txt
for j in {50..100}; do
touch "$j.txt"
sleep 1
done
Пояснение ключевых строк
for i in {1..10}; do ... done— цикл 10 итераций;{1..10}— диапазон bashdate +"%H:%M:%S"— вывод времени в формате Ч:М:С (23:05:42)sleep 2— пауза 2 секунды (в ДЗ было 5, в решении уменьшили)ps -ef | tail +2 | wc -l— список процессов, пропустить заголовок (tail +2= начиная со 2-й строки), посчитать строкиcat /proc/cpuinfo— информация о процессоре из псевдофайловой системыgrep PRETTY_NAME— найти строку с именем ОСawk -F'"' '{print $2}'— разбить по кавычке, вывести второй элемент = чистое имя ОСfor j in {50..100}— диапазон от 50 до 100 включительно (51 файл)
Примечание по sleep 1 в цикле файлов: Если скрипт создаёт 51 файл с паузой 1 сек, это займёт ~51 секунду. В реальных задачах уберите
sleep из цикла создания файлов, если интервал не требуется заданием.
Разбор ДЗ занятия 25 — PR в PyCharm
Задание из источника (Lecture 16):
- Форкнуть репозиторий
https://github.com/it-career-hub/learning_git(если не делали) - Склонировать на локальный компьютер или выполнить pull
- Работаем в PyCharm
- Создать папку с именем группы
- Создать ветку с именем и HW16 (например
andrew-hw16) и переключиться на неё - В директории группы создать файл с именем (без личных данных)
- Выполнить commit, push и открыть PR в
learning_gitиз созданной ветки - Прислать ссылку на PR (например:
https://github.com/aliaskov/bashscripts/pull/45)
Пошаговое решение
-
Форк и клонирование:
- GitHub → репозиторий
it-career-hub/learning_git→ Fork - PyCharm → Get from VCS → вставить URL вашего форка → Clone
- GitHub → репозиторий
-
Создать ветку в PyCharm:
- Правый нижний угол (или Git → Branches) → New Branch →
andrew-hw16 - PyCharm автоматически переключится на новую ветку
- Правый нижний угол (или Git → Branches) → New Branch →
-
Создать файл и папку:
- Project view → папка группы (создать если нет) → New File →
andrew.txt
- Project view → папка группы (создать если нет) → New File →
-
Commit + Push:
- Меню Git → Commit (или Ctrl+K) → выбрать файл → сообщение → Commit and Push
-
Открыть PR на GitHub:
- GitHub → ваш форк → Pull Requests → New pull request
- base:
it-career-hub/learning_git main← compare:ваш-форк andrew-hw16 - Create pull request → заполнить описание → Submit
Подробнее: ← Занятие 25 — примеры: PR в PyCharm