yes是一个Unix指令,会不断输出表示确定的回应(或用户指定的字串)直到程式被结束。

描述

yes先输出“y”或者任何以指令列参数形式给出的字串,再输出一个换行,并反复过程直到用户终止或程式遭终止。当作为管道接入其他指令时,程式在管道断开时结束(例如当另一程式完成执行时)。

此指令也用于测试系统处理高负载的能力,因为yes会导致单处理器系统的处理器使用率维持在100%(对于多核心系统,进程必须为每个处理器执行),故可用于调查系统的冷却系统可否在处理器负载维持在100%时运作畅顺。

使用

yes可在需要用户应答的程式输出表示确定的回应(也可以输出否定的回应,如指令“yes n”),这样就可以使需要用户交互的指令以非交互形式运行。

这用法或许今天已经过时,因为大多询问用户回应的指令都有“force”参数(如“rm -f”)或“assume-yes”参数(如Debian及其衍生系统的“apt-get -y”)

例如以下指令

   % rm -f *.txt

与以下指令

   % yes | rm *.txt

效果一样。

yes指令也常与head英语Head (Unix)指令配合用以产生大型文件供一些测试工作使用。如指令

   % yes 1234567 | head -1000 > file

可产生一份有1000行的文件,其中每行都有8字元(1,2,3,4,5,6,7与换行)。

2006年,yes指令因用于测试MacBook有否受间歇性关机问题影响而出名。在Mac OS XTerminal执行两次yes指令可将电脑CPU负载提升到最大,从而检查间歇性关机错误是否是散热问题造成。[1][2]

参考资料

  1. ^ Test for MacBook Random Shutdown Syndrome (RSS). 2006-08-29 [2012-05-09]. (原始内容存档于2014-11-13). 
  2. ^ Testing your MacBook for Random Shut Downs. the apple files. 2006-08-02 [2008-01-16]. (原始内容存档于2007-02-10). 

外部链接