设为首页收藏本站
查看: 79|回复: 0

[PHP] 实例说明shelli/o常用重定向

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2013-9-25 11:39:00 | 显示全部楼层 |阅读模式
    每个打开的文件都会被分配一个文件描述符.stdin(键盘),stdout(屏幕), 和stderr(错误消息输出到屏幕上)的文件描述符分别是0, 1, 和 2. 对于正在打开的额外文件, 保留了描述符3到9.
      文件描述符是文件系统为了跟踪这个打开的文件而分配给它的一个数字。
    下面以实例说明
      1,>的用法
        
      [zhangy@localhost ~]$ echo "11111" > 1.txt
    [zhangy@localhost ~]$ cat 1.txt
    11111
    [zhangy@localhost ~]$ echo "11111" 1> 1.txt    //这个用法和上面的用法是一样
    [zhangy@localhost ~]$ cat 1.txt
    11111
    [zhangy@localhost ~]$ echo "22222" >1.txt
    [zhangy@localhost ~]$ cat 1.txt
    22222
       
       这种用法我想大家都非常的熟悉,因为这是我经常会用到的。echo "11111" > 1.txt 时,>前面是有一个1的,是默认的。>重定向到文件时,会将文件清空,在写入。
      

        
       上面的这个例子,可以把1.txt文件中的内容清空,其实也很好理解,清空后,不输入内容当然为空了。
       
      2,>>的用法
       
       
    [zhangy@localhost ~]$ echo "2222" >> 2.txt
    [zhangy@localhost ~]$ cat 2.txt
    2222
    [zhangy@localhost ~]$ echo "2222" >> 2.txt
    [zhangy@localhost ~]$ cat 2.txt
    2222
    2222   
       
      从上面的这个例子我们可以看出,>>重定向到文件时,会将输出写到文件的结尾。这一点和>完全不同的
       
       
      3,0,1,2 到9,以及&
       
    [zhangy@localhost ~]$ cat 1.txt
      333
      111
      222
      444
      [zhangy@localhost ~]$ grep "22" 0> 1.txt   //将错误信息放到文件的结尾
      [zhangy@localhost ~]$ cat 1.txt
      333
      111
      222
      444
      ls: tank: 没有那个文件或目录                 //这个就是 2>> 1.txt产生的内容
      [zhangy@localhost ~]$ (ls tank ;pwd) &>1.txt   //将错误信息,以及输出内容放到1.txt文件中,&(stderr,stdout)
      [zhangy@localhost ~]$ cat 1.txt
      ls: tank: 没有那个文件或目录
      /home/zhangy   
       
      i>&j重定向文件描述符i 到 j.指向i文件的所有输出都发送到j中去. i和j呢是0-9这间的数字
       
    [zhangy@localhost ~]$ ls tank 2>&1|egrep \* 1> 2.txt  //在这里我把错误信息重定向到了1,在这里1就会输出错误,根赋值差不多
    [zhangy@localhost ~]$ cat 2.txt
    ls: tank: 没有那个文件或目录   
       
      4,的用法
      <这个符号是读取,>这个符号是输出,放在一起就打开并且读取
       
       
       
    [zhangy@localhost ~]$ echo 123546 > 2.txt
    [zhangy@localhost ~]$ exec 4 2.txt     //打开2.txt并将内容读取到&4中
    [zhangy@localhost ~]$ read -n 4 &4      //在向&4写入一个点
    [zhangy@localhost ~]$ exec 4>&-          //关闭输出文件描述符4
    [zhangy@localhost ~]$ cat 2.txt
    1235.6   
       
       
      能过上面的这个例子,就可以很清楚了解他的作用
      5,n&关闭输出文件描述符n
       
       
    [zhangy@localhost ~]$ ls tank          //会提示错误
    ls: tank: 没有那个文件或目录
    [zhangy@localhost ~]$ ls tank 2>&-     //我把错误关闭后,什么也不输出了   
       
      6,|管理命令
      这个命令也是我们常用的,是典型的,把一个命令的输出,当作另一个命令的输入
       
       
    [zhangy@localhost ~]$ echo tank | wc -w
      1   
      表示tank是一个输出,但它又是wc的输入,不然就不会有统计出现了。
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表