Задание 1. Работа с vi
# терминал Ubuntu/JSLinux — пункты 1–5
vi /tmp/file # 1) создать файл и открыть для редактирования
# внутри vi
i # 2) перейти в режим вставки (внизу слева: - → I)
Hello from ICH! # 3) написать текст
<Esc> # 4) выйти из режима редактирования
:wq # 5) сохранить и выйти (равноценно ZZ или :x)
# терминал Ubuntu/JSLinux — пункт 6
date >> /tmp/file # дозаписать дату (приём занятия 04!)
vi /tmp/file # открыть и посмотреть на результат
# внутри vi — пункты 7–8
i # вставка: заменить ICH на ваше имя
<Esc> # назад в командный режим
# стрелкой ↓ встать на строку с датой
dd # удалить строку с датой
:wq # 8) сохранить и выйти
Логика: файл реально появится на диске только после первого сохранения. Дату добавляем снаружи дозаписью >> — редактор для этого открывать не обязательно. dd работает в командном режиме (после Esc); если удалили не то — u вернёт строку.
Задание 2. Два редактора — один документ
# терминал Ubuntu/JSLinux — шаг 1: создаём документ в vi
vi /home/text_editors
# внутри vi
i # режим вставки
I love vi # первая строка — от vi
<Esc>
:wq # сохранить и выйти
# терминал Ubuntu/JSLinux — шаг 2: дописываем в nano
nano /home/text_editors
# внутри nano — режимов нет, сразу печатаем
# стрелкой ↓/End спускаемся на новую строку
I love nano # вторая строка — от nano
Ctrl+O, Enter # сохранить (Write Out + подтвердить имя)
Ctrl+X # выйти
# терминал Ubuntu/JSLinux — проверка
cat /home/text_editors
# I love vi
# I love nano
Логика: задание показывает разницу подходов: в vi путь к тексту лежит через режимы (i … Esc … :wq), в nano — просто печатаете и сохраняете по подсказкам внизу экрана. Результат одинаковый.
Задание 3. Экспресс-опрос: отличие awk и sed
awk — утилита и язык программирования для обработки и анализа текстовых данных: читает строки, разбивает их на поля-колонки ($1, $2, …) и выполняет операции над этими данными — например, выводит нужную колонку ('{print $5}').
sed (Stream Editor) — утилита для преобразования потока: читает вход построчно и выполняет замены/удаления/вставки текста ('s/что/на_что/g').
Коротко: awk — про структуру (колонки и анализ), sed — про правки (поиск и замена в строках). В конвейере урока они работают в паре: awk вырезал колонку 47%, sed убрал знак %.
Задание 4. Найдите НЕверное утверждение
Неверное — утверждение № 1. Поток № 2 — это stderr, стандартный поток ошибок (занятие 04), а «данные, которые оболочка выводит после выполнения каких-то действий», — это описание потока № 1, stdout. Остальные утверждения верны: grep — поиск по текстовым данным (2), awk — утилита анализа и преобразования текста (3), df — показывает занятость дисков (4).
Задание 5. Вопросы на понимание
- Режимы vi: в командном режиме клавиши — это команды (перемещение, удаление, копирование), в режиме вставки — обычный набор текста. Переключение:
i— в режим вставки,Esc— обратно в командный. - С сохранением:
:wq,:x,ZZ(большие буквы). Без сохранения::q!— отменяет все изменения с момента последнего сохранения. yyкопирует текущую строку в буфер,pвставляет её после текущей строки. Режим вставки не нужен — обе команды работают в командном режиме.- Без
-wgrep ищет часть строки: символ/есть в каждом пути монтирования, и фильтр пропустит почти все строки.-wтребует совпадения слова целиком — остаётся только строка корневого раздела. s— substitute (подмена),/%/и//— заменить «%» на пустую строку,g— глобально: все вхождения в каждой строке.
Задание 6. Практическая работа: myfile.txt
# терминал Ubuntu/JSLinux — реализация из лекции (+ недостающий шаг)
mkdir -p /root/test3 # папка под файл (1)
df -h > /root/test3/myfile.txt # (2) вывод df — в файл
ls -a / | head -9 >> /root/test3/myfile.txt # (3) первые 9 объектов корня
cat /etc/group | tail -3 | wc -m >> /root/test3/myfile.txt # (4) символы 3 последних строк
cat /root/test3/myfile.txt # проверка
Логика: первый шаг — > (создаём файл с нуля), все «допишите» — только >>. Конвейер шага 3: ls -a / выводит все объекты корня (включая скрытые), head -9 оставляет первые девять. Шаг 4: tail -3 берёт три последние строки /etc/group, wc -m считает в них символы. Обратите внимание: на слайде лекции у четвёртой команды потерялось >> /root/test3/myfile.txt — это предполагается из полного контекста задания. В WSL для записи в /root понадобится sudo -i.
Задание 7. Конвейер по шагам
# терминал Ubuntu/JSLinux
# 1) таблица дисков
df -h
# 2) только корневой раздел (сравните с вариантом без -w!)
df -h | grep / # почти все строки — слеш есть в каждом пути
df -h | grep -w / # одна строка корня
# 3) колонка с процентом
df -h | grep -w / | awk '{print $5}' # 47%
# 4) убрать % и записать в файл
df -h | grep -w / | awk '{print $5}' | sed 's/%//g' > /tmp/df
# 5) проверка
cat /tmp/df # 47
Логика: конвейер строится постепенно — после каждого добавленного звена смотрите промежуточный результат. Это главный приём отладки пайпов: если итог неожиданный, «отрезайте» команды с конца, пока не найдёте звено, где данные испортились.