Пример 1. Решение ДЗ 3 — построчный разбор
Слайд «Решение» из презентации сессии, разобранный по строкам (кавычки выпрямлены в соответствии с современным синтаксисом):
# терминал Ubuntu/JSLinux
mkdir -p /home/user/start # 1. вся иерархия одной командой (ключ -p!)
touch /home/user/start/1.txt # 1. пустой файл
echo "Start" > /home/user/start/1.txt # 2. записать слово Start (> — файл пуст, можно перезаписать)
date >> /home/user/start/1.txt # 3. ДОЗАПИСАТЬ дату (>> — иначе Start сотрётся)
mkdir -p /opt/task/ # 4. каталог-приёмник
cp /home/user/start/1.txt /opt/task/start.txt # 4. копия с переименованием
ls -la / | tail -4 >> /opt/task/start.txt # 5. конвейер: все объекты корня → последние 4 строки → дозапись
Последняя строка — самая насыщенная конструкция недели: ls -la / выводит список всех объектов корня (включая скрытые — ключ -a), pipe передаёт этот список команде tail -4, которая оставляет последние 4 строки, а >> дозаписывает их в файл, не стирая «Start» и дату.
Проверка результата:
# терминал Ubuntu/JSLinux
cat /opt/task/start.txt # Start, дата и 4 строки из листинга корня
Пример 2. echo + перенаправления — создание и наполнение файла
Первые шаги задания для закрепления показывают типовой паттерн «писать в файл без редактора»:
# терминал Ubuntu/JSLinux
echo "Hello, World!" > output.txt # создать файл и записать строку
echo "This is a practice file." >> output.txt # дописать вторую строку
echo "This is a test line." >> output.txt # дописать третью строку
cat output.txt # проверить: три строки на месте
> оставит в файле только «Hello, World!» — всё, что дописано через >>, исчезнет. Перезапись необратима.
Пример 3. tail и wc с перенаправлением результата
# терминал Ubuntu/JSLinux
tail -n 3 output.txt > last_lines.txt # последние 3 строки — в новый файл
wc last_lines.txt > word_count.txt # строки, слова, байты — в файл
cat word_count.txt # например: 3 12 67 last_lines.txt
wc без ключей печатает сразу три числа: строки, слова, байты. Нужны только строки — wc -l, только слова — wc -w, только байты — wc -c.
Пример 4. Работа с системным файлом /etc/passwd
Вторая половина закрепления — повторение на реальном системном файле со списком пользователей:
# терминал Ubuntu/JSLinux
cat /etc/passwd > passwd_copy.txt # копия содержимого через cat + перенаправление
wc -l passwd_copy.txt # сколько всего строк (= записей о пользователях)
head -n 10 passwd_copy.txt >> /home/passwd_head_tail # первые 10 строк — дописать
tail -n 4 passwd_copy.txt >> /home/passwd_head_tail # последние 4 строки — дописать
cat /home/passwd_head_tail # итог: 10 + 4 = 14 строк
Обратите внимание: обе команды пишут в один файл через >> — поэтому строки head и tail оказываются в нём вместе. С > вторая команда стёрла бы результат первой.
Пример 5. Конвейер вместо промежуточного файла
Тот же подсчёт строк /etc/passwd можно сделать без копии — данные текут между процессами напрямую:
# терминал Ubuntu/JSLinux
cat /etc/passwd | wc -l # конвейер из лекции 3
wc -l < /etc/passwd # то же самое через перенаправление ввода (без cat)
Оба варианта дают одно число. Разница стилей разобрана в справочнике занятия 04.