每天一个Linux命令yes

yes命令简介

yes命令在被kill之前重复输出指定的字符串.
语法格式有两种:
1. yes
2. yes [STRING]
第一种格式yes后不跟具体的字符串,此时该命令向终端重复输出y字符
第二种格式将指定的字符串重复的向终端输出。如使用命令yes 'hello,world'将重复的向终端输出hello,world字符串。

yes命令的具体实现

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

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

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

    return 0;

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的管道知识)。

阅读更多
换一批

没有更多推荐了,返回首页