Linux学习第二十三篇--数据流重导向
来源:互联网 发布:软件行业平均利润率 编辑:程序博客网 时间:2024/05/17 22:23
了解标准输出和标准错误输出
在具体学习数据流重导向之前,需要先了解一下,标准输出和标准错误输出的概念.下图是一张读取文件内容的过程.
上图中已经给出了标准输出和标准错误输出的定义.其实这个东西很好理解,尤其是如果学过编程的话,这也是入门必然会接触到的一个东西.
在有了这个概念的基础下,我们再去了解数据流重导向.
数据流重导向
标准输出和标准错误输出
其实数据流重导向在之前的blog中我也已经使用过了,比如上一篇blog中生成one.sh和two.sh两个shell文件就用到了数据流重导向的功能.那么数据流重导向到底是一个怎样的功能呢?我们用一个小故事理解,在之前的blog中讲过一个贪官张三的故事,这里继续这个故事.话说,贪官张三知道新来的钦差带着大军来查案,开始慌了,他一个小小的文官,安定时用来欺压欺压百姓还可以,但是想和军队作对,他是万万不敢的,就算敢,他也打不过啊...这时候,张三身边的谋士告诉张三,既然钦差是来查脏银的,我们何不把脏银藏起来,然后在如此如此,这般这般..到时候,这钦差自然会无功而返.张三一听大喜,于是,就派人秘密将脏银藏到十里外的一座荒山里,于此同时,起义军的头领正愁发不出粮饷呢,恰好得知这个消息,于是,带军队悄悄埋伏在去往荒山的必经之路上,将脏银劫下,且不说,张三等人失了脏银作何反应,也不提起义军头领得了脏银又是何等得意.这里根据这个故事来说一下数据流重导向这个概念.在这里,这批脏银就好比我们读取文件时的数据流,本来这批脏银被打算藏到荒山里,就像当我们使用 ll / cat等命令查看文件时,应该将结果输出到屏幕上,但是脏银却被起义军头领劫走了,但是我们将数据流重导向到了其他地方.PS:上面这句话真乱....拿一个例子看一下,在写局部变量和全局变量那篇blog中用过这么一个例子.echo -e '#!/bin/bash\npanda=熊猫\necho $panda\n./one.sh'>two.sh我们解析一下,按理来说,当我们使用echo命令的时候,将会将数据输出到屏幕上,但是实际上屏幕却没有打印信息,而是生成了一个two.sh文件,该文件的内容就是原本应该打印在屏幕上的信息.这里.,这些信息其实就是被劫持了(数据流重导向).看上面的例子中,我们使用一个 > 符号将数据重导向到了two.sh文件内.这里这个符号就是数据流重导向符号,和他类似的还有.>输出导向,覆盖原本文件中的内容.>>输出导向,在源文件原内容后面追加新的内容.<输入导向<<输入导向,可以指定结束符号.在前文中,提到了标准输出和标准错误输出,还有一个叫做标准输入.标准输入代码为0,使用<或者<<标准输出代码为1,使用>或者>>标准错误输出代码为2,使用2>或者2>>我们试一下,这个标准输出和标准错误输出.标准错误输出.看一下,下面的过程,我们尝试执行a.txt文件,必然会报错的,因为a.txt没有x权限.然后我们试试用标准输出会发现,错误信息依然显示在了屏幕上,而a.txt文件只能够没有任何数据.然后我们再使用标准错误输出试试.如果,我们需要同时将正确信息和错误信息都写入一个文件,我们可以使用命令 > 文件 2>&1 这种形式或者 命令 &>文件.将标准错误输出转到标准输出中去,同理,我们也可以使用1>&2 将标准输出转到标准错误输出.标准输入
标准输出的作用就是将原本需要通过键盘输入的数据,改由通过读取文件输入.比如.我们先创建一个文件 echo 'hello panda! ' >say.txt然后将say,txt的内容重导向到demo,txt文件中.这篇blog略微有点短啊...
阅读全文
0 0
- Linux学习第二十三篇--数据流重导向
- 【Linux 学习】数据流重导向
- linux 数据流重导向
- linux--数据流重导向
- Linux-数据流重导向
- linux---数据流重导向
- Linux下数据流重导向
- Linux之数据流重导向
- Linux之数据流重导向
- Linux学习之十三、快捷键与通配符、数据流重导向
- linux学习篇8--- shell,bash讲解 3 数据流重导向 与 管线命令
- Linux下数据流重导向(Redirection)
- 【linux学习笔记】bash学习之数据流重导向('<' 、'<<'、 '>'、 '>>'、 '2>'、 '2>>')以及双向重导向tee
- 数据流重导向
- 【鸟哥的linux私房菜-学习笔记】Bash shell之数据流重导向
- 《鸟哥的linux私房菜》关于数据流重导向
- Linux下Bash的数据流重导向,stdin,stdout,stderr
- Linux基础08_数据流重导向与特殊符号
- JS类型检测-笔记
- ajax请求总是不成功?浏览器的同源策略和跨域问题详解
- Mysql,replace函数,in函数用法
- iskindofclass和ismemberofclass的区别
- Centos 6.9 编译install gcc-4.9.4
- Linux学习第二十三篇--数据流重导向
- Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
- Spring与Hibernate整合
- ASP.NET Core 中的依赖项管理
- 显示栅格图层和矢量图层的属性表(AE开发)
- 今天跟新AS和NDK开发遇到几个很骚的问题
- Android Wi-Fi MIMO/SISO设置方法(基于高通平台)
- hdu2795-Billboard (线段树求区间最大值)
- 数据库表的约束和索引