扣丁学堂Linux培训分享Shell中重定向的深入讲解

2019-04-11 11:15:11 2126浏览

如今参加Linux培训学习Linux开发技术的小伙伴在不断的增加,本篇文章扣丁学堂Linux培训小编给小伙伴们分享一下Shell中重定向的深入讲解,对Linux开发感兴趣的小伙伴就随小编一起学习学习吧。



扣丁学堂Linux培训分享Shell中重定向的深入讲解



标准输入、标准输出和标准错误。


一个程序的的输入可以来自于键盘,也可以来自于文件或者其他设备;同样的,一个程序也可以将输出显示在屏幕或者保存到文件中。这就涉及到标准输入、标准输出和标准错误。


程序的输入是标准输入,默认是键盘,用户可以将其指定为文件或其他设备。


程序的输出有两种,即标准输出和标准错误,其中标准输出是程序的正常输出、标准错误是程序的错误输出。二者默认都被指定为屏幕,用户可以将其指定为文件或其他设备。


下面的程序从键盘读取输入,将结果显示在屏幕上,即标准输入、标准输出和标准错误都采用默认的设置:


$ ls ~
hello.txt homework name source.list.bk



重定向:


用户可以对输入和输出进行重定向,即指定标准输入、标准输出和标准错误。


标准输入使用<进行指定,下面的命令将input文件作为sort命令的输入,即将sort命令的标准输入重定向为input文件:


$ cat input
zhao
qian
sun
li
zhou
wu
zheng
wang
$ sort < input
li
qian
sun
wang
wu
zhao
zheng
zhou


本例中input文件作为sort命令的标准输入。


使用>重定向标准输出:


$ ls ~ > output
$ cat output
hello.txt
homework
input
name
output
source.list.bk


如上所示,ls ~的标准输出被重定向为output,因此其输出被写入output文件。


需要注意的是,如果output不存在,将自动创建output文件;如果output存在,那么将清空output的内容,并写入新的内容。


如果只是想在输出文件的已有内容的末尾追加,可以使用>>:


$ date >> output
$ cat output
hello.txt
homework
input
name
output
source.list.bk
Sat Jun 30 18:18:53 CST 2019


下面的命令将标准输入重定向为input,将标准输出重定向为output:


$ sort < input > output # 覆盖output内容
$ sort < input >> output # 在output末尾追加内容


件描述符


每个输入源和输出地都有一个描述符,标准输入的描述符为0,标准输出的描述符为1,标准错误的描述符为2。


使用0<重定向标准输入,事实上,由于程序的默认重定向输入即为标准输入,所以下面的两条命令是等价的:


$ sort < input
$ sort 0< input
     


同样的,程序的默认重定向输出为标准输出,所以下面的两条命令也是等价的:


$ ls > output
$ ls 1> output


下面的命令将标准输入重定向为input文件,标准输出重定向为output文件(追加),将标准错误重定向为error文件:


$ sort < input 1>> output 2> error


组合标准输出和标准错误


下面的命令将标准输出重定向为output文件,标准错误仍然显示在屏幕上:


$ sort < input > output


下面的命令将标准输出重定向为output文件,将标准错误重定向为error文件:


$ sort < input > output 2> error


下面的命令将标准输出重定向为output文件,使用2>&1将标准错误重定向为标准输出:


$ sort < input > output 2>&1


上面的例子中,标准输出和标准错误都会被重定向为output文件。


注意,下面的命令将导致标准输出和标准错误的相互覆盖,因此不可使用:


$ sort < input > output 2> output


最后想要了解更多内容的小伙伴可以登录扣丁学堂官网咨询,扣丁学堂有专业老师制定的Linux学习路线图辅助学员学习,此外还有与时俱进的Linux视频教程供大家学习,想要学好Linux开发技术的同学请加入扣丁学堂Linux技术交流群:422345477。


                          


 【关注微信公众号获取更多学习资料】         【扫码进入HTML5进阶免费公开课】



查看更多关于“Linux培训资讯”的相关文章>>




标签: linux系统入门学习 linux培训 linux视频教程 linux基础教程 linux在线视频 linux在线学习 linux从入门到精通 linux开发环境包 linux系统 linux开发教程

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号