zoukankan      html  css  js  c++  java
  • Pipeline 与 xargs

    Pipeline 与 xargs

    Pipeline与命令行參数

    应用程序接收输入的两种方式:

    • 命令行參数

    输入字符串被当成參数,通过int main(int argc, char **argv), 中的argv传入。或使用

    以下API获取,再自己分析:

    LPTSTR WINAPI GetCommandLine(void); 
    • Pipeline

    指示输入内容存放在标准输入上。标准输入能够理解成一个文件,通常是字符界面终端。

    也能够是一个暂时文件。

    Pipeline

    stdin,stdout 与 stderr

    普通情况下,stdin, stdout与stderr都指向屏幕输入,即字符界面终端。但在使用管道时,

    stdin与stdout并不指向终端。比如:

    program1 | program2 

    program1的标准输出会作为program2的标准输入,整个过程不经过终端,因此在屏幕上看

    不到program1的输出。

    仅仅有stderr一直指向终端。

    因此假设想保证输出到终端。就要使用stderr。

    读取来自Pipeline的输入

    读取来自于管道的输入,事实上就是读取标准输入。

    以下代码回显Pipeline输入:

    int main (int argc, char **argv)
    {
        char buffer[64];
        int nActualRead = 0;
    
        while ( true )
        {
            nActualRead = fread( buffer, 1, 64-1, stdin );
    
            if ( nActualRead > 0 )
            {
                buffer[nActualRead] = ''; 
    
                // Using stderr to make sure alway output to terminal.
                fprintf( stderr, "%s", buffer ); 
            }
            else
            {
                break;
            }
        }
    
        return 0;
    }

    xargs

    xargs的功能是将输入内容拆分成若干记号,再作为下一个程序的命令行參数。

    xargs的通经常使使用方法是:

    program1 | xargs program2

    如:

    ls | xargs wc 
    
         29      82    1834 0059441.html
         37      83    1685 0059441.md
         66     165    3519 total

    xargs分析来自于ls的输入,组合成命令行參数,传给wc并运行。

    查看xargs分析组合后的结果:

    ls | xargs 
    0059441.html 0059441.md

    即。ls | xargs wc 相当于运行 wc 0059441.html 0059441.md

    vim -

    指示Vim接收管道的形式为 vim -
    如:

    ls | vim -

    Vim将读取ls的输出,并当作其的缓冲内容。

    须要说明的是,”vim -“是Vim自己定义的形式,

    在其他命令中”-“并不能代表标准输入。

  • 相关阅读:
    十五、MySQL DELETE 语句
    十三、MySQL WHERE 子句
    十四、MySQL UPDATE 查询
    十一、MySQL 插入数据
    十二、MySQL 查询数据
    十、MySQL 删除数据表
    九、MySQL 创建数据表
    八、MySQL 数据类型
    七、MySQL 选择数据库
    六、MySQL 删除数据库
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7388121.html
Copyright © 2011-2022 走看看