栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

标准输入、标准输出、标准错误 重定向及管道

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

标准输入、标准输出、标准错误 重定向及管道

1. 标准输入、标准输出、标准错误

文本流存在于Linux的每个进程中。当Linux启动一个进程时,会自动打开三个的端口:标准输入(Standard Input)、标准输出(Standard Output)和标准错误(Standard Error)。进程通常会通过这三个端口进行输入和输出。

以bash进程为例,一个运行的bash就是一个进程。默认情况下,bash的标准输入连接到键盘上,标准输出和标准错误连接到屏幕。对于一个程序来说,虽然它总会打开这三个流,但是他会根据需要使用,并不一定要使用。

如:

$ ls           # 获取当前的路径下的文件夹的名字后,把这些我文件合成一段文本,用标准输出打印在终端
$ rm none-exits-file    # 删除也个不存在的文件,错误信息会通过标准错误电口输出:rm: cannot remove 'none-exits-file': No such file or directory
2.重新定向

当bash运行一个命令时,这个bash会创建一个子进程用于命令的运行。默认情况下,由于子进程的标准输出与bash相同,因此输出内容出现在bash窗口。如果想让文本流流到文件而不是显示在屏幕上,那么我们可以利用重定向(redirect)的机制。

  • 标准输出
$ ls > output.log          # 使用  >   将ls输出的文本流导入一个文件中
$ ls >> output.log 		   # 使用 >>   将ls输出的文本流导入一个文件中

注意: > 和 >> 在output.log不存在时,两者相同,都是新建output.log并将文本流导入。如果output.log不存在时,使用 >> 会将文本添加在结尾。使用 > 会重新新建个文件,覆盖已经存在的文件。

  • 标准错误

单一的 > 和 >> 符号默认只会重新定向标准输出。 使用 1 代表标准输入,2 代表标准错误。或者使用&> 同时将标准输入和标准输出重定向。

$ rm none-exit-file 2> error.log     # 将错误输出到error.log文件中
$ ls 1> output.log 2> error.log		# 将标准输出流导入文件output.log,将标准错误输出到error.log
$ ls &> output_error.log		    # 将标准输出和标准错误指向同一个文件。

注意:1> 中间不能有空格

  • 标准输入

使用 < 来重定向标准输入

$ grep abc < content.txt	 # 将文件content.txt输入到标准输入流中,将包含“abc”的某一行输出到标准输出中
$ grep abc < content.txt &> output.txt   # 重定义标准输入的同时,重新定义标准输出和标准错误
3.管道

管道(pipe)也是变更文本流的方向。管道的目的地是另一个进程。借用管道,我们可以把一个进程的输出变成另一个进程的输入。这样我们可以用管道把多个命令连接在一起。从而让他们像流水线一样连续不断的处理文本流。在bash中,我们使用 | 表示管道。

$ ps | grep test          # ps 将输出的文本流 通过管道 导入到grep命令进行过滤 将包含test的行导入到标准输出
$ grep Tom < input.txt | sort       # 从文件中找出所有包含文本“Tom”的行,并按照字母表进行排序
$ ls | grep txt | wc -l 		   # 输出当前目录中,包含txt文件的总数
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/298259.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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