zoukankan      html  css  js  c++  java
  • Shell 文件描述符

    <pre name="code" class="sql">linux中使用文件描述符来标识每个文件对象。文件描述符为一个非负整数,可以唯一标识会话中打开的文件。每个过程最多可以有9个文件描述符。
        linux使用的标准文件描述符:
        标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2。而我们也可以自己创建文件描述符3~8。
    
        将今天看到的一段代码:
    1    #!/bin/bash
    2    exec  3>&1
    3    exec  1>test
    4    echo "something to output file"
         ....
         ....
    5    exec 1>&3
    6    echo "Now things should be back"
        第二行代码使用文件描述符3指向文件描述符1的位置,即标准输出的位置,用于保存标准文件描述符1的位置。之后第三行代码将文件描述符1重定向到文件test,之后再执行后面的代码。在执行到
    
    第5行代码时将文件描述符1又重新指向其原来位置。
        这种方法就是在脚本程序中临时将输出重定向然后再将输出恢复到通常设置的方法~还是会经常用到的.
    标准输入STDIN就是0,标准输出STDOUT就是1,标准错误输出STDERR就是2。而我们也可以自己创建文件描述符3~8。
    
    
    cmd 2>file	 把文件描述符2重定向到file,即把错误输出存到file中。
    cmd > file 2>&1	 把标准错误重定向到标准输出,再重定向到file,即stderr和stdout都被输出到file中
    cmd &> file	 功能与上一个相同,更为简便的写法。
    cmd >& file	 功能仍与上一个相同。
    cmd > f1 2>f2	 把stdout重定向到f1,而把stderr重定向到f2
    tee files	 把stdout原样输出的同时,复制一份到files中。
    tee files	 把stderr和stdout都输出到files中,同时输出到屏幕
    
    
    [oracle@june2 ~]$ clear
    [oracle@june2 ~]$ ls -ltr xxx
    ls: xxx: 没有那个文件或目录
    
    
    [oracle@june2 ~]$ ls -ltr xxx 2>file 
    
    
    [oracle@june2 ~]$ cat file 
    ls: xxx: 没有那个文件或目录
    
    
    将错误输出到file 文件
    
    
    
    
    [oracle@june2 ~]$ ls -ltr sqlplus.txt 1>file 
    
    
    
    
    [oracle@june2 ~]$ cat file 
    -rw-r--r-- 1 oracle dba 6283 07-25 15:41 sqlplus.txt
    
    
    将标准输出到file


    
                                        
    
  • 相关阅读:
    .NET基础示例系列之十二:DLLImport
    .NET基础示例系列之二:Socket
    Qt之msvcversion.conf loaded but QMAKE_MSC_VER isn‘t set
    Ubuntu安装sshd
    Quick工程设置exe图标
    git修改文件之后上传
    VS里打开Qt的pro工程
    QtQWebEngineView显示百度网页
    在gitte建立新仓库并上传本地工程
    Qt的qDebug打印加颜色
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13352164.html
Copyright © 2011-2022 走看看