Гид по технологиям

Команда yes в терминале — что она делает и как её безопасно использовать

4 min read Терминал Обновлено 19 Nov 2025
Команда yes в терминале — как и когда использовать
Команда yes в терминале — как и когда использовать

Иллюстрация терминала и командной строки

Быстрые ссылки

  • Что делает yes?

  • Когда использовать yes?

  • Как заменить yes безопасно

Команда

yes

появилась в BSD 4.0 и по сей день входит в состав Unix-подобных систем, таких как macOS и Linux. Это простая утилита с понятным поведением, но её применение требует внимательности.

Что делает yes?

Запуск без аргументов:

yes

будет бесконечно печатать букву «y», каждую строку новой, отправляя вывод в стандартный вывод. Это непрерывный процесс, который быстро загружает CPU до ~100% на одном потоке и не завершится, пока вы его не остановите (Ctrl+C) или не убьёте процесс.

Команда полезна в паре с пайпами. Частый шаблон:

yes | <команда>

В этом случае yes подаёт символы в stdin команды справа от пайпа, автоматически отвечая “y” на все запросы подтверждения. Пример:

yes | fsck /dev/sdX

вместо того, чтобы вручную подтверждать каждое исправление ошибок в файловой системе.

Важно: yes по умолчанию выдаёт строку “y” с переводом строки. Вы можете указать другой текст:

yes n  # будет печатать "n" постоянно

или

yes ""

для отправки пустых строк.

Команда yes в окне Терминала macOS

Когда использовать yes?

Используйте yes, когда:

  • нужно автоматически подтвердить серию однотипных запросов у команды, которая ожидает ввода пользователя;
  • вы запускаете сценарий обслуживания и заранее уверены в безопасности операций;
  • вы хотите быстро создать нагрузку на CPU для тестирования охлаждения или мониторинга.

Не используйте yes, когда:

  • команда выполняет удаление или изменение данных без дополнительной проверки;
  • вы не уверены в последствиях массового подтверждения;
  • команда поддерживает флаг для немедленного подтверждения (см. раздел альтернатив).

Пример: автоподтверждение удаления (ОПАСНО)

Вместо ручного ответа на множество запросов rm -r некоторые пользователи запускают:

yes | rm -r папка

Это даст автоматическое “y” на все запросы. Однако это опасно: rm и подобные утилиты часто имеют флаги, которые безопаснее использовать:

rm -rf папка  # комбинация: рекурсивно и без подтверждений

Гораздо лучше заранее понять поведение команды и использовать официальные флаги.

Альтернативы и лучшие практики

  • Ищите флаги автоматического подтверждения у целевой команды: --yes, -y, -f и т. п. Они обычно безопаснее и понятнее.
  • Для интерактивных скриптов используйте инструмент expect для контролируемого диалога с программой.
  • Для массовых изменений сначала протестируйте команду на копии данных или в изолированной среде.
  • Логируйте вывод при массовых операциях: перенаправьте stdout/stderr в файл, чтобы иметь запись.

Примеры:

apt-get -y upgrade    # Debian/Ubuntu: флаг -y
pacman --noconfirm -Syu  # Arch: флаг --noconfirm

Когда yes не работает или вводит в заблуждение

  • Если команда не читает stdin, пайп с yes не поможет.
  • Некоторые программы делают валидацию ответа, ожидая конкретные строки — в этом случае простой “y” может быть недостаточен.
  • Интерактивные утилиты с графическим интерфейсом не получат ответы через stdin.

Методика для безопасного применения

  1. Прочитайте manual: man <команда>.
  2. Попробуйте команду в тестовой папке.
  3. Найдите флаги для бездиалоговой работы.
  4. Если используете yes, укажите точный ответ: yes "y" | команда.
  5. Логируйте результат: yes | команда > /tmp/log 2>&1.
  6. После запуска следите за нагрузкой и завершите при отклонениях.

Рольовые чек-листы

Для системного администратора:

  • Проверить бэкапы перед массовыми изменениями.
  • Использовать флаги без подтверждения, если они существуют.
  • Ограничить доступ к скриптам, использующим yes.

Для разработчика/автотеста:

  • Использовать expect или библиотеки для автоматизации ввода.
  • Тестировать сценарии на контейнерах или виртуальных машинах.

Для тестировщика нагрузки:

  • Применять yes на тестовой машине, а не в проде.
  • Отслеживать метрики CPU/температуры и таймауты.

Быстрая проверка и отладка

Остановить процесс: нажмите Ctrl+C в окне терминала или найдите PID и завершите:

ps aux | grep '^yes'  # найти процесс (пример)
kill 

Используйте Activity Monitor или top/htop для контроля нагрузки.

Ментальные модели и эвристики

  • Если операция изменяет данные — относись к автоматическому подтверждению как к потенциально опасному действию.
  • Предпочитай встроенные флаги команды -y/--yes/--force перед yes.
  • Для нагрузки на CPU yes эквивалентен запуску нескольких простых бесконечных циклов, это быстрый, но грубый тест.

Критерии приёмки

  • Операция выполняется без ручного ввода и без нежелательных побочных эффектов.
  • Логи операции сохраняются и проверены.
  • При необходимости есть откатный план (бэкапы, снимки).

Краткое руководство по безопасности

  • Никогда не запускайте yes | с командами, которые вы не полностью понимаете.
  • Всегда проверяйте, можно ли использовать флаг для немедленного подтверждения.
  • Выполняйте пробную прогонку на изолированной среде.

Сводка

Команда yes полезна для автоматизации однотипных подтверждений и для генерации нагрузки, но она не заменяет понимание целевой команды и её флагов. Применяйте её только после тестирования и при наличии плана отката.

Краткий глоссарий:

  • stdin — стандартный ввод; место, откуда программа читает данные.
  • stdout — стандартный вывод; место, куда программа пишет результаты.
  • pipe (|) — перенаправление вывода одной команды во вход другой.
flowchart TD
  A[Нужна автоматизация подтверждений?] -->|Да| B{Команда имеет флаг авто-подтверждения?}
  B -->|Да| C[Использовать флаг '-y/--yes/--force']
  B -->|Нет| D{Команда читает stdin?}
  D -->|Да| E[Использовать yes | команда]
  D -->|Нет| F[Использовать expect или тестовый скрипт]
  A -->|Нет| G[Ручная работа — не автоматизировать]
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Dynamic Theme — обои Bing и Windows Spotlight
Windows

Dynamic Theme — обои Bing и Windows Spotlight

Как удалить историю Bing AI Chat
Конфиденциальность

Как удалить историю Bing AI Chat

2FA в Vivaldi: как включить и настроить
Безопасность

2FA в Vivaldi: как включить и настроить

Bing AI в Edge: руководство по панели
Руководство

Bing AI в Edge: руководство по панели

Vivaldi 6.0: рабочие пространства и кастомные иконки
Браузеры

Vivaldi 6.0: рабочие пространства и кастомные иконки

Bing AI в SwiftKey на Android — как включить и использовать
Приложения

Bing AI в SwiftKey на Android — как включить и использовать