У yes
unix / linux є команда, яка в основному нескінченно друкує y
на stdout
. Який сенс у цьому, і чим він корисний?
У yes
unix / linux є команда, яка в основному нескінченно друкує y
на stdout
. Який сенс у цьому, і чим він корисний?
Відповіді:
так, можна використовувати для надсилання позитивної (або негативної; наприклад, так n) відповіді на будь-яку команду, яка в іншому випадку запитає її, тим самим змушуючи команду виконуватись неінтерактивно.
Команда так у поєднанні з головною командою може використовуватися для генерації файлів великого обсягу для засобів тестування.
Він також може бути використаний для перевірки того, наскільки добре система справляється з високими навантаженнями, оскільки використання так призводить до 100% використання процесора для систем з одним процесором (для багатопроцесорної системи процес повинен бути запущений для кожного процесора). Наприклад, це може бути корисно для дослідження, чи буде система охолодження системи ефективною, коли процесор працює на 100%.
У 2006 році команда так отримала оприлюднення за те, що вона є засобом перевірити, чи впливає на MacBook користувача синдром переривчастого відключення. Запустивши команду "Так" двічі через термінал під Mac OS X, користувачі змогли збільшити максимальний процесор свого комп'ютера, і таким чином побачити, чи невдача пов'язана з нагріванням
через wikipedia: 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, якщо = / dev / zero of = / dev / sdd bs = 1M) і використовував для цього "так":
yes UUUUUUUUUUUUU > /dev/sdd
Співробітник використовував це по-новому для введення пароля
yes password | passwd
passwd
спочатку запитає старий пароль, якщо користувач не має root або суперпользователь і не продовжить, якщо не буде введено правильний пароль. Отже, або користувач має root, або password
старий пароль також нічого не змінюється.
ps
або top
в потрібний момент).