文件描述符及其重定向的学习笔记

    Linux将每个对象当做文件处理。这包括输入和输出过程。Linux用文件描述符来标识每个文件对象。文件描述符是一个非负整数,可以唯一标识会话中打开的文件。每个过程最多有9个文件描述符。
1 标准文件描述符
    * 标准输入STDIN:0
        STDIN文件描述符代表shell的标准输入。对于终端来说,标准输入是键盘。
    * 标准输出STDOUT:1
        STDOUT文件描述符代表标准的shell输出。在终端上,标准输出是终端显示器。
    * 标准错误STDERR:2
        shell通过特殊的文件描述符来处理错误消息。默认情况下,STDERR文件描述符和STDOUT文件描述符指向同样的地方。就是说,默认情形下,错误消息输出到显示器上。
2 重定向错误
    *只重定向错误 2>
        #ls -al badfile 2> test4
    *重定向错误和数据
        #ls -al badfile  2> test6 1>test7
        #ls -al badfile &> test7
3 脚本中重定向输出
    *临时重定向:文件描述符之前加and符(&)
    *永久重定向:用exec命令告诉shell在脚本执行期间重定向某个特定文件描述符。
4 脚本中重定向输入
    用exec命令来将STDIN重定向到Linux文件。
5 创建自己的重定向
    你可以创建文件描述符3~8,并将它们分配给要用到的任何文件。
    *创建输出文件描述符
        例:exec 3>testout
    * 重定向文件描述符
        exec 3>&1      #将文件描述符3重定向到文件描述符1
        exec 1>testout #将STDOUT重定向到文件
        ....
        exec 1>&3      #恢复文件描述符1
    * 创建输入文件描述符
        exec 6<&0      #将文件描述符6重定向到文件描述符0
        exec 0<testout #将STDIN重定向到文件
        ....
        exec 0<&6      #恢复文件描述符0
    * 创建读写文件描述符
        exec 3<> testfile
    * 关闭文件描述符
        exec 3>&-
        一旦关闭了文件描述符,就不能在脚本里向它写任何数据了,否则shell会生成错误消息。
6 列出打开的文件描述符
    /usr/sbin/lsof
7 阻止命令输出
    shell输出到null文件的任何数据都不会保存。
    ls -al > /dev/null    #阻止STDOUT输出
    ls -al 2> /dev/null  #阻止STDERR输出
    cat /dev/null > testfile # 清空一个文件

参考文献:《Linux Command Line and Shell Scripting Bible》 by Richard Blum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值