💻 Разбор домашнего задания 4

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

⚡ Правильное решение ДЗ 4

# Задание ДЗ 4 (JSLinux)
date > /tmp/file.txt                         # 1. Записать дату (создаёт файл)
df -h | grep -w / >> /tmp/file.txt           # 2. Дозаписать место на /
history | tail -3 >> /tmp/file.txt           # 3. Дозаписать 3 последние команды
cat /etc/passwd | grep cron >> /tmp/file.txt # 4. Дозаписать строки с cron из /etc/passwd
grep root /etc/group | wc -l >> /tmp/file.txt # 5. Дозаписать кол-во строк со словом root
vi /tmp/file.txt                              # 6. Открыть vi, i → добавить строку, Esc → :wq
export_file /tmp/file.txt                     # 7. Экспортировать файл из JSLinux

Домашнее задание 4 (условие)

Работаем в JSLinux. Задание:

  1. Записать в новый файл дату.
  2. Дописать информацию о занятом пространстве на корневом разделе файловой системы (/).
  3. Дописать в файл три последних команды из истории команд.
  4. Дописать в файл информацию из /etc/passwd, отфильтровав строки со словом cron.
  5. Дописать в файл количество строк со словом root из /etc/group.
  6. В текстовом редакторе добавить второй строкой фразу "Modified with text editor".
  7. Экспортировать файл при помощи export_file.

Правильное решение (с сессии)

Шаг 1: Записать дату — создать файл

date > /tmp/file.txt

Здесь > создаёт файл и записывает туда дату. Если файл уже существует — перезаписывает.

Шаг 2: Дозаписать место на /

df -h | grep -w / >> /tmp/file.txt

>> — ДОЗАПИСАТЬ (не перезаписывать!). grep -w / — строка только с корневым разделом.

Шаг 3: Дозаписать 3 последние команды

history | tail -3 >> /tmp/file.txt

Пайп | передаёт историю команд в tail -3, который берёт три последних строки.

Шаг 4: Строки с cron из /etc/passwd

cat /etc/passwd | grep cron >> /tmp/file.txt

Фильтруем системный файл паролей по слову cron.

Шаг 5: Количество строк с root из /etc/group

grep root /etc/group | wc -l >> /tmp/file.txt

wc -l подсчитывает строки. Важно: ключ -l (буква «эль»), не -1 (единица).

Шаг 6: Добавить строку в текстовом редакторе

vi /tmp/file.txt
# Действия в vi:
# gg — перейти в начало файла
# o  — открыть новую строку под первой строкой
# Набрать: Modified with text editor
# Esc → :wq — сохранить и выйти

Шаг 7: Экспортировать файл

export_file /tmp/file.txt

Команда специфична для JSLinux — скачивает файл из песочницы в браузер.

Решение закрепляющего задания (с сессии)

# Шаг 1: доступное место на всех дисках (название + доступно)
df -h | awk '{print $1, $4}'

# Шаг 2: количество строк в /etc/group со словом user2
cat /etc/group | grep "user2" | wc -l

# Шаг 3: 2-й столбец /etc/group — сколько x и сколько *
cat /etc/group | awk -F: '{print $2}' | grep x | wc -l
cat /etc/group | awk -F: '{print $2}' | grep -v x | wc -l

# Шаг 4: работа с разделителем (проверка awk -F)
cat /etc/group | awk -F: '{print $2}'

# Шаг 5: последние 3 строки /etc/group → файл, заменить 1000 на 777
tail -3 /etc/group > /tmp/file
sed -i 's/1000/777/g' /tmp/file

# Шаг 6–7: заменить user2 в файле (через vi), дозаписать пользователей из /etc/passwd
cat /etc/passwd | awk -F: '{print $1}' >> /tmp/file

# Шаг 8: дописать в начале каждой строки слово Username
sed -i 's/^/Username: /' /tmp/file