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会将其自己主动重定向到一个终端(包含显示控制台、远程登陆伪中断或者串口)。





46 关于Linux的I/O重定向的更多相关文章

  1. Linux脚本执行过程重定向

    Linux脚本执行过程重定向 一.bash调试脚本,并将执行过程重定向到指定文件 bash –x  shell.sh 2>&1 | tee shell.log

  2. linux 将debug信息重定向到LCD(屏幕)

    /*********************************************************************** * linux 将debug信息重定向到LCD(屏幕) ...

  3. Linux文件查看及重定向

    Linux文件查看及重定向   实验目标: 通过本实验掌握head.tail.cat.more.less等文件查看命令的使用,理解重定向的概念,掌握两种重定向方法的使用. 实验步骤: 1.通过head ...

  4. Linux学习之输入输出重定向

    转自:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 多谢分享 在了解重定向之前,我们先来看看linux 的文件描述符. ...

  5. (大数据工程师学习路径)第一步 Linux 基础入门----数据流重定向

    介绍 开始对重定向这个概念感到些许陌生,但通过前面的课程中多次见过>或>>操作了,并知道他们分别是将标准输出导向一个文件或追加到一个文件中.这其实就是重定向,将原本输出到标准输出的数 ...

  6. [Linux]基本I/O重定向

    在我们设置定时任务的时候经常会使用标准输出和标准错误输出.这个在Linux是一个非常重要的概念,而且这个很有用.程序应该有数据库的来源端.数据的目的端,以及报告问题的地方,它们被称为标准输入.标准输出 ...

  7. (四)Linux Shell编程——输入输出重定向

    Unix 命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示.一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器. 1. 输出重定向 命令的输出不 ...

  8. linux 学习管道 和重定向

    开源文化的理念之一 就是不要重新发明轮子 在linux 系统中大多是都是非常简单的命令,每个命令都是实现一个或者几个简单的功能,我们可以将不同的命令组合在一起 来达到复杂的功能的目的,在linux中因 ...

  9. Linux中将端口(80)重定向

    在Linux中直接指定命令: iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 其中80为要访问的端 ...

随机推荐

  1. sh脚本执行Java程序

    1.不引用Jar包或者资源文件夹 最简单的程序Hello World. 首先创建Hello.java public class Hello { public static void main(Stri ...

  2. 几款JS地图插件比较

    因工作需要,最近研究几款关于地图的JS插件,现与大家分享一下. 以下比较只是浅层次的分析一下,并没有实际通过项目检验,所以不足之处还请大家指出. 地图插件对比 插件名  简介 区域支持 扩展性 离线支 ...

  3. 【原】cocos2d-x开发笔记:多点触控

    在项目开发中,我们做的大地图,一个手指头按下滑动可以拖动大地图,两个手指头按下张开或者闭合,可以放大和缩小地图 在实现这个功能的时候,需要使用到cocos2d-x的多点触控功能. 多点触控事件,并不是 ...

  4. a标签中的label在IE下触发不了a标签的href链接(label标签——解析)

    <a href="http://www.baidu.com/" target="_blank"> <span>百度</span&g ...

  5. [转] Android SDK manager 无法获取更新版本列表

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  6. C# 等待另外一个窗体关闭,再进行主线程的代码

    方法1 用Form类或其子类的showDialog方法. 比如你在form1里有一个按扭,然后你在Form1的点击事件里写上显示form2的代码: Form2 frm=new Form2(); frm ...

  7. POJ 2378-Tree Cutting(树形dp)

    题意: n个节点的树,删除一个点,得到的最大联通分支大小不大于总节点数的一半,求这样点的集合 分析:和上题一样 #include <map> #include <set> #i ...

  8. HDU 5694 BD String 递归暴力

    http://blog.csdn.net/angon823/article/details/51484906 #include <cstdio> #include <iostream ...

  9. POJ3616 Milking Time 简单DP

    注意0,1,.....,N是时间点,i~i+1是时间段 然后就是思路:dp[i]代表到时间点 i 获得的最大价值, 1:dp[i]=max(dp[i],dp[s-r]+e),表示有以s为开头,i为结尾 ...

  10. Action 操作

    当鼠标移动到图片文件夹的时候,将有一些button显示 当鼠标移开这个文件夹,那些button隐藏了起来 display属性的变化 1.可以使用Js改变属性来操作 暂未验证,待时间. 2.可以使用Ac ...