да (Юникс)
![]() Пример использования yes команда, которая непрерывно печатает «Википедию», пока не будет уничтожена | |
Операционная система | Unix и Unix-подобные |
---|---|
Платформа | Кросс-платформенный |
Тип | Команда |
Лицензия | основные утилиты : GPLv3+ |
yes
— это команда в Unix и Unix-подобных операционных системах , которая выводит утвердительный ответ или определяемую пользователем строку текстовую непрерывно, пока не будет уничтожена.
Обзор
[ редактировать ]Само по себе, yes
команда выводит «y» или что-то другое, указанное в качестве аргумента, за которым следует новая строка , пока она не будет остановлена пользователем или не будет уничтожена иным образом ; при передаче в команду она будет продолжаться до тех пор, пока канал не разорвется (т. е. программа не завершит свое выполнение). Однако если пользователь вводит строку после «да», команда «да» выведет строку так же, как и «y», аналогично echo .
Версия yes
включенный в состав GNU coreutils, был написан Дэвидом Маккензи. [ 1 ]
Команда доступна как отдельный пакет для Microsoft Windows в рамках GnuWin32 . проекта [ 2 ] и коллекция UnxUtils , состоящая из собственных Win32- портов распространенных GNU Unix-подобных утилит. [ 3 ]
Использование
[ редактировать ]yes
может использоваться для отправки утвердительного (или отрицательного; например) yes n
) ответ на любую команду, которая в противном случае запросила бы ее, тем самым заставляя команду выполняться в неинтерактивном режиме.
Если ответить «да» на команду со многими запросами подтверждения пользователя, на все эти запросы автоматически будет получен ответ «да» (ввод «y» и нажатие клавиши «Return»).
Следующие команды
$ yes | sudo apt install foobar
ответит на запросы о подтверждении с помощью y, эффективно устанавливая foobar с помощью sudo apt без каких-либо запросов.
Сегодня это использование может устареть, поскольку большинство команд, которые запрашивают ответ от пользователя, имеют либо опцию «принудительного» (например, rm -f
) или вариант «предполагать-да» (например, apt -y
).
В качестве примера можно привести следующее:
$ rm -f *.txt
функционально эквивалентен
$ yes | rm *.txt
The yes
Команда в сочетании с командой head может использоваться для создания файлов большого объема для целей тестирования. Например, выполнение
$ yes 1234567 | head -n1000 > file
в результате получается файл, состоящий из 1000 строк, каждая из которых состоит из восьми символов (1, 2, 3, 4, 5, 6, 7 и новой строки).
yes
может использоваться как простой способ создания нагрузки на процессор. В 2006 году, например, yes
пользователя Команда получила известность как средство проверки того, подвержен ли MacBook ошибке «Синдром прерывистого выключения», когда MacBook произвольно отключается без какого-либо вмешательства пользователя. Запустив yes
дважды выполнить команду на неопределенный срок через терминал под Mac OS X , пользователи могли максимально загрузить процессор своего компьютера и, таким образом, проверить, не связан ли сбой с перегревом. [ 4 ] [ 5 ]
Реализация и производительность
[ редактировать ]Осуществление yes
в различных Unix и Unix-подобных системах последовательно реализовывался с помощью простого цикла while. Реализация проекта GNU yes
была намного быстрее, чем любая другая реализация, что достигалось за счет буферизации вывода, что приводило к большему количеству вывода на один системный вызов. [ 6 ] [ 7 ] Реализация GNU могла быть другой, чтобы избежать нарушения авторских прав Unix. Проект FreeBSD изменил свою реализацию в 2017 году, чтобы она соответствовала реализации GNU. [ 8 ]
Ссылки
[ редактировать ]- ^ Linux пользователя по командам Руководство –
- ^ CoreUtils для Windows
- ^ Собственные порты Win32 некоторых утилит GNU.
- ^ «Тестирование синдрома случайного выключения MacBook (RSS)» . ЗДНет . 29 августа 2006 г. Архивировано из оригинала 5 июня 2010 года . Проверено 9 мая 2012 г.
- ^ «Проверка MacBook на случайные отключения» . файлы Apple . 2 августа 2006 г. Архивировано из оригинала 10 февраля 2007 г. Проверено 16 января 2008 г.
- ^ Эндлер, Матиас (10 октября 2017 г.). «Небольшая история о команде «да» в Unix» . Эндлер.dev . Архивировано из оригинала 25 января 2022 г.
- ^ kjensenxz (13 июня 2017 г.). «r/unix — Как GNU «да» работает так быстро?» . Реддит . Архивировано из оригинала 30 октября 2021 г.
- ^ Гар (13 июня 2017 г.). «Улучшить пропускную способность «да» (фиксация) . гитхаб .
Дальнейшее чтение
[ редактировать ]- Монфор, Ник (январь 2012 г.). Тривиальная программа «да» (PDF) (Технический отчет). Кембридж, Массачусетс: Тропический танк. 12-01 . Проверено 8 февраля 2022 г.
Внешние ссылки
[ редактировать ]- Страница руководства для
yes
( GNU ) версия - GNU coreutils yes.c Реализация
- FreeBSD реализация да.c
- NetBSD реализация да.c
- OpenBSD реализация да.c