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

🏠 Домашнее задание 2

⚡ Суть задания

Практическое задание в терминале: создать структуру каталогов для animals и humans, работать с файлами adam и eve по правилам из ДЗ, сохранить историю команд.

Окружение: JSLinux (jslinux.org) или WSL2.

Ключевые команды: mkdir -p, touch, cp, mv, ls, history.

📋 Формулировка задания

Исходное задание из LMS (Linux: Домашнее задание 2) — 10 баллов:

  1. Создать папку animals в /home (1 балл)
  2. Создать подпапки dogs, cats, fish внутри animals (1 балл)
  3. Добавить файлы: pluto в dogs, nemo в fish, garfield в cats (1 балл)
  4. В папке /tmp создать файл adam (1 балл)
  5. Скопировать adam в /home/humans (создать директорию, если её нет) (1 балл)
  6. Создать файл evA в /tmp (1 балл)
  7. Переместить файл evA в /opt под именем eve (создать /opt если нет) (1 балл)
  8. Переместить файл eve из /opt в /home/humans (1 балл)
  9. Удостовериться, что файлы adam и eve теперь находятся в /home/humans (1 балл)
  10. Выполнить команду: history > /tmp/history.txt и передать файл преподавателю с помощью: export_file /tmp/history.txt (1 балл)
Окружение для выполнения:
  • jslinux.org — браузерная песочница; поддерживает export_file для скачивания файла (шаг 10). Рекомендуется для ДЗ 2.
  • WSL2 — если jslinux.org недоступен; для шага 10 просто покажите содержимое файла: cat /tmp/history.txt.

🛠️ Пошаговое решение с разбором

Шаг 1–3: Структура animals

# Создаём папку animals в /home
mkdir /home/animals

# Создаём подпапки
mkdir /home/animals/dogs
mkdir /home/animals/cats
mkdir /home/animals/fish

# Создаём файлы животных
touch /home/animals/dogs/pluto
touch /home/animals/fish/nemo
touch /home/animals/cats/garfield

# Проверяем
ls -R /home/animals
# /home/animals:
# cats  dogs  fish
# /home/animals/cats:
# garfield
# /home/animals/dogs:
# pluto
# /home/animals/fish:
# nemo
Логика: используем абсолютные пути, начиная с /home. Команда touch создаёт пустой файл — содержимое в задании не требуется, важна структура.

Шаг 4–5: Файл adam

# Создаём adam в /tmp
touch /tmp/adam

# Создаём папку humans в /home (если не существует, -p не мешает)
mkdir -p /home/humans

# Копируем adam в humans
cp /tmp/adam /home/humans/adam

# Проверяем
ls /home/humans
# adam
Логика: используем cp, а не mv — условие говорит «скопировать». После копирования adam остаётся и в /tmp, и в /home/humans.

Шаг 6–8: Файл eve (evA → eve)

# Создаём evA в /tmp
touch /tmp/evA

# Перемещаем evA в /opt с переименованием в eve
# (в JSLinux /opt существует; в WSL2 создайте: mkdir -p /opt)
mv /tmp/evA /opt/eve

# Проверяем
ls /opt
# eve

# Перемещаем eve из /opt в /home/humans
mv /opt/eve /home/humans/eve

# Финальная проверка
ls /home/humans
# adam  eve
Логика mv с переименованием: когда второй аргумент mv — полный путь с именем файла (не папка), команда одновременно перемещает и переименовывает. mv /tmp/evA /opt/eve = взять файл evA из /tmp, положить в /opt под именем eve.

Шаг 9: Проверка

ls /home/humans
# adam  eve
# Оба файла присутствуют

Шаг 10: Сохранение истории

# Сохраняем историю в файл
history > /tmp/history.txt

# В JSLinux: передаём файл преподавателю
export_file /tmp/history.txt

# В WSL2: показываем содержимое
cat /tmp/history.txt
export_file — специальная команда JSLinux, скачивает файл из браузерной VM на ваш компьютер. Вне JSLinux не существует — это нормально.

📋 Полный скрипт одним блоком

Все 10 шагов для копирования в терминал:

# ДЗ 2: animals и humans

# Шаги 1-3: animals
mkdir /home/animals
mkdir /home/animals/dogs /home/animals/cats /home/animals/fish
touch /home/animals/dogs/pluto /home/animals/fish/nemo /home/animals/cats/garfield

# Шаги 4-5: adam
touch /tmp/adam
mkdir -p /home/humans
cp /tmp/adam /home/humans/adam

# Шаги 6-8: evA -> eve
touch /tmp/evA
mv /tmp/evA /opt/eve
mv /opt/eve /home/humans/eve

# Шаг 9: проверка
ls /home/humans

# Шаг 10: история
history > /tmp/history.txt
export_file /tmp/history.txt

🧪 Как проверить перед сдачей

  1. Запустите ls -R /home/animals — должны видеть 3 подпапки и 3 файла.
  2. Запустите ls /home/humans — должны видеть adam и eve.
  3. Убедитесь, что /tmp/history.txt создан: cat /tmp/history.txt.

💡 Связь с разделами урока