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. Css3 Media Queries移动页面的样式和图片的适配问题(转)

    CSS3 Media Queries 摘自:http://www.w3cplus.com/content/css3-media-queries Media Queries直译过来就是“媒体查询”,在我 ...

  2. linux chmod 命令详解(转)

    Ubuntu下修改目录权限需要先用 sudo 来获得管理员权限,格式如下: sudo chmod 600 ××× (只有所有者有读和写的权限)sudo chmod 644 ××× (所有者有读和写的权 ...

  3. c#保存datagridview中的数据时报错 “动态SQL生成失败。找不到关键信息”

    ilovejinglei 原文 C#中保存datagridview中的数据时报错"动态SQL生成失败.找不到关键信息" 问题描述     相关代码 using System; us ...

  4. QTP、LoadRunner、QC工具下载地址

    QTP10.0工具下载地址:http://h30302.www3.hp.com/prdownloads/T6510-15063.zip?ordernumber=380454070&itemid ...

  5. Open-Drain V.S. Push-Pull

    作者:crifan (http://bbs.chinaunix.net)邮箱:green-waste@163.com [Open-Drain与Push-Pull]GPIO的功能,简单说就是可以根据自己 ...

  6. HW6.14

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  7. poj1848 Tree

    .....是我多想了. 我想开f[][0~3],看到百度上的题解都是[0~2]的,我就改了 方程不是特别难想.. f代表最小代价 f[i][0]是子树有环过i f[i][1]是子树除了i都成环了 f[ ...

  8. C# Asp.net中的AOP框架 Microsoft.CCI, Mono.Cecil, Typemock Open-AOP API, PostSharp -摘自网络 (可以利用反射 Attribute 进行面向切面编程 可以用在记录整个方法的Log方面)

    Both Microsoft.CCI and Mono.Cecil are low-level, and don't validate produced assemblies. It takes lo ...

  9. -lrt

    在编写pthread有关的程序时,编译时老是报"undefined reference to `pthread_create'"的错误,原因是没有链接pthread相关的库,gcc ...

  10. 纯CSS3实现的图片滑块程序,效果非常酷

    接下来我们一起来分析一下源码,首先是HTML代码,非常简单: <div id="gal"> <nav class="galnav"> & ...