I/O重定向是一个过程,这个过程捕捉一个文件、或命令、或程序、或脚本、甚至代码块(code block)的输出,然后把捕捉到的输出,作为输入发送给另外一个文件、或命令、或程序、或脚本。

1、I/O重定向符合包含了基本I/O重定向符号和高级I/O重定向符号两大类。
基本I/O重定向符号(须要注意的是能够使用FD文件描写叙述符作为文件名):
cmd1 | cmd2:管道符,将cmd1的标准输出作为cmd2的标准输入
> filename:将标准输出写到文件filename之中
< filename:将文件filename的内容读入到标准输入之中
>> filename:将标准输出写到文件filename之中,若filename文件已存在,则将标准输出追加到filename已有内容之后
>| filename:即使noclobber选项已开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉
n>| filename :即使noclobber选项已开启,仍然强制将FD为n的输出写到文件filename之中,即将filename文件覆盖掉
n> filename:将FD为n的输出写到文件filename之中
n< filename :将文件filename的内容读入到FD n之中
n>> filename:将FD为n的输出写到文件filename之中,若filename文件已存在,则将FD为n的输出追加到filename已有内容之后
<<delimiter :此处文档(Here-document)
高级I/O重定向符号
n>&m:将FD为m的输出复制到FD为n的文件
n<&m:将FD为m的输入复制到FD为n的文件
n>&-:关闭FD为n的输出
n<&-:关闭FD为n的输入
&>file:将标准输出和标准错误输出重定向到文件
--------I/O重定向和管道的差别
首先须要注意的是管道|事实上也是I/O重定向的一个操作部分
1、管道左边是一个能够送到标准输出(stdout)的命令,右边是一个从标准输入接受(stdin)的命令;假设I/O重定向符左边是有输出的命令,右边仅仅能是文件,假设I/O重定向符左边是能接受输入的命令,右边仅仅能是文件。
2、在管道运行的时候启动了两个进程,该进程分别运行左右两边的命令;而I/O重定向符值则在同一个进程中完毕
---------在Linux中有两个重要的特殊文件:
/dev/null:这是一个空设备文件,被送到当中的所有的数据都会被丢弃,能够将标准输出和错误输出所有重定向到该文件里,此时既能够将错误信息所有丢弃。
标准写法是>/dev/null 2>&1
当中>/dev/null表示丢弃文件;
2>&1当中2和1分别表示标准输出stdout和标准出错stderr,>&表示等同于,也就是将标准出错输出2重定向于标注输出1,因为标准输出已经被重定位到了/dev/null,所以标准出错的输出也被扔掉了。
该写法也能够是1>/dev/null 2>/dev/null,差别在这样的情况下标准输出和标准出错都被送到/dev/null,这个文件被打开了两遍;而>/dev/null 2 >& 1则是将标准输出送到/dev/null,而标准出错则是从管道送到/dev/null,/dev/null仅仅被打开了一次,当中/dev/null能够换成其它不论什么文件。
/dev/tty:当该文件被打开的时候shell会将其自己主动重定向到一个终端(包含显示控制台、远程登陆伪中断或者串口)。

转载于:https://www.cnblogs.com/bhlsheji/p/4033494.html

46 关于Linux的I/O重定向相关推荐

  1. 3分钟学会Linux管道符与重定向

    Linux管道符与重定向 管道符 相信大部分人都见到过这样的linux命令,当然没见到过也没关系,现在不是见到来了嘛! 中间那个竖线就是管道符,输入管道符只需要按下"shift + &quo ...

  2. linux重定向stderr,在Bash和其他Linux Shell中将stderr重定向到stdout的方法

    本文介绍重定向输出及在Bash和其他Linux Shell中将stderr重定向到stdout的方法. 前言 将命令的输出重定向到文件或将其通过管道传递到另一个命令时,您可能会注意到错误消息被打印在屏 ...

  3. Linux/Unix中的重定向简单实例

    "重定向"是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变.令程序与文件一同工作的方式有两种:一种是明确地使用打开文件.关闭文件.读文件.写文件等专门的函数(比如f ...

  4. Linux中的数据流重定向

    本文目录 数据流重定向 本文目录(仅做浏览用,简书中的MarkDown暂时不支持页面内跳转) 数据流重定向 在之前的操作中,常会看到>或>>操作,它们分别是将标准输出导入到一个文件或 ...

  5. linux 重定向 2gt;gt;,编写我自己的linux shell I / O重定向’gt;’函数

    我正在编写重定向函数,将命令的输出写入给定的文件名. 例如: echo Hello World> hello.txt会将'Hello World'写入hello.txt. ls -al> ...

  6. (010) Linux之I/O重定向

    十年运维系列之基础篇 - Linux 作者:曾林 联系:1494445739@qq.com 网站:www.jplatformx.com 版权:文章未经同意请勿转载 一.引言 这里我们来讨论Linux中 ...

  7. linux脚本实现多重管道,制作Linux shell时流重定向和管道

    我有一个在C中创建Linux shell的任务.目前,我仍然坚持实现重定向和管道.我到目前为止的代码如下.main()解析用户的输入.如果内置命令,则执行该命令.否则,标记化的输入传递给execute ...

  8. linux grub 串口,grub重定向到串口 - Emmoblin Blog

    将GRUB输出重定向到串口(Edit /boot/grub/grub.conf) serial --unit=0 --speed=115200 --word=8 --parity=no --stop= ...

  9. Linux 实现一个带有重定向功能的shell

    先实现一个不带重定向功能的shell(参考一下博客) Linux 原来实现一个shell这么容易!(史上最简单详细) 主要改动还是在解析字符串之前和子进程进行重定向.代码标注的很详细易懂 #inclu ...

最新文章

  1. /etc/bashrc和/etc/profile傻傻分不清楚?
  2. sql每个月每个人的花销占比_星座月运(2020年12月),每个人开支花费大,得精打细算...
  3. LeetCode 657. 机器人能否返回原点
  4. coderfoces D. Gourmet choice
  5. 一个ubuntu phper的自我修养(lamp)
  6. txtv28pw河南某中学_中学生骑行典型交通事故案例集 | 知危险会避险
  7. MFC创建MDI程序一个Doc对应多个View
  8. Springboot 配置类( @Configuration) 不能使用@Value注解从application.propertyes中加载值以及Environment为null解决方案
  9. eclips 创建 maven项目
  10. 81章 老子1章到_老子81章
  11. Java学习-Thread
  12. 计算机网络显示红X无法连接,电脑无线网络连接不上,出现了红x❌
  13. matlab中marker太密,markersize_想问下MATLAB里 ‘Markersize’ 设置的值是‘Marker_
  14. 将VOC格式标注文件转换为Yolo格式
  15. 理解误区——mysql中tinyint与Java的数据类型的对应关系;tinyint(1) 与tinyint(4)的区别
  16. BigDecimal出现多位小数问题
  17. hadoop开发环境配置
  18. 输出pdf文件的一个简单方法
  19. 为单身狗推荐一个相亲公众号,靠谱!真实
  20. html中轮播图跳转,纯 CSS 实现轮播图

热门文章

  1. 在游戏里模拟天空的颜色,太迷人了!
  2. pmp每日三题(2022年2月21日)
  3. npm——安装教程、安装vue脚手架(ASP.NET Core微服务(五)——【vue脚手架解析接口】过度章节)
  4. 死锁:多线程同时删除唯一索引上的同一行
  5. kill -HUP 什么意思?
  6. 怎样通过DOS来提取一个文件夹下所有文件的名字
  7. R语言学习——处理数据对象的实用函数
  8. myeclipse打开jsp页面慢或者卡死
  9. angularjs的一点总结
  10. 数据类型之字符串练习