📋 Формулировка задания
Исходное задание из LMS (Linux: Домашнее задание 4):
Домашнее задание № 4. Работаем в JSLinux.
- Записать в новый файл дату.
- Дописать в этот файл информацию о занятом пространстве на корневом разделе файловой системы (/).
- Дописать в файл три последних команд из истории команд.
- Дописать в файл информацию из (/etc/passwd), но отфильтруйте информацию так, чтобы в файл ушли только строки со словом cron.
- Дописать в файл количество строк со словом root из (/etc/group).
- В текстовом редакторе добавьте второй строкой фразу “Modified with text editor”.
Что вам понадобится: date, df и df -h, history, grep и grep -v, cat, wc -l, tail, export_file. grep -v — исключить из результата строку с содержимым фильтра.
Экспортируйте и пришлите результирующий файл в формате txt при помощи команды export_file.
🔧 Шаг 0. Подготовка окружения
Окружение настроено на занятии 01 (WSL + репозиторий ~/linux-git-course). Для этого ДЗ добавьте папку урока:
Папка урока
# терминал Ubuntu (WSL)
mkdir -p ~/linux-git-course/lesson-06
cd ~/linux-git-course/lesson-06
Если работаете в песочнице JSLinux (как требует задание) — шаг пропустите: команды выполняются прямо в браузере, файл экспортируете через export_file. Не обновляйте вкладку — потеряете сессию.
Редакторы на месте?
# терминал Ubuntu (WSL) — проверяем редакторы
nano --version # в Ubuntu (WSL) nano предустановлен
vi --version # vi/vim тоже обычно есть (vim.tiny)
# если vi/vim вдруг нет — установить:
sudo apt update && sudo apt install vim
В JSLinux есть vi (из busybox); nano там может отсутствовать — лекция честно предупреждала, что на минималистичных дистрибутивах его не включают. Пункт 6 в песочнице делайте через vi.
🛠️ Пошаговое решение
Дата — в новый файл (пункт 1)
# терминал Ubuntu/JSLinux
date > newfile_homework4.txt
cat newfile_homework4.txt # одна строка с датой
Файл новый, поэтому здесь единственное законное место для > — все остальные пункты говорят «дописать», то есть только >> (см. ошибку 1 занятия 04).
Занятость корневого раздела (пункт 2)
# терминал Ubuntu/JSLinux
df -h # сперва смотрим всю таблицу
df -h | grep -w / >> newfile_homework4.txt # дописываем только строку корня
Ровно конвейер из теории: df -h показывает занятость дисков человекочитаемо, grep -w / оставляет одну строку корневого раздела. Без -w в файл уехала бы почти вся таблица — слеш есть в каждом пути (ошибка 7).
Три последние команды истории (пункт 3)
# терминал Ubuntu/JSLinux
history | tail -3 # проверяем глазами
history | tail -3 >> newfile_homework4.txt # и дописываем
Связка из занятия 04: history выводит историю, tail -3 берёт три последние строки. Учтите: сама команда history | tail -3 >> … тоже попадёт в историю — выполняйте проверку и запись подряд, чтобы в файле оказались осмысленные команды.
Строки с cron из /etc/passwd (пункт 4)
# терминал Ubuntu/JSLinux
grep cron /etc/passwd # только строки со словом cron
grep cron /etc/passwd >> newfile_homework4.txt # дописываем в файл
# равнозначный вариант через конвейер:
cat /etc/passwd | grep cron >> newfile_homework4.txt
grep умеет искать прямо в файле (первый вариант) или в выводе cat (второй) — оба показаны в теории. Подсказка из LMS про grep -v — на случай обратной задачи: «все строки, КРОМЕ…»; здесь нужен обычный grep без -v.
Количество строк с root из /etc/group (пункт 5)
# терминал Ubuntu/JSLinux
grep -w root /etc/group | wc -l # сколько строк со словом root
grep -w root /etc/group | wc -l >> newfile_homework4.txt # число — в файл
Конвейер из двух фильтров: grep отбирает строки со словом root (ключ -w — слово целиком, чтобы не зацепить что-то вроде chroot), wc -l считает их количество. В файл дописывается одно число.
Вторая строка — в текстовом редакторе (пункт 6)
Главный пункт урока: открываем файл в редакторе и вставляем второй строкой фразу Modified with text editor.
# терминал Ubuntu/JSLinux — вариант А: vi
vi newfile_homework4.txt
# внутри vi
# курсор стоит в начале 1-й строки (с датой)
<End> / стрелка → # переместиться в КОНЕЦ первой строки
i # режим вставки (внизу слева: - → I)
<Enter> # перенос строки — открыли новую 2-ю строку
Modified with text editor
<Esc> # выход из режима вставки
:wq # сохранить и выйти
# терминал Ubuntu (WSL) — вариант Б: nano (если установлен)
nano newfile_homework4.txt
# курсор в конец 1-й строки (End), Enter — новая строка,
# печатаем: Modified with text editor
# Ctrl+O, Enter — сохранить; Ctrl+X — выйти
Почему «конец первой строки → Enter»: команда i вставляет текст перед курсором, поэтому надёжнее всего встать в конец строки с датой, перенести строку и напечатать фразу — она гарантированно станет второй, а дата останется первой.
Экспорт результата
# песочница JSLinux — скачать файл на свой компьютер
export_file newfile_homework4.txt
# WSL: файл и так на вашем диске — кладём в репозиторий курса
cp newfile_homework4.txt ~/linux-git-course/lesson-06/
export_file — служебная команда песочницы JSLinux, не Linux (разбирали в специфичная команда JSLinux-песочницы); в WSL она не нужна.
✅ Полное решение
# терминал Ubuntu/JSLinux — ДЗ 4 целиком (пункт 6 — в редакторе)
date > newfile_homework4.txt
df -h | grep -w / >> newfile_homework4.txt
history | tail -3 >> newfile_homework4.txt
grep cron /etc/passwd >> newfile_homework4.txt
grep -w root /etc/group | wc -l >> newfile_homework4.txt
vi newfile_homework4.txt # End → i → Enter → Modified with text editor → Esc → :wq
cat newfile_homework4.txt # финальная проверка
export_file newfile_homework4.txt # только в JSLinux
🧪 Как проверить и сдать
- Откройте файл и сверьте структуру:
# терминал Ubuntu/JSLinux cat newfile_homework4.txt # строка 1: дата (Wed Jun 10 ...) # строка 2: Modified with text editor ← вставлена редактором # строка 3: /dev/root ... 47% / ← df по корню # далее: 3 команды истории, строки с cron, число строк с root - Убедитесь, что фраза стоит именно второй строкой:
head -2 newfile_homework4.txt— вторая строка должна бытьModified with text editor. - В JSLinux выполните
export_file newfile_homework4.txt— браузер скачает файл; его и прикрепите в LMS (формат .txt). - В WSL — сохраните результат в репозиторий курса (в VS Code: откройте папку
~/linux-git-course, файл виден в проводнике слева, команды — во встроенном терминале):# терминал Ubuntu (WSL) cd ~/linux-git-course git add lesson-06/newfile_homework4.txt git commit -m "lesson-06: vi/nano — файл-отчёт ДЗ 4"
G, а к началу файла — поиском /Modified; для вставки строки после первой достаточно встать на первую строку, нажать i, стрелкой → дойти до конца и нажать Enter. Главное — не печатать текст до нажатия i (ошибка 2).
💡 Связь с разделами урока
- Вставка строки в vi (пункт 6) — сессия vi в теории и примеры 1–2; альтернатива в nano — пример 4.
- Конвейер
df -h | grep -w /(пункт 2) — piping в теории и примеры 5–6. - Фильтры grep и подсчёт
wc -l(пункты 4–5) — ключи grep и справочник. history | tail -3и дозапись>>(пункты 1, 3) — повторение занятия 04.- Как не испортить файл в редакторе — ошибки 1–5.