• exec 重定向


    文件中常用的重定向:

    command > filename把把标准输出重定向到一个新文件中
    command >> filename 把把标准输出重定向到一个文件中 (追加)
    command 1 > fielname 把把标准输出重定向到一个文件中
    command > filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中
    command 2 > filename 把把标准错误重定向到一个文件中
    command 2 >> filename 把把标准输出重定向到一个文件中 (追加)
    command >> filename 2>&1 把把标准输出和标准错误一起重定向到一个文件中 (追加)
    command < filename >filename2   把命令以 filename文件作为标准输入,以 filename2文件作为标准输出
    command < filename 把command命令以filename文件作为标准输入
    command << delimiter 把从标准输入中读入,直至遇到 delimiter分界符
    command <&m 把把文件描述符 m作为标准输入
    command >&m 把把标准输出重定向到文件描述符 m中
    command <&- 把关闭标准输入

    需要明确的一点是可以使用exec命令通过文件描述符打开和关闭文件。


    >&n 使用系统调用 dup (2) 复制文件描述符 n 并把结果用作标准输出;如果n之前&那么n则被理解成文件的名字,当表明是文件描述符时需要加上&

    <&n 标准输入复制自文件描述符 n;

    <&- 关闭标准输入(键盘);

    >&- 关闭标准输出;

    n<&- 表示把 n 号输入关闭;

    n>&- 表示把 n 号输出关闭;

    exec 1>outfilename # 打开文件outfilename作为stdout。可以理解为把标准输出的东西都定向到outfilenam 中

    exec 2>errfilename # 打开文件 errfilename作为 stderr。

    exec 0<&- # 关闭 FD0。

    exec 1>&- # 关闭 FD1。

    exec 5>&- # 关闭 FD5。

    下面来看一个小例子:

     1 exec 4<&0 0<desc
     2 
     3 read line1
     4 
     5 exec 0<&4
     6 echo $line1
     7 
     8 
     9 echo -n "please input number :"
    10 read line2
    11 echo $line2

    desc可以推断出是一个文件

    第一行的意思是把文件描述符0(标准输入)定向到文件描述符4,相当于把文件描述符0备份了一份保存在4中,然后把文件定向到文件描述符0,则以后的标准输入都是从文件desc中读取。

    第三行 读入一行

    第五行 原来是从desc中读,现在从文件描述符4中读,文件描述符4中保存的是原来文件描述符0的东西,所以现在从标准输入读(键盘)

    第十行 从标准输入

  • 相关阅读:
    【转】使用Javascript改变HTML内容 拓荒者
    【转】ASP.NET MVC 过滤器Filter 拓荒者
    【转】JavaScript简介 拓荒者
    edge.js架起node.js和.net互操作桥梁
    利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
    nodejs上HTML分析利器nodejquery
    JavaScript 函数replace揭秘
    利用Node.js本地构建
    Angularjs的IOC Inject分析
    团队文化中的害群之马
  • 原文地址:https://www.cnblogs.com/cdwodm/p/5021820.html
Copyright © 2020-2023  润新知