yes 命令详解
更新时间:2026-08-28。本文是「一个命令一个文档」系列,属于文本处理命令族(见文本处理命令族)。它干的事很傻:不停地喊"y"(或你给的词)。
yes 向 stdout 无限循环输出同一行(默认就是 y),直到被杀。看起来无聊,却是"自动回答交互提示"和"烤机压测"的小工具。
一、基本用法
bash
yes # 无限输出 y(每行一个)
yes no # 无限输出 no
yes "continue?" # 无限输出指定字符串不加参数默认输出
y并回车。它会一直跑直到管道另一端关闭或你 Ctrl-C。
二、自动确认交互
bash
yes | rm -r dirty_dir # 自动对所有 rm 提示答 y(危险!)
yes | apt-get install xxx # 对安装提问全答 yes经典场景:老式交互命令一堆
y/n确认,yes |一股脑答 yes 让它跑完。但对rm -i之类用 yes 自动确认极其危险——等于关掉保护。能用-y/--yes参数就别用 yes 硬灌。
三、CPU 压力测试
bash
yes > /dev/null & # 一个核跑满(空转输出被丢弃)
yes > /dev/null & # 多开几个占满多核,测散热/稳定性
yes是单线程纯计算(生成字符串+写管道),能轻松把一个核跑满。运维烤机、测散热时常开几个yes > /dev/null &拉高负载观察。记得用完 kill 掉。
四、与 printf 循环区别
bash
yes | head -n 5 # 只要 5 行(head 关闭管道,yes 自动退出)
# 等价于:for i in $(seq 5); do echo y; done
yes | head -n N是"要 N 个 y"的简洁写法,head 关掉管道后 yes 自然退出,不会真无限跑。比手写 for 循环短。
相关命令
一句话总结
yes = 无限重复输出(默认 y):yes string 自定义内容;yes | cmd 自动答交互确认(对 rm -i 等极危险,优先用命令自带 -y 参数);yes > /dev/null & 单核跑满可烤机压测;yes | head -n N 取 N 行(head 关管道后自动退出,比 for 循环短)。