В yes
unix / linux есть команда, которая в основном бесконечно печатает y
в stdout
. В чем смысл и как это полезно?
В yes
unix / linux есть команда, которая в основном бесконечно печатает y
в stdout
. В чем смысл и как это полезно?
Ответы:
yes может использоваться для отправки утвердительного (или отрицательного; например, yes n) ответа на любую команду, которая в противном случае запросила бы ее, в результате чего команда запускалась неинтерактивно.
Команду yes вместе с командой head можно использовать для создания файлов большого объема для средств тестирования.
Его также можно использовать для проверки того, насколько хорошо система справляется с высокими нагрузками, поскольку использование yes приводит к 100% использованию процессора для систем с одним процессором (для многопроцессорной системы процесс должен выполняться для каждого процессора). Это, например, может быть полезно для изучения эффективности системы охлаждения системы, когда процессор работает на 100%.
В 2006 году команда yes получила огласку как средство проверки того, не подвержен ли пользовательский MacBook синдромом прерывистого отключения или нет. Запустив команду yes дважды через Терминал под Mac OS X, пользователи смогли максимально использовать центральный процессор своего компьютера и таким образом увидеть, был ли сбой связан с перегревом
через википедию: http://en.wikipedia.org/wiki/Yes_(Unix)
yes `yes yes`
Это может быть спорным мнением, но, на мой взгляд, это ужасное исправление плохого пользовательского интерфейса в инструментах командной строки .
Некоторые инструменты командной строки задают вопросы пользователю с подсказкой и не имеют возможности работать не в интерактивном режиме; представьте, например, что-то вроде
$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Поскольку ответ на вопрос взят из стандартного ввода, быстрое решение этой проблемы - приложение, которое выводит строку y\n
непрерывно, что и yes
делает. Unix трубы могут быть использованы для отправки этого вывода в качестве входных данных для данной команды.
$ yes | frobnicate
Одна из проблем этого подхода заключается в том, что у yes
него нет возможности проверить вопрос, на который он отвечает:
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
format device /dev/sda1? (y/n) y
frobnicate file c.txt? (y/n) y
Лучшим решением, если оно доступно, является конкретный вариант для запуска в неинтерактивном режиме, например, rm -f
или apt-get -y
. Это позволяет кодировать более разумное поведение в приложении.
Просто наткнулся на другое использование: любил стирать жесткий диск с другим шаблоном, отличным от нуля (вроде:), dd if=/dev/zero of=/dev/sdd bs=1M
и использовал для этого « да »:
yes UUUUUUUUUUUUU > /dev/sdd
U
s, но с UUUUUUUUUUUUU\n
s. Чтобы заполнить U
с, вам нужно yes '' | tr '\n' U > /dev/sdd
илиtr '\0' U < /dev/zero > /dev/sdd
Коллега использовал это по-новому для ввода пароля
yes password | passwd
passwd
сначала запросит старый пароль, если пользователь не является пользователем root или суперпользователем, и не продолжит работу, пока не будет введен правильный пароль. Так что либо пользователь root, либо password
старый пароль, и ничего не изменилось.
ps
или top
в нужный момент).