zoukankan      html  css  js  c++  java
  • linux数据流重定向

    通常情况下,我们由键盘输入数据,计算机通过屏幕显示输出,然而有时我们并不想通过键盘输入和屏幕输出,为了解决这个问题,就引入数据流重定向的概念。

    1 标准输入:代码为0,使用<或<<

    2 标准输出:代码为1 ,使用>或>>

    3 标准错误输出:代码为2,使用2>或2>>(注解:为与标准输出>和>>区分,所以需要加入2)

    这里以ls举例,相信大家对ls命令非常熟悉,用来显示目录的内容,现在假定当前目录为用户主文件夹,在终端输入以下指令(输入:),会在屏幕显示(输出)

    输入:ls
    输出:bin opt 模板 图片 下载 桌面 公共的 视频  文档  音乐

    现在我们想让输出的内容输出到test.txt中,而不是屏幕上,则需要标准输出>或>>

    ls > ./test.txt
    

    可以显示test.txt的数据

    cat test.txt
    

    我们会发现ls的输出已经输出到test.txt中。

    这次我们使用>>来重复一次命令

    ls >> ./test.txt
    

    再次显示test.txt的内容

    cat test.txt
    

    我们会发现两次执行的结果都在test.txt中。

    如果我们再使用>的指令执行一遍,我们会发现之前的执行结果全部被覆盖,这就是>> 和 >的区别

    > 表示覆盖

    >>表示追加

    这次,我们使用2>把执行的结果输出到test.txt中,输入

    ls 2>test.txt
    

    再次显示test.txt的内容,我们会发现,此次文件中什么内容都没有,这是因为,2>表示把错误的信息输出到文件中,我们的指令没有错误,所以导致了test.txt中的内容为空。

    假设我们的目录中没有test1.txt,我们知道以下代码会产生错误。

    ls test1.txt
    

    如果我们此时通过2>来输出,那么文件中应该会信息,输入

    ls test1.txt 2>test.txt
    

    此时我们再显示test.txt的内容,我们会发现test.txt会显示

    ls: 无法访问test1.txt: 没有那个文件或目录

    由此我们知道了标准输出和标准错误输出的区别:

    标准输出是输出正确的信息

    标准错误输出是用来输出错误的信息

    如果我们想把正确和错误信息输出到同一个文件中,需要采用以下命令

    指令 >   文件 2&>1   或 
    指令 &>  文件
    

    标准输入就是把由键盘的输入变为文件的输入

    <表示文件来源、

    <<表示结束输入

    有时我们还想在一个命令行中执行多个命令,则需要用分号(;)把命令隔开,如

    ls test.txt; ls bin;
    

    则屏幕分别输出ls test.txt和ls bin的输出结果

    有时我们需要前一个命令执行成功才可执行下一个命令,如

    1创建一个文件夹

    2 在文件夹中创建一个文件

    如果文件夹创建不成功,那么我们不会继续执行创建文件的指令,此时就需要&&

    指令1 && 指令2
    

    这个指令表示指令1执行成功,才会执行指令2

    有时我们也会需要指令1执行不成功去执行指令2 的情况,此时需要||

    指令1 || 指令2
    

    表示指令1执行不成功,则执行指令2

      

     

  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/qixianyu/p/6574535.html
Copyright © 2011-2022 走看看