zoukankan      html  css  js  c++  java
  • 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的东西,所以现在从标准输入读(键盘)

    第十行 从标准输入

  • 相关阅读:
    面试
    无中生有
    数字称王-0-10000,
    数组排序
    uiview 阴影
    TTTAtibutedlabel again
    vim配置python编程环境及YouCompleteMe的安装教程
    centos7下vim8.1的编译安装教程
    centos7下误执行chmod -R 777 /后的权限修复方法
    如何用浏览器在线查看.ipynb文件
  • 原文地址:https://www.cnblogs.com/cdwodm/p/5021820.html
Copyright © 2011-2022 走看看