yes (Unix)
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指令配合用以产生大型文件供一些测试工作使用。如指令
% yes 1234567 | head -1000 > file
可产生一份有1000行的文件,其中每行都有8字元(1,2,3,4,5,6,7与换行)。
2006年,yes指令因用于测试MacBook有否受间歇性关机问题影响而出名。在Mac OS X的Terminal执行两次yes指令可将電腦CPU负载提升到最大,從而检查间歇性关机错误是否是散热问题造成。[1][2]
参考资料
- ^ Test for MacBook Random Shutdown Syndrome (RSS). 2006-08-29 [2012-05-09]. (原始内容存档于2014-11-13).
- ^ Testing your MacBook for Random Shut Downs. the apple files. 2006-08-02 [2008-01-16]. (原始内容存档于2007-02-10).