Linux之yes命令你不知道的用法

很多人可能没听说过yes这个命令。当你执行这个命令的时候,终端就会不断输出y,直到你手动终止(Ctrl+C):

~$ yes
y
y
y
y
y
...

它的用法是:

~$ yes --help
用法:
yes [STRING]...
或:
yes OPTION

描述:
重复输出一行,包含所有指定的字符串,或者默认输出 'y'。

选项:


--help:显示此帮助信息并退出。
--version:输出版本信息并退出。

更多信息:


GNU coreutils 在线帮助:https://www.gnu.org/software/coreutils/
翻译相关问题反馈:https://translationproject.org/team/
完整文档:https://www.gnu.org/software/coreutils/yes
或者通过本地命令查看:info '(coreutils) yes invocation'
(yes命令帮助文档翻译) 那么,这个命令到底是干什么的呢? 其实这个命令并非没有用,相反它有很多用处。

一 自动回答

是不是遇到过这样的情况:你在升级包管理器或者下载某个包的时候,你去干别的事情了,正好到了确认是否升级(或安装某个包)的环节,然后就卡在那里不动了。这样很浪费时间。但是你可以通过yes命令结合包管理器来使用:
yes | apt update && apt upgrade #这里是举例子,假设您使用的是apt

这个命令的意思是,在升级包管理器的时候,yes命令通过管道(|)把输出(y)重定向到了升级包管理器的命令里,这样每当包管理器提示是否进行下一步时都会接收到yes命令的输出,就进行下一步。

二 生成大文件或大量生成文件。

你可以使用yes命令生成大文件,有两种方式: 手动终止:
$ yes "content" >> largefile.txt
这个命令会把”content”无限次的追加到largefile.txt,直到手动终止(Ctrl+C)。 指定大小:
yes "" | head -c 1G > largefile.txt
这个命令会生成1G的空文件。
yes | head -n 100 | xargs -I{} touch file{}
这个命令会生成100个文件。文件名为file1、file2、file3等。

三 测试系统负载

你可以使用yes命令来测试系统负载。在终端中输入yes,然后你可以使用top或者htop来查看系统在高负载情况下的表现。 或者你可以使用tmux来配合测试: 首先输入tmux,然后Ctrl+b再按下"水平分割屏幕,在下面的窗口执行yes,然后Ctrl+b再按一下Alt再按一下(上键)切换到上面的窗口,输入top观察系统负载情况。

总而言之,yes命令是一个自动化脚本中非常实用的命令。你可以通过和其他命令结合使脚本更灵活。

评论