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

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

Собрать файл-отчёт: дата (date >), занятость корня (df -h | grep -w / >>), три последние команды истории (history | tail -3 >>), строки с cron из /etc/passwd (grep cron >>), число строк с root в /etc/group (grep -w root | wc -l >>) — и в текстовом редакторе вставить второй строкой Modified with text editor.

Результат: файл .txt, экспортированный из JSLinux командой export_file и сданный в LMS.

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

Исходное задание из LMS (Linux: Домашнее задание 4):

Домашнее задание № 4. Работаем в JSLinux.

  1. Записать в новый файл дату.
  2. Дописать в этот файл информацию о занятом пространстве на корневом разделе файловой системы (/).
  3. Дописать в файл три последних команд из истории команд.
  4. Дописать в файл информацию из (/etc/passwd), но отфильтруйте информацию так, чтобы в файл ушли только строки со словом cron.
  5. Дописать в файл количество строк со словом root из (/etc/group).
  6. В текстовом редакторе добавьте второй строкой фразу “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). Для этого ДЗ добавьте папку урока:

1

Папка урока

# терминал Ubuntu (WSL)
mkdir -p ~/linux-git-course/lesson-06
cd ~/linux-git-course/lesson-06

Если работаете в песочнице JSLinux (как требует задание) — шаг пропустите: команды выполняются прямо в браузере, файл экспортируете через export_file. Не обновляйте вкладку — потеряете сессию.

2

Редакторы на месте?

# терминал 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

Дата — в новый файл (пункт 1)

# терминал Ubuntu/JSLinux
date > newfile_homework4.txt
cat newfile_homework4.txt    # одна строка с датой

Файл новый, поэтому здесь единственное законное место для > — все остальные пункты говорят «дописать», то есть только >> (см. ошибку 1 занятия 04).

2

Занятость корневого раздела (пункт 2)

# терминал Ubuntu/JSLinux
df -h                                        # сперва смотрим всю таблицу
df -h | grep -w / >> newfile_homework4.txt   # дописываем только строку корня

Ровно конвейер из теории: df -h показывает занятость дисков человекочитаемо, grep -w / оставляет одну строку корневого раздела. Без -w в файл уехала бы почти вся таблица — слеш есть в каждом пути (ошибка 7).

3

Три последние команды истории (пункт 3)

# терминал Ubuntu/JSLinux
history | tail -3                            # проверяем глазами
history | tail -3 >> newfile_homework4.txt   # и дописываем

Связка из занятия 04: history выводит историю, tail -3 берёт три последние строки. Учтите: сама команда history | tail -3 >> … тоже попадёт в историю — выполняйте проверку и запись подряд, чтобы в файле оказались осмысленные команды.

4

Строки с 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.

5

Количество строк с 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

Вторая строка — в текстовом редакторе (пункт 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 вставляет текст перед курсором, поэтому надёжнее всего встать в конец строки с датой, перенести строку и напечатать фразу — она гарантированно станет второй, а дата останется первой.

7

Экспорт результата

# песочница 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

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

  1. Откройте файл и сверьте структуру:
    # терминал Ubuntu/JSLinux
    cat newfile_homework4.txt
    # строка 1: дата (Wed Jun 10 ...)
    # строка 2: Modified with text editor   ← вставлена редактором
    # строка 3: /dev/root ... 47% /         ← df по корню
    # далее: 3 команды истории, строки с cron, число строк с root
  2. Убедитесь, что фраза стоит именно второй строкой: head -2 newfile_homework4.txt — вторая строка должна быть Modified with text editor.
  3. В JSLinux выполните export_file newfile_homework4.txt — браузер скачает файл; его и прикрепите в LMS (формат .txt).
  4. В 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"
💡 Если в JSLinux нет End/удобных стрелок: в vi командного режима можно перейти на последнюю строку клавишей G, а к началу файла — поиском /Modified; для вставки строки после первой достаточно встать на первую строку, нажать i, стрелкой → дойти до конца и нажать Enter. Главное — не печатать текст до нажатия i (ошибка 2).

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