💻 Примеры: цепочки команд с сессии

⚡ Кратко: главная цепочка сессии

# терминал Ubuntu/JSLinux — эталонное решение ДЗ 3 (со слайда, кавычки выпрямлены)
mkdir -p /home/user/start
touch /home/user/start/1.txt
echo "Start" > /home/user/start/1.txt
date >> /home/user/start/1.txt
mkdir -p /opt/task/
cp /home/user/start/1.txt /opt/task/start.txt
ls -la / | tail -4 >> /opt/task/start.txt

Здесь вся неделя в семи строках: > (перезапись), >> (дозапись), конвейер | и tail.

Пример 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.