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

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

⚡ Ключевые решения

# ДЗ 15 — myfirstbashscript.sh (JSLinux)
ps -ef | grep bioset | grep -v grep | wc -l
ls -la /etc/passwd | awk '{print $1}'

# ДЗ 16 — ветка gitignore
git checkout -b gitignore
git add .gitignore
git commit -m "Add .gitignore"
git push origin gitignore

Разбор ДЗ 15 — myfirstbashscript.sh

Задание: написать bash-скрипт, который выводит дату, приветствует по имени, показывает текущую директорию, считает процессы bioset (без grep) и выводит права /etc/passwd.

Решение

# myfirstbashscript.sh
#!/bin/bash
USER=Andrew
date
echo hello $USER!
pwd
ps -ef | grep bioset | grep -v grep | wc -l
ls -la /etc/passwd | awk '{print $1}'

Разбор ключевых строк

  • USER=Andrew — переменная без пробелов вокруг =. Читается как $USER.
  • ps -ef | grep bioset | grep -v grep | wc -l — конвейер из 4 команд:
    1. ps -ef — все процессы
    2. grep bioset — фильтруем по имени
    3. grep -v grep — исключаем сам процесс grep (иначе он тоже попадёт в список!)
    4. wc -l — считаем строки = количество процессов
  • ls -la /etc/passwd | awk '{print $1}' — вывод ls -la передаётся в awk, который берёт первое поле (права, например -rw-r--r--).

Частые ошибки в ДЗ 15

  • Неверный путь к скрипту (нет ./ перед именем)
  • Неверная переменная USER — использование без $: echo USER вместо echo $USER
  • Ошибка в написании shebang: #! /bin/bash (пробел после #!) — некоторые системы не распознают
  • Пропущен grep -v grep — в результате подсчёта появляется лишний процесс (сам grep)
  • Неверная последовательность команд в конвейере — данные передаются слева направо через |

Разбор ДЗ 16 — репозиторий git-branch с веткой gitignore

Задание: создать репозиторий git-branch, инициализировать локальный репозиторий, создать ветку gitignore, добавить .gitignore, закоммитить и отправить.

Решение — шаг за шагом

# 1. Инициализировать локальный репозиторий
mkdir git-branch
cd git-branch
git init

# 2. Создать ветку gitignore и переключиться на неё
git checkout -b gitignore

# 3. Создать файл .gitignore (пример содержимого)
# Можно скачать с https://github.com/aliaskov/bashscripts/blob/master/.gitignore

# 4. Добавить .gitignore в индекс
git add .gitignore

# 5. Закоммитить
git commit -m "Add .gitignore"

# 6. Подключить удалённый репозиторий и отправить ветку
git remote add origin git@github.com:YOUR_USERNAME/git-branch.git
git push origin gitignore

Пример корректного .gitignore

# Игнорировать системные файлы macOS
.DS_Store

# Игнорировать IDE-файлы
.idea/
.vscode/

# Игнорировать зависимости
node_modules/
__pycache__/

# Игнорировать логи
*.log

# Игнорировать переменные окружения
.env

Частые ошибки в ДЗ 16

  • Неправильное название репозитория на GitHub — должно совпадать с локальным.
  • Забыли инициализировать локальный репозиторий: git init обязателен.
  • Ошибка при создании ветки: некоторые используют git branch gitignore без -b и не переключаются на неё.
  • Неправильное содержимое .gitignore — если скопировать лишнее, файл перестаёт работать корректно.
  • Неверная последовательность: git addgit commitgit push. Нарушение порядка приводит к ошибкам.