yes是Linux系统中用来重复输出指定字符串的命令。如果没有指定字符串,它将不断输出默认的字符串y
。用途有很多,我能用到的记录如下:
1. 输出默认的y
[linux@BK-machine ~]$ yes
y
y
y
...
这个命令会不断输出字母y
,需要使用Ctrl +C 来终止它。
2. 输出自定义字符串
[linux@BK-machine ~]$ yes It is a happy day.
It is a happy day.
...
# 限定输出次数
[linux@BK-machine ~]$ yes It is a happy day. | head -n 5
It is a happy day.
It is a happy day.
It is a happy day.
It is a happy day.
It is a happy day.
3. 配合其他命令使用
主要是在自动化脚本中对需要连续确认的命令进行应答,例如,在安装一些软件包时自动回答“yes”来确认所有的提示。
[linux@BK-machine ~]$ yes |yum install 软件包名
这个命令会自动向yum install
提供y
作为响应,使得安装过程无需人工干预。
或编译软件时同意所有配置选项
[linux@BK-machine ~]$ yes |./configure
在这个例子中,yes
会为./configure
脚本提供必要的y
响应,自动化整个配置过程。
在使用
yes
命令配合其他需要交互的命令时,一定要确保理解自动化响应的后果,因为它会无条件第接受所有的提示。
4. 自动化删除操作
[linux@BK-machine ~]$ yes y | rm -i *.txt
谨慎操作,避免造成无法挽回的数据损失。
[linux@BK-machine ~]$ yes n | rm -i *.txt
rm -r
命令会询问用户是否确认删除每个文件,yes n
会输出无限个n,这样就会自动回答不删除。
5.自动创建一个大测试文件
[linux@BK-machine ~]$ yes This is a test > test.txt
但避免输出文件太大,直至磁盘空间耗尽或者进程被杀死。如操作,一般限定行数如
[linux@BK-machine ~]$ yes This is a test |head -n 2000 > test.txt
6.测试系统如何处理密集型进程,yes作为简单的进程占用器
[linux@BK-machine ~]$ yes > /dev/null &
这个命令会在后台运行yes命令,并将所有输出重定向到/dev/null(一个黑洞,吃掉所有送到它的数据),这样可以让yes运行而不占用控制台,同时也不会实际占用磁盘空间,只消耗CPU资源。
将
yes > /dev/null &
放置到后台运行,但不要忘记它正在运行,这样的进程会持续消耗CPU资源,如果未监测可能会导致系统负载过高。可以使用jobs
命令查看后台任务,必要时使用kill PID号
命令终止后台任务。
参考及感谢:[Linux yes命令教程:自动化终端操作利器(附实例详解和注意事项)-Linux入门自学网 (bashcommandnotfound.cn)]