通常在 Shell 中执行命令的时候,我们会在输入命令的下方看到执行结果,操作系统默认将命令的执行结果输出到显示器上。当然,我们也可以手动的指定输出路径,或者输入路径,这就是 I/O 重定向。

  1.标准输出重定向

  使用 cat 命令,命令的执行结果将会打印在屏幕中。

  我们使用 > 来进行输出重定向,此时屏幕上不再打印命令执行结果了,而是将执行结果保存到了 ./target.xxx 文件中。

  来看一下 ./target.xxx 文件中的内容:

  2.标准输入重定向

  tr 命令可以从键盘上读取标准输入,然后打印出命令的执行结果:

  

  底下的光标表示 tr 命令在等待用户的输入,然后将它们打印在屏幕上。ctrl + c 可以终止此命令执行。默认情况下,tr 从键盘上读取内容输出,如果我们要在其他文件中读取内容,就要使用标准输入重定向。

  3. >> 和 <<

  在使用 > 进行输出重定向的时候,后一次的输出会覆盖前一次的输出,如果我们不想进行覆盖,就使用 >> 进行追加重定向。

  和 >> 不同的是, << 并不表示追加重定向,而是进行文档输入,或者多行输入。使用 << 的时候需要使用定界符标志,关于这个命令,学过 PHP 的同学应该比较了解了。定界符可以任意取名,只要两端保持一致即可。

  输入重定向和输出重定向也可以连接配合使用,这里使用 << 和 >> 举例:

  4.标准错误输出流(STDERR)

  除了标出输入流(STDIN),标准输出流(STDOUT),还有标准错误输出流(STDERR)。标准错误输出流和标准输出流是不同的数据流。

  如果命令发生了错误,屏幕上会打印错误信息,由于 STDERR 和 STDOUT 属于不同的数据流,因此该错误信息并不会输出到 ./result 中。

  标准错误输出流使用 2>(覆盖) 或者 2>> (追加)进行重定向:

  屏幕上没有打印错误信息,将错误信息输出到 ./result 文件中。

  如果我们想将命令执行的结果(正常结果和出错信息)一并输出到某个文件中,可以使用 >> 和 2>> 连接进行操作,也可以使用 &> 或者 &>> 重定向 STDOUT 和 STDERR 到同一个文件中:

  5.管道

  管道表示数据的流向:数据在某处进行处理后,通过管道传输到另一处进行处理。Linux 中使用 | 作为管道连接符,表示将上一次命令的执行结果作为下一次命令的输入。下面是管道的两个实例用法:

  6.set 命令

  set 是 bash 中的一个内建命令,可以进行一些功能的开启或者关闭。为了安全起见,我们一般是不允许进行覆盖重定向的,这是可以使用 set -C 表示禁止覆盖重定向。

  使用 set +C 命令表示允许覆盖重定向。

  如果在使用 set -C 禁止覆盖重定向之后,我们还是想执行这样的操作呢?我们可以使用 COMMAND >| FILE,通过在 > 后加一个竖线,可以实现此操作。

  7.总结

  本文介绍了 Linux 中的 I/O 重定向的实现,包括标准输入、输出重定向,以及标准错误输出重定向,还有覆盖重定向和追加重定向的区别。最后介绍了 Linux 中的管道,我们使用管道对命令进行连接,前一个命令的输出作为后一个命令的输入。内容比较简单,作为一个单独的知识点,还是将其独立成文,方便以后查阅。下篇文章会介绍 grep 命令和正则表达式,学会使用 grep 命令之后,我们在 Linux 上处理文件将会非常的方便快捷。


作者:Charleylla  转载请注明出处:http://www.cnblogs.com/charleylla/p/5988213.html


[Linux 005]——IO重定向的更多相关文章

  1. linux学习14 Linux运维高级系统应用-glob通配及IO重定向

    一.回顾 1.bash基础特性:命令补全,路径补全,命令引用 2.文件或目录的复制,移动及删除操作 3.变量:变量类型 存储格式,数据表示范围,参与运算 二.bash的基础特性 1.globbing: ...

  2. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  3. Linux I/O 重定向详解及应用实例

    Linux I/O 重定向详解及应用实例 简解 > 输出 < 输入 >> 追加 & [> | < | >>]之前:输入输出; ls /dev & ...

  4. Bash : IO 重定向

    标准输入/输出(standard I/O)可能是软件设计原则里最重要的概念了.这个概念就是:程序应该有数据的来源端.数据的目的端(输出结果的地方)已经报告问题的地方,它们分别被称为标准输入(stand ...

  5. (转)linux exec与重定向

    原文:http://xstarcd.github.io/wiki/shell/exec_redirect.html linux exec与重定向 exec和source都属于bash内部命令(buil ...

  6. Linux之IO Redirection

    一.引言 前几天使用一个linux下的内存检测工具valgrind,想要把检测的结果重定向到文件,结果总是没有任何内容,最后才发现是重定向的原因,它输出的信息是输出到stderr的,所以我使用 > ...

  7. Linux标准IO和管道

    Linux标准IO和管道 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: ...

  8. 四、IO重定向和管道以及基本文本处理工具

    一.三种IO设备 程序:数据+指令 或 数据结构+算法程序必须能够读入输入然后经过加工来产生结果,其接受的输入可以是变量.数组.列表.文件等等,生产出来的结果可以使变量.数组.列表.文件等等.即:程序 ...

  9. IO重定向与管道

    一.三种IO设备 程序:数据+指令 或 数据结构+算法 程序必须能够读入输入然后经过加工来产生结果,其接受的输入可以是变量.数组.列表.文件等等,生产出来的结果可以使变量.数组.列表.文件等等.即: ...

随机推荐

  1. 【BZOJ2792】[Poi2012]Well 二分+双指针法

    [BZOJ2792][Poi2012]Well Description 给出n个正整数X1,X2,...Xn,可以进行不超过m次操作,每次操作选择一个非零的Xi,并将它减一. 最终要求存在某个k满足X ...

  2. iOS 界面翻转切换动画

    [UIView  beginAnimations:nil context:NULL]; [UIView setAnimationCurve:UIViewAnimationCurveLinear]; [ ...

  3. Android 获取当前应用的版本号和当前系统的版本号

    1.获取当前程序版本名 我们可以在AndroidManifest.xml中设置程序的版本号等,如android:versionName="1.0",那如果想在代码中获取这个版本号呢 ...

  4. IE edge是怎么了??

    IE edge 怎么不能通过$.getJSON(url,function(data){ alert(''); });获取数据呢?,其他浏览器和IE的10以下版本都没问题获取到了,这是什么情况!本来是想 ...

  5. Android开源天气预报应用Weather-Lite

    由于最近繁忙的工作告一段落,要清闲一段时间,所以可以好好利用这段时间给自己充充电. 于是乎这个app就诞生了.本着开源的精神我把它放在了github上.这里如果有Android初学者的话不妨学习一下, ...

  6. http协议------>概述和动手实践认识Http协议

    http协议是用来定义客户端和web服务器通讯格式 浏览器与服务器的交互过程 是tcp/ip的应用层 版本:http/1.0(客户端和web服务器建立连接后只能访问一个web资源)   http/1. ...

  7. aliyun ECS da shang chuang 安装小结

    1. 服务器系统选centos 6.x  选错了可以在管理界面重装系统 阿里云自带ip限制功能,默认是关闭外网访问(ftp http)进来的,需要手动在管理界面 - 本实例安全组 - 配置. 先安装v ...

  8. URL地址中的字符串转换

    url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,怎么解决?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它 ...

  9. python发送GET或POST请求以便干一些趣事

    适合级别:入门,中级 关键字   :python, http, GET, POST, 安全, 模拟, 浏览器, 验证码,图片识别, google 1 此文不是关于黑客或安全话题的! 2 使用脚本程序发 ...

  10. Python3 格式化输出 %s & %d 等

    1.打印字符串 print("My name is %s" %("Alfred.Xue")) #输出效果:My name is Alfred.Xue 2.打印整 ...