shell的特性之十:输入输出重定向和管道

I/O设备:就是把信息输入进计算机,然后计算机把信息反馈输出的设备,例如输入设备:键盘,输出设备:显示器。就是I/O设备
  • 每个设备内部都有寄存器,这个寄存器是用来和计算机的CPU交互的

键盘上每次敲击一个按键,这样的信息都会被键盘控制送到键盘寄存器中,然后cpu去键盘寄存器读取这个信息。就是这样完成交互的

  • I/O port(接口):cup上有很多接口分配给不同的情况需要连接的设备,port实际上就是和cup这些接口连接时确切的地址,让CPU可以通过接口找到I/O设备

  • 文件描述符:file descriptor 简写:FD

    • 输入设备:INPUT:标准输入,stdin,固定描述符:0
    • 输出设备:OUPUT:标准输出,stdout,固定描述符:1
      标准错误,stderr,固定描述符,2

    输出设备,传递两个数据流,第一个是正常的输出。第二个是在运行过程中的产生的错误也是需要表达出来的,而表达方式一般也就是显示到显示器中让人看到。所以像显示器即要承担标准输出的数据也要负责标准错误的数据流

  • I/O 的重定向

    正常的I/O设备有这自己的标准输入,标准输出。当这些标准的输入、输出、我不想让他出现默认的地方,给它改下位置。比如保存到文件中去,或者其他地方。这就叫做I/O的重定向

  • I/O重定向的操作

  • # tr 'a-z' 'A-Z' < /etc/fstab  //这个“<”小于号就是输入的重定向,不从键盘中获取输入信息去 fstab中去获取信息
    
    • I/O重定向
      • 输入重定向:< ,<<
        • <:输入重定向
        • <<:此处创建文件,常用于在脚本中创建文件或生成菜单
        • << EOF EOF 此处生成文件 ::用法可以寻找0217 01视频1:23:处解释
      • 输出重定向:>, >>
        • >:覆盖输出 :如果我们把方向指向一个文件,那么文件中原来的内容都会被删除,然后写入新的内容。
        • >> : 附加输出:指向一个存在的文件,会把信息填写在文件的后面,并不删除原来的信息
        • set -C :禁止使用覆盖重定向之已经存在的文件;
        • set +C :关闭上述特性;
        • >| : 在-C特性下强制覆盖重定向;
      • 输出重定向,只能用于正常输出的重定向不能用错误输出的重定向
      • 错误输出重定向:
        • 2>:覆盖输出 :如果我们把方向指向一个文件,那么文件中原来的内容都会被删除,然后写入新的内容。
          -2 >> : 附加输出:指向一个存在的文件,会把信息填写在文件的后面,并不删除原来的信息
    //同时重定标准输出和错误输出
    # ls /etc >tmp/etc.out 2> /tmp/etc.err //在+C特性下,成功了重定向到etc.out文件,失败了重定向到etc.err文件
    //命令格式
    同时重定标准输出和错误输出:
        命令 > /path/to/outfile 2>/path/to/errfile
        命令 &> /path/to/somefile //无论成功和失败都会被定向到同一个文件
        命令 > /path/to/somefile 2>&1//无论成功和失败都会被定向到同一个文件,成功写入标识符1,错误写入标识符2
    /dev/null :bit bucket(位桶),所有发往这里的数据全部都会被悄悄丢弃

    管道:管道为此而生↓

        - Linux:使用目的单一的小程序,组合小程序完成复杂任务
    管道不能再第一个管道里创建一个变量,在第二个管道中使用
    
     command1 | commadn2 | command3 | 。。。。
    
    • 分叉输出:tee,命令不会处理,会送到下一个管道
    // 命令解释:使用tee后 把输出结果保存到/tmp/a.out,同时又用wc -l命令统计行数。
    # cat /etc/rc.d/rc.sysinit | tee /tmp/a.out |wc -l
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值