Який сенс команди "так"?


39

У yesunix / linux є команда, яка в основному нескінченно друкує yна stdout. Який сенс у цьому, і чим він корисний?


Кілька додаткових можливостей тут .

1
можливий дублікат Що в цьому полягає команда `так`? ... (Позначаючи це як дублікат, тому що краще поставити питання та відповісти на інше нове запитання).
Aditya


Відповіді:


41

так, можна використовувати для надсилання позитивної (або негативної; наприклад, так n) відповіді на будь-яку команду, яка в іншому випадку запитає її, тим самим змушуючи команду виконуватись неінтерактивно.

Команда так у поєднанні з головною командою може використовуватися для генерації файлів великого обсягу для засобів тестування.

Він також може бути використаний для перевірки того, наскільки добре система справляється з високими навантаженнями, оскільки використання так призводить до 100% використання процесора для систем з одним процесором (для багатопроцесорної системи процес повинен бути запущений для кожного процесора). Наприклад, це може бути корисно для дослідження, чи буде система охолодження системи ефективною, коли процесор працює на 100%.

У 2006 році команда так отримала оприлюднення за те, що вона є засобом перевірити, чи впливає на MacBook користувача синдром переривчастого відключення. Запустивши команду "Так" двічі через термінал під Mac OS X, користувачі змогли збільшити максимальний процесор свого комп'ютера, і таким чином побачити, чи невдача пов'язана з нагріванням

через wikipedia: http://en.wikipedia.org/wiki/Yes_(Unix)


9
Щоб отримати додаткові збитки, спробуйтеyes `yes yes`
надішлітьінфо


О, це хороший стрес-тест. просто спробував, потім побіг до колеги з проханням про новий vm xD
Toastgeraet

17

Це може бути суперечливою думкою, але, на мій погляд, це некрасиве виправлення поганого користувальницького інтерфейсу в інструментах командного рядка .

Деякі інструменти командного рядка задають запитання користувачеві із запитом і не мають можливості запускати неінтерактивно; уявіть, наприклад, щось таке

$ 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. Це дозволяє кодувати більш розумну поведінку в додатку.


1
Я прочитав усі інші відповіді. Я згоден з вашими повністю WRT потворних виправити ... хоча це дійсно є дійсне використання для тестування реакції комп'ютера на високі навантаження на процесорі.
Wildcard

6
Звичайно, ви можете скористатися фірмовим програмним забезпеченням "Microsoft Windows" для перевірки реакції комп'ютера на високі навантаження на процесор, але "так" є відкритим кодом.
Wildcard

1
Це одне з найкрасивіших потворних виправлень
Jezzamon

4

Мені подобається використовувати, yesколи я розпаковую кілька файлів .zip, які містять один і той же файл з тим же ім'ям, і мене запитують, що робити у кожному конкретному випадку (наприклад, ліцензійний договір).

yes | for z in *.zip; do unzip "$z"; done 

2

Просто натрапив на інше використання для цього: любив видаляти жорсткий диск з іншим малюнком, ніж просто нулі (наприклад: dd, якщо = / dev / zero of = / dev / sdd bs = 1M) і використовував для цього "так":

yes UUUUUUUUUUUUU > /dev/sdd


1

Співробітник використовував це по-новому для введення пароля

yes password | passwd

passwdспочатку запитає старий пароль, якщо користувач не має root або суперпользователь і не продовжить, якщо не буде введено правильний пароль. Отже, або користувач має root, або passwordстарий пароль також нічого не змінюється.
Михайло Коньєтка

@MichaelKonietzka справді. Але з умовами, про які ви згадали, це все-таки корисний варіант використання.
frogstarr78

3
За винятком того, що історія зберігатиметься в простому тексті. Crazeyyy.
Глено

3
@Gleno в Баш, ви можете поставити перед ним простір , щоб запобігти його від записуваного (як в stackoverflow.com/q/640403/118153 )
Iiridayn

2
Крім того, це пропускає пароль для всіх місцевих користувачів у списку процесів ( psабо topв потрібний момент).
Федеріко Полоні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.