栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第三节 管道与重定向

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第三节 管道与重定向

第三节 管道与重定向 管道

严格的说管道属于IO重定向的一部分,但是我们不思考那么多,管道在Shell操作中经常遇到,管道符号是“|”,它是我们在命令与命令之间(或者说进程与进程之间)通信的一种手段,我们先看下原理

我们实际来操作一下:

>>> ls -l |grep *.png |wc -l #查找当前目录的所有文件中的png文件并输出它们的数量
>>> cat testfile |grep error #过滤某个文件中的包含错误信息的行
重定向
类型文件描述符默认情况对应设备位置
标准输入0从键盘获得输入/dev/stdin
标准输出1输出到控制台/dev/stdout
错误输出2输出到控制台/dev/stderr

1.STDIN

stdin代表shell的标准输入,对终端来说,标准输入就是键盘,默认定向到控制台,当然我们可以使用“<”符号定向到其他地方作为stdin输入(累次开发中的生产消费模式),当然必须注意不是所有的命令都可以接收stdin输入。如下例子:

#测试输入,cat可以接受stdin的输入并把内容打印出来
>>> cat #随便输入点什么

#将某个文件作为stdin输入给cat命令使用
>>> echo "hello world" > testfile #创建testfile文件并保存一段话
>>> cat < testfile #讲testfile作为cat的输入

另外我们可以使用“<<”进行追加模式的stdin输入,相对于"<",“<<”我们更加常用:

>>> cat >testfile <你好
>hello world
>EOF
#此时生成一个testfile文件,我们打开它
>>> cat testfile
#没错,这就是上节课的例子

2.STDOUT

stdout代表shell的标准输出,输出到终端显示器,shell和程序的绝大多数输出都是标准输出,默认是输出到控制台,当然我们可以使用“>”重定向到其他地方,">>"是它的追加模式

>>> ls -l #标准输出
>>> ls -l >test1 #输出到test1里面
>>> echo "追加文档到test1" >> test1

3.STDERR

shell对于错误消息的处理和普通的输出是分开的,某些开发写的程序不标准,经常会把标准输出和标准错误输出弄混,然后运维就更辛苦点了。标准错误输出和标准输出一样都是默认输出到控制台的。stderr的默认输出虽然是控制台但是却不会被“>”符号重定向,我们看个例子:

>>> ls -l ajflajfa >testfile #讲ajflajfa文件的属性输出到testfile里面,但是ajflajfa根本不存在
>>> cat testfile #查看文件

实验过后其实会发现stderr的输出不会像stdout那样被重定向到textfile里面,但是在日常工组中,我们会有要求把所有的正常的日志输出,非正常的日志输出都放在一个文件里面

#将标准输出,标准错误输出均输入到一个文件里面
>>> ls -l test1 test2 >testfile 2>&1  #test1存在,test2不存在,或:
>>> ls -l test1 test2 &>testfile #另外一种写法
>>> cat testfile
>>> ls -l test1 test2 2>errout 1>output #错误信息输出到errout 正确的信息输出到output

如下是符号的重定向对比列表

符号说明
>把stdout(标准输出)重定向到文件,文件内容会被覆盖
>>把stdout(标准输出)重定向到文件,内容追加到文件的末尾
2>把stderr(标准错误输出)重定向到文件,文件内容会被覆盖
2>>把stderr(标准错误输出)重定向到文件,内容追加到文件末尾
2>&1或&>把stdout和stderr作为一个数据流重定向到文件,文件内容会被覆盖
&>>把stdout和stderr作为一个数据流重定向到文件,内容追加到文件末尾
<将文件重定为stdin
<<作为stdin输入的文件可以被追加,不过需要使用EOF作为文件的截断符号

重定向在接下来的章节会比较长用到,这里列几个基于管道的命令工具传送门,这些工具可以根据兴趣练习。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040807.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号