Команда yes в Linux используется для того, чтобы направить в стандартный поток вывода (stdout) символ y (или любой другой символ, который будет указан после нее). Кстати, если вы еще не читали материал про ввод/вывод и их перенаправление в Linux, то самое время сделать это.
Получается, если в терминале ввести команду:
yes no
То консоль заполнится множеством выводов слова no, пока вы не остановите это безобразие сочетанием клавиш Ctrl + C. Как это дело применять на практике? Возьмем, к примеру, сервера, на которых установлена BitrixENV - это оболочка, которая упрощает установку, настройку и обслуживание порталов на CMS Bitrix. Если на сервере, где установлен BitrixENV ввести команду на удаление файла, то вас обязательно спросят о том, уверены ли вы в своих действия, попросив ввести y. Понимаете, теперь, как можно использовать команду yes? Представим, что вам нужно удалить несколько сотен файлов. Будете на каждый вводить y в консоль? Неее, намного удобнее будет использовать команду yes:
yes | rm *.log
В результате все файлы с расширением log будут удалены без дополнительных телодвижений с вашей стороны. Удобно? Ну еще бы! Ну а что если нужно, например, имитировать нажатие клавиши Enter? Команда yes и тут поможет:
yes "" | <команда>
Казалось бы, в приведенной выше команде мы ничего не передаем и даже слово Enter не написали, почему же должно сработать? Все потому, что суть работы yes состоит в том, чтобы не просто вывести y, она добавляет ее переносом строки (каретки, как бы выразились олды), то бишь, имитирует нажатие Enter. Поэтому в кавычках ничего нет.
Естественно, больший простор для использования yes открывается при написании BASH-скриптов, поэтому команду стоит запомнить и использовать в случае необходимости.
Как думаете, если есть команда yes, то будет ли в Linux команда no, которая дает отрицательный ответ на запросы консоли? Свои идеи на сей счет оставляйте в комментариях 💬