zoukankan      html  css  js  c++  java
  • Linux I/O重定向

    所谓I/O重定向简单来说就是一个过程,这个过程捕捉一个文件,或者命令,程序,脚本,甚至脚本中的代码块的输出,然后把捕捉到的输出,作为输入

    发送给另外一个文件,命令,程序,或者脚本。谈到I/O重定向,就涉及到文件标识符(File Descriptor)的概念, 在Linux系统中,系统为每一个打开的文件

    指定一个文件标识符以便系统对文件进行跟踪,文件标识符是一个数字,不同数字代表不同的含义,默认情况下,系统占用了3个,分别是

    0标准输入(stdin)(键盘输入)

    1标准输出(stdout) (屏幕输出)

    2标准错误(stderr) (屏幕输出)

    3-9是保留的标识符

    请看以下例子,来描述一下他们的关系

    ls /dev
    #/dev 就是作为命令ls的标准输入,而打印在屏幕的结果就是标准输出

    重定向就是把标准的输入或者输出更改成其他的方式,如:

    ls /dev 1>filename 
    ls /dev >filename  #同上等效 不指明文件标识符,系统默认的就是1
    ls /dev >>filename #追加输出
    ls /dev &>filename #"&"在这里代表标准输出和标准错误
     

    i>&j命令,表示把文件标识符i重新定向到j,"&"理解为"取地址"

    exec 2>&1

    表示把标准错误重定向到标准输出

    grep search-word 

    这个命令会让你从键盘输入的字符中查询

    grep search-word <filename

    等同于

    grep search-word  filename

    文件标识符操作:

    n<&-          关闭输入文件标识符n
    0<&-或<&-     关闭标准输入stdin
    n
    >&- 关闭输出文件标识符n 1>&-或>&- 关闭标准输出stdout


    n<>filename 表示把文件打开,并指明文件标识符为n

    >filename 清空文件

    实例:

    1 echo 123456789 >filename   #把字符串写到文件filename中
    2 exec 3<>filename           #把文件filename打开,并指定文件标识符为3
    3 read -n 4 <&3              #从文件中读4个字符
    4 echo -n . >&3              #在第5个字符处写一个点,覆盖第5个字符,-n表示不换行
    5 exec 3>&-                  #关闭文件标识符3

    出处:

    技巧:Linux I/O重定向的一些小技巧

  • 相关阅读:
    Delphi中的钩子函数HOOK详解
    Delphi好书推荐
    Windows通知栏图标高级编程概述
    关于开机自动运行程序和自动启动服务
    如何在一个窗体中嵌入另一个窗体
    三层中如何在服务器与客户端之间传输自定义的'Record'类型数据的例子
    Delphi中的钩子函数HOOK详解
    STL(转)
    默认参数(c++)
    STL2
  • 原文地址:https://www.cnblogs.com/yuyutianxia/p/7895282.html
Copyright © 2011-2022 走看看