Ответы на экспресс-опрос
Вопрос 1. В чём разница между > и >>?
> перенаправляет stdout в файл с полной перезаписью: старое содержимое исчезает без предупреждения. >> — дозапись: новые данные добавляются в конец, старое содержимое сохраняется. Оба оператора создают файл, если его ещё нет.
Вопрос 2. Зачем нужна переадресация ввода/вывода?
Чтобы управлять потоками программы, не меняя саму программу: сохранить результат команды в файл-отчёт (history > report.txt), накапливать журнал (date >> log.txt), подать файл на вход вместо набора с клавиатуры (wc -l < файл), отделить или собрать ошибки (2>&1). Без переадресации вывод существует только на экране и исчезает.
Вопрос 3. Сколько значков | может быть в одной строке?
Сколько угодно — синтаксис bash не ограничивает длину конвейера: cat файл | head -10 | tail -3 | wc -w. Практический предел — читаемость: каждое звено должно быть осмысленным.
Вопрос 5. Что будет, если не закрыть кавычки или скобки в конце кода?
Оболочка решит, что команда не закончена, и перейдёт в режим продолжения ввода — вместо выполнения появится вторичное приглашение >, и терминал будет «молчать», ожидая закрывающую кавычку. Выйти можно, набрав закрывающий символ, либо прервать ввод сочетанием Ctrl+C.
Вопрос 6. Как посмотреть в файл, не открывая его в текстовом редакторе?
Командой cat файл — она печатает содержимое прямо в терминал. Для больших файлов удобнее смотреть часть: head файл — начало, tail файл — конец.
Разбор домашнего задания 3
Условие (дословно со слайда, работаем в браузерной версии JSLinux):
- Создать текстовый файл
/home/user/start/1.txt, создав перед этим необходимую директорию. - Добавьте слово Start в текстовый документ, созданный ранее.
- Дописать в конец документа текущую дату, использовав date (запуск командой
date). - Скопировать получившийся документ в
/opt/task/start.txt(предварительно создаём необходимую директорию). - В документ
/opt/task/start.txtдописать последние 4 строчки из списка ВСЕХ (в том числе скрытых) объектов, лежащих в/(корневой директории).
Решение со слайда — дословно
# слайд «Решение» из презентации (как есть)
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
”Start” — при копировании в терминал они попадут в файл как обычные символы, и в 1.txt окажется ”Start” вместо Start. Используйте прямые кавычки ”Start”.
Исправленное решение с пояснениями
# терминал Ubuntu/JSLinux
mkdir -p /home/user/start # шаг 1: -p строит весь путь сразу
touch /home/user/start/1.txt # шаг 1: пустой файл
echo "Start" > /home/user/start/1.txt # шаг 2: прямые кавычки!
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: -a — скрытые объекты, tail -4 — последние 4 строки
cat /opt/task/start.txt # проверка результата
Пять типичных ошибок этого ДЗ, разобранных на сессии, — на странице «Ошибки».
Решение задания для закрепления — по шагам
# терминал Ubuntu/JSLinux
# Шаг 1: создать output.txt и записать строку (> — перезапись/создание)
echo "Hello, World!" > output.txt
# Шаг 2: дописать вторую строку (>> — дозапись)
echo "This is a practice file." >> output.txt
# Шаг 3: показать содержимое двух файлов одной командой
cat output.txt disk_space.txt
# Шаг 4: дописать третью строку
echo "This is a test line." >> output.txt
# Шаг 5: последние 3 строки output.txt → в новый файл
tail -n 3 output.txt > last_lines.txt
# Шаг 6: строки, слова, байты last_lines.txt → в файл
wc last_lines.txt > word_count.txt
# Шаг 7: содержимое /etc/passwd → в копию
cat /etc/passwd > passwd_copy.txt
# Шаг 8: сколько строк в копии
wc -l passwd_copy.txt
# Шаг 9: первые 10 строк → дописать в /home/passwd_head_tail
head -n 10 passwd_copy.txt >> /home/passwd_head_tail
# Шаг 10: последние 4 строки → дописать туда же
tail -n 4 passwd_copy.txt >> /home/passwd_head_tail
cat /home/passwd_head_tail # проверка: 14 строк
Комментарии к неочевидным шагам
- Шаг 3: файл
disk_space.txtв предыдущих шагах не создавался — на слайде он появляется «из ниоткуда». Если файла нет,catвыведет содержимоеoutput.txt, а про второй файл сообщит в stderr:cat: disk_space.txt: No such file or directory— наглядная демонстрация отдельного потока ошибок. Чтобы шаг прошёл чисто, создайте файл заранее, например:echo "disk usage report" > disk_space.txt. ⚠️ Проверить по документации: способ созданияdisk_space.txtв презентации не указан — возможно, имелся в виду файл из демонстрации преподавателя; команда выше — наше дополнение вне источника. - Шаг 5: здесь
>, а не>>:last_lines.txtсоздаётся заново, накапливать нечего. - Шаг 6:
wcбез ключей выводит сразу три числа — строки, слова, байты; формулировка «слов, строк и символов» покрывается одной командой. - Шаги 9–10: в условии написано
head 10/tail 4— без дефиса не сработает, правильноhead -n 10/tail -n 4. Оба шага пишут в один файл через>>— поэтому в/home/passwd_head_tailоказываются и «голова», и «хвост». Если бы в шаге 10 стоял>, результат шага 9 был бы стёрт. - Имя
/home/passwd_head_tail— без расширения, так в условии: для Linux расширение не обязательно, это просто часть имени.
cat output.txt должен показать 3 строки, cat last_lines.txt — те же 3 строки, wc -l /home/passwd_head_tail — число 14 (10 + 4).