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. Java web 项目 tomcat部署方式.

    本地做Java Web项目的时候常常会用到tomcat部署测试的问题, 这里介绍项目的部署方法: 1,配置文件的形式: 例如: 你的项目目录为:f:\workspaces\MyProject,此时使用 ...

  2. 判断String为空

    1.  et_string.equals("")|| et_string==null 2.  ""用equal.null用== TextUtils.isEmpt ...

  3. HTML5桌面通知:notification api

    1. 为什么需要HTML5的桌面通知 传统的桌面通知可以写一个div放到页面右下角自动弹出来,并通过轮询等等其他方式去获取消息并推送给用户.这种方式有个弊端就是:当我在使用京东 进行购物的时候,我是不 ...

  4. WCF:为 SharePoint 2010 Business Connectivity Services 构建 WCF Web 服务(第 1 部分,共 4 部分)

    转:http://msdn.microsoft.com/zh-cn/library/gg318615.aspx 摘要:通过此系列文章(共四部分)了解如何在 Microsoft SharePoint F ...

  5. Ext入门学习系列(五)表格控件(2)

    上节学习了Ext中表格控件,从创建,到定义数据源.绑定显示,大体明白了一个基本的表格控件是怎么实现的.而我们用表格控件多用于从各种数据源接收数据并显示出来,并不是写死的.本章我们就不同数据源的不同实现 ...

  6. Struts2 教程

    一.Struts2是什么 Struts2是在WebWork2基础发展而来的.和Struts1一样, Struts2也是基于MVC的web层框架. 那么既然有了Struts1,为何还要Struts2? ...

  7. 将java应用程序打包成可执行文件

    准备工作:我用的打包软件是installanywhere.因此要先下载这个软件,这里提供一个下载地址http://www.52z.com/soft/21747.html.(网页上写的有破解方法) 详细 ...

  8. POJ 2001 字典树(入门题)

    #include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #i ...

  9. Zabbix探索:模板中发现规则的使用

    其实模板的建立只要多看看系统自带的模板内容就清楚了,一目了然,不用做过多解释. 目前使用到的自动发现规则有端口和文件系统的,其他还没有仔细研究. 下面说说遇到的几个问题. 1.Key不能相同.普通项目 ...

  10. I2c串行总线组成及其工作原理

    采用串行总线技术可以使系统的硬件设计大大简化,系统的体积减小,可靠性提高,同时系统更容易更改和扩充 常用的串行扩展总线有:I2c总线,单总线,SPI总线,以及microwire.Plus等等 I2c总 ...