天天看点

每天一个Linux命令yes

    • yes命令简介
    • yes命令的具体实现
    • yes命令的具体使用
    • 问题思考

yes命令简介

yes命令在被kill之前重复输出指定的字符串.

语法格式有两种:

1. yes

2. yes [STRING]

第一种格式yes后不跟具体的字符串,此时该命令向终端重复输出

y

字符

第二种格式将指定的字符串重复的向终端输出。如使用命令

yes 'hello,world'

将重复的向终端输出

hello,world

字符串。

yes命令的具体实现

if (argc >=  && *argv[] == '-')
        show_usage();

    if (argc == ) {
        while ()
            if (puts("y") == EOF) {
                perror("yes");
                return ;
            }
    }

    while ()
        for (i = ; i < argc; i++)
            if (fputs(argv[i], stdout) == EOF || putchar(i == argc -  ? '\n' : ' ') == EOF) {
                perror("yes");
                return ;
            }

    return ;
           

yes命令的具体使用

1. 如果我们希望生成一个大文件,可以使用yes命令进行快速生成。如:

yes 'generate big file'>>testfile

2. 和某些需要应答命令进行搭配使用。如:

yes|rm -i testfile

问题思考

之前在介绍

kill

命令的时候说过,yes命令会一直重复输出字符串直到被kill掉。但

yes|rm -i testfile

并没有主动kill掉yes,那为什么这行命令执行后yes命令会关闭?(提示:可以查看shell的作业管理以及linux的管道知识)。

继续阅读