Выбор ответа Middle Потоки и пайпы обновлено
sort f > f
Вопрос
Что станет с файлом names.txt после sort names.txt > names.txt?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Станет пустым: shell обнуляет файл до запуска sort. Перенаправление открывает файл с усечением до старта sort, и sort читает уже пустой файл.
Варианты ответа
- Отсортируется на месте:
sortсначала читает файл целиком - Shell откажется выполнять команду с одним файлом на вход и выход
- Строки задвоятся: вывод допишется к исходному содержимому
- Станет пустым: shell обнуляет файл до запуска
sortправильный ответ
Разбор
Перенаправление > открывает файл с усечением до старта sort, и sort читает уже пустой файл. Для сортировки на месте у sort есть -o names.txt (он читает всё до записи), в общем случае помогает sponge из moreutils или временный файл. Bash сам не защищает от этого, если не включён noclobber, а тот защищает только от перезаписи существующего файла.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.