“是”命令的意义是什么?

Cem*_*mre 46 command yes

yes在 unix/linux 中有一个命令,它基本上无限地打印ystdout. 它有什么意义,它有什么用?

小智 48

yes 可用于向任何命令发送肯定(或否定;例如 yes n)响应,否则会请求一个命令,从而导致命令以非交互方式运行。

yes 命令与 head 命令结合使用,可用于生成大容量文件以供测试。

它还可用于测试系统处理高负载的情况,因为对于具有单处理器的系统(对于多处理器系统,必须为每个处理器运行一个进程),使用 yes 会导致 100% 的处理器使用率。例如,这对于调查系统的冷却系统在处理器以 100% 运行时是否有效很有用。

2006 年,yes 命令作为一种测试用户的 MacBook 是否受到间歇性关机综合症影响的方法而广为人知。通过在 Mac OS X 下通过终端运行两次 yes 命令,用户能够最大化他们计算机的 CPU,从而查看故障是否与热量有关

通过维基百科:http : //en.wikipedia.org/wiki/Yes_(Unix)

  • 对于额外的伤害,请尝试 `yes \`yes yes\`` (12认同)
  • @sendmoreinfo [邪恶](http://unix.stackexchange.com/questions/100647/what-does-yes-yes-yes-do) (3认同)

Fed*_*oni 20

这可能是一个有争议的意见,但在我看来,这是对命令行工具中不良用户界面的丑陋修复

一些命令行工具通过提示向用户提问,并且没有非交互式运行的选项;想象一下,例如

$ frobnicate *
frobnicate file a.txt? (y/n) y
frobnicate file b.txt? (y/n) y
...
Run Code Online (Sandbox Code Playgroud)

由于问题的答案来自标准输入,因此快速解决此问题的方法是使用一个y\n连续输出字符串的应用程序,而这正是yes它所做的。Unix管道可用于将此输出作为给定命令的输入发送。

$ yes | frobnicate
Run Code Online (Sandbox Code Playgroud)

这种方法的问题之一是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
Run Code Online (Sandbox Code Playgroud)

更好的解决方案(如果可用)是非交互式运行的特定选项,例如rm -fapt-get -y。这允许在应用程序中编写更明智的行为。

  • 当然,您可以使用专有软件“Microsoft Windows”来测试计算机对高 CPU 负载的响应,但“是”是开源的。 (10认同)
  • 虽然这是最美丽的丑陋修复之一 (2认同)

小智 5

我喜欢yes在解压缩多个 .zip 文件时使用,这些文件都包含同名的同一个文件,我被问到在每种情况下该怎么做(例如许可协议)。

yes | for z in *.zip; do unzip "$z"; done 
Run Code Online (Sandbox Code Playgroud)