💻 Разбор домашних заданий

К оглавлению урока

⚡ Разбор ДЗ кратко

ДЗ 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):

  1. Создать скрипт sleeper.sh, который 10 раз с интервалом в 5 секунд пишет дату в формате HHMMSS и количество процессов одним числом
  2. Убрать/уменьшить временной интервал, используя vi или nano
  3. Записать в файл информацию о процессоре: cat /proc/cpuinfo
  4. Записать имя ОС, отфильтровать до чистого имени
  5. Создать 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} — диапазон bash
  • date +"%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):

  1. Форкнуть репозиторий https://github.com/it-career-hub/learning_git (если не делали)
  2. Склонировать на локальный компьютер или выполнить pull
  3. Работаем в PyCharm
  4. Создать папку с именем группы
  5. Создать ветку с именем и HW16 (например andrew-hw16) и переключиться на неё
  6. В директории группы создать файл с именем (без личных данных)
  7. Выполнить commit, push и открыть PR в learning_git из созданной ветки
  8. Прислать ссылку на PR (например: https://github.com/aliaskov/bashscripts/pull/45)

Пошаговое решение

  1. Форк и клонирование:
    • GitHub → репозиторий it-career-hub/learning_git → Fork
    • PyCharm → Get from VCS → вставить URL вашего форка → Clone
  2. Создать ветку в PyCharm:
    • Правый нижний угол (или Git → Branches) → New Branch → andrew-hw16
    • PyCharm автоматически переключится на новую ветку
  3. Создать файл и папку:
    • Project view → папка группы (создать если нет) → New File → andrew.txt
  4. Commit + Push:
    • Меню Git → Commit (или Ctrl+K) → выбрать файл → сообщение → Commit and Push
  5. Открыть PR на GitHub:
    • GitHub → ваш форк → Pull Requests → New pull request
    • base: it-career-hub/learning_git main ← compare: ваш-форк andrew-hw16
    • Create pull request → заполнить описание → Submit