📋 Формулировка задания
Исходное задание из LMS (Linux: Домашнее задание 2) — 10 баллов:
- Создать папку animals в /home (1 балл)
- Создать подпапки dogs, cats, fish внутри animals (1 балл)
- Добавить файлы: pluto в dogs, nemo в fish, garfield в cats (1 балл)
- В папке /tmp создать файл adam (1 балл)
- Скопировать adam в /home/humans (создать директорию, если её нет) (1 балл)
- Создать файл evA в /tmp (1 балл)
- Переместить файл evA в /opt под именем eve (создать /opt если нет) (1 балл)
- Переместить файл eve из /opt в /home/humans (1 балл)
- Удостовериться, что файлы adam и eve теперь находятся в /home/humans (1 балл)
- Выполнить команду:
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
🧪 Как проверить перед сдачей
- Запустите
ls -R /home/animals— должны видеть 3 подпапки и 3 файла. - Запустите
ls /home/humans— должны видетьadamиeve. - Убедитесь, что
/tmp/history.txtсоздан:cat /tmp/history.txt.
💡 Связь с разделами урока
- Структура команд — Теория: структура команды
- Пути — Теория: абсолютный и относительный путь
- Все команды с флагами — Справочник
- Аналогичный пример с разбором — Примеры, пример 6
- Ошибки: rm вместо cp, mv без переименования — Типичные ошибки