zoukankan      html  css  js  c++  java
  • Linux输入输出管理

      一、系统输入输出的理解

    •  运行一个程序时,需要从某个位置读取输入信息,然后CPU处理,最后将输出

      显示在屏幕或文件中;其中,某个位置相当于输入设备,屏幕或文件为输出设备。

    •  标准输入:stdin,默认是键盘,只能进行读取操作
    •  标准输出:stdout,默认是显示屏,只能进行写入操作
    •  标准错误:stderr,默认连接是显示屏,只能进行写入操作

      二、系统输入输出的管理

      1、输出重定向

        >     ## 重定向正确输出
        2>   ## 重定向错误输出
        &>   ## 重定向所有输出

      注意:重定向会覆盖源文件内容;一般错误会被重定向到/dev/null中

      实例:(以下实验必须在student用户下完成)

    • 使用命令*** find /ect/ -name passwd > file *** 定向正确输出到file,并使用cat命令查看:

      

    •  使用命令*** find /etc/ -name passwd 2>file.err *** 定向错误输出到file.err

      

    •  命令*** find /etc/ -name passwd &>file.all ***定向所有输出到file中

      

    •  使用命令*** >file *** 进行清空file文件

      

      2、输出追加

        >>     ##追加正确输出到文件最后
        2>>   ##追加错误输出到文件最后
        &>>   ##追加所有输出到文件最后

      注意:追加不会覆盖源文件,内容会加在源文件末尾

      实例:此实例在普通用户下操作

    •  使用***find  /etc/ -name passwd >> file***命令,把正确结果追加在file文件末尾

      

    •  使用*** find /etc/ -name passwd  2>> file1 ***命令,把错误结果追加在file1中:

      

    •  使用*** find /etc/ -name passwd  &>> file2***命令,把所有输出追加在文件file2中:

      

      3、管道符 

    •  管道的作用:’|’是把前一条命令的输出变成后一条命令的输入
    •  注意:

         管道只允许正确输出通过;
         通过管道的输入将变成输出,而变成输入的这些输出会被第二条命令处理的;
         如果需要保存输出内容,那么要复制一份输出,用到的命令是”tee“;

         使用2>&1可以把stderr转换成stdout。

    •  实例:(在普通用户下进行操作)

       使用***find /etc/ -name passwd | wc -l ***命令时,则会显示出错误结果,正确结果

       通过管道后执行wc -l,同时显示行数,结果如下:

       

         使用*** find /etc/ -name passwd 2>&1 | wc -l ***命令,是错误结果通过管道后,在第

       二条命令执行,最终显示结果为6:

       

       使用***find /etc/ -name passwd 2>&1 | tee file | wc -l***命令,先保存一份输出在file

              文件中,并输出行数6,结果如下:(使用tee命令会使file中的内容被覆盖):

       

      4、输入重定向

        <<  ## 重定向输入

      实例:重定向输入到文件file中,结果如下:

       

    练习二:

    1、显示当前时间,显示格式为hh:mm:ss,并保存到文件time.txt中;

    命令:date +%T | tee time.txt

    2、显示/etc/passwd 文件的第15-18行内容

    命令:head -n 18 /etc/passed | tail -n 4

     

    3、显示/bin中文件包含大写字母的文件,保存在bin_westos_file.txt文件中,并统计个数显示到

    屏幕上;

    命令:find  /bin/ -name *[[:upper:]]*  |  tee  bin_westos_filetxt | wc -l

    命令:find /etc/ -name passwd 2>> /dev/null

    5、在student用户下查找/etc下passwd文件,正确输出保存到/tem/westos.out,错误输出保存

    到/tem/westos.err;

    find /etc/ -name passwd > /tem/westos.out 1>/tem/westos.err

    6、在student用户下查找/etc下passed文件,显示命令输出,并保存输出到/tem/westos.all中

    命令:find /etc/ -name passwd | tee /tem/westos.all

      

      

  • 相关阅读:
    【题解】洛谷P4391 [BOI2009] Radio Transmission(KMP)
    【题解】UVA10298 Power String(KMP)
    【题解】洛谷P4281 [AHOI2008] 紧急集合(求三个点LCA)
    [BZOJ4712]洪水-[树链剖分+线段树]
    [BZOJ2961]共点圆-[凸包+cdq分治]
    [BZOJ1185][HNOI2007]最小矩形覆盖-[凸包+旋转卡壳]
    [BZOJ2738]矩阵乘法-[整体二分+树状数组]
    [POJ2104]Kth Number-[整体二分]
    [arc082F]Sandglass
    [arc076F]Exhausted?
  • 原文地址:https://www.cnblogs.com/uthnb/p/9327082.html
Copyright © 2011-2022 走看看