IO重定向与管道

一、三种IO设备

程序:数据+指令数据结构+算法
程序必须能够读入输入然后经过加工来产生结果,其接受的输入可以是变量、数组、列表、文件等等,生产出来的结果可以使变量、数组、列表、文件等等。即:
程序都有读入数据和输出数据的需求
读入数据:input
输出数据:output
Linux给程序提供三种IO设备:

  • 标准输入(STDIN)-0 默认接受来自键盘的输入
  • 标准输出(STDOUT)-1 默认输出到终端窗口
  • 标准错误(STDERR)-2 默认输出到终端窗口

在Linux中,一切皆文件,我们没打开文件,系统都会自动分配一个FD(file description,文件描述符)。上面的0,1,2就是系统分配的文件描述符。

ll /proc/$$/fd    查看目前的文件描述符
exec 8<>/data/hosts    
表示给/data/hosts文件指定一个文件描述符8,且8与/data/hosts之间是软链接
exec 8>&-    删除8号这个文件描述符

在这里插入图片描述

二、IO重定向:改变默认位置

  1. >标准的输出重定向:
    ls > /dev/pts/5 命令ls重定向输出至窗口5
    ls > /data/ls.out 命令ls重定向输出至/data/ls.out文件中
    注意:假如ls.out文件中本来就有内容,那么重定向输出后会覆盖文件中原有的内容

  2. >>:追加重定向,新内容会追加至目标文件尾部
    ls >> /data/ls.out

  3. ():合并多个程序的STDOUT
    (cal 2007;cal 2008) > all.txt


2>标准错误的输出重定向:
cmd 2> /data/err.log cmd(本身无cmd这个命令,所以输入此命令会显示错误的结果)的错误结果重新定向显示至 data/err.log 中
注意:history 2> /data/err.log 由于本身history命令是正确的,所以默认的输出设备会正常显示history命令的内容,且不会输出至/data/err.log中。原data/err.log中的文件会被空文件覆盖。
cmd 2>&g

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值