文档章节

小蚂蚁学习Linux(10)——Linux输出重定向和输入重定向

嗜学如命的小蚂蚁
 嗜学如命的小蚂蚁
发布于 2015/11/05 18:02
字数 922
阅读 127
收藏 8

说起输出重定向,先了解一下什么是标准的输入输出设备:

    设备                                    文件名                        文件描述符                            类型

    键盘                                    /dev/stdin                        0                                    标准输入

    显示器                                /dev/sdout                        1                                    标准输出

    显示器                                /dev/sdterr                        2                                    标准错误输出

    虽然在现代输入设备还有什么鼠标,游戏手柄什么的,输出设备还有什么投影仪了打印机了,但是在最早期就是一个键盘一个显示器走天下。


输出重定向

    >    大于号,把本来应该输出到屏幕上的内容显示在文件中,相当于保留了日志(就是这么一个意思)

    例如:    ls    >    test.log    把当前目录下的内容保存在test.log之中。但是这种方式只能是覆盖,只能看到最后一次重定向的内容。

    >>    双大于号,同样是把本来应该输出到屏幕上的内容显示在文件中,但是,这种方式是以追加的方式写入,之前的日志内容还保留,很显然,这种方式要比覆盖好的多。

    但是,有个问题,在命令执行成功的时候,它确实能把内容重定向到test.log,但是当命令不存在或者命令出错的时候,重定向就失效了,怎么把命令出错的信息重定向下来呢?

    2>    可以将错误信息重定向到日志文件,同样的,一个大于号是覆盖的意思。

    例如:    sldfo(随便写的一个命令)    2>test.log    注意:错误信息重定向的时候大于号前后不要加空格。

    2>>    同上,但是两个大于号是追加的意思。

    例如:    sldjfs    2>>test.log    同样的,大于号前后不要加空格


    其实,这两种写法都有一个弊端,不带2的重定向只能执行成功的命令,而带着2的重定向只能执行失败的命令,这使用起来就显得很纠结了,很不爽    (‧‧)nnn     要想爽一下,推荐使用以下命令:

    &>    不管命令是否能够正确执行,都会把输出的信息重定向到同一个文件中,当然,老惯例,这是覆盖。

    例如:  ls    &>    test.log

    &>>    同样的,这是追加。这样使用起来就爽快多了,正确的有正确的信息,错误的有错误的信息,多省心    ╰( ̄▽ ̄)╭   

    以上两种方法是推荐的写法,其实还有两个方法跟上面两个方法是一样的效果,有点啰嗦,知道就行:

    命令    >    文件    2>&1    以覆盖的方式,把正确输出和错误输出都保存到同一个文件中去。功能上完全等于    &>。

    命令    >>    文件    2>&1   以追加的方式……    功能上完全等同于    &>>

    注意的一点:无论哪一个错误输出命令,大于号前后都必要加空格。

    对了,还有一个使用方法

    命令    >>    文件1    2>>文件2        把正确的输出追加到文件1中,把错误的输出追加到文件2中,这个感觉就更加清晰明了了。


输入重定向

    和 > 正好相反,输入重定向用的是小于号 <    。可以使用wc命令测试一下。

    wc    【选项】    【文件名】

    选项    -c    统计字节数    -w    统计单词数    -l    统计行数

    例如:    wc    <    test.log    就回显示出字节数、单词数、行数。

    输入重定向不常用,了解一下。

学PHP的小蚂蚁 原创博客 http://my.oschina.net/woshixiaomayi/blog



© 著作权归作者所有

共有 人打赏支持
嗜学如命的小蚂蚁
粉丝 137
博文 161
码字总数 100864
作品 0
郑州
程序员
加载中

评论(2)

嗜学如命的小蚂蚁
嗜学如命的小蚂蚁

引用来自“单行道”的评论

学习
一起加油
单行道
单行道
学习
Linux技术学习:Io重定向 Redirection 详解

文件描述符在bash中比较少用,从0开始用户表示进行的数据流,0表示标准输入,1表示标准输出,2表示标注错误输出,其他从3开始。最为常用的场景是将错误消息输出到某个文件,可以加上2>file到...

长沙千锋
05/03
0
0
介绍 Linux 中的管道和命名管道

要在命令间移动数据?使用管道可使此过程便捷。 在 Linux 中, 能让你将一个命令的输出发送给另一个命令。管道,如它的名称那样,能重定向一个进程的标准输出、输入和错误到另一个进程,以便...

作者: Archit Modi
09/08
0
0
linux shell数据重定向(输入重定向与输出重定向)详细分析

导读小文:【http://www.ibm.com/developerworks/cn/linux/l-iotips/】 技巧:Linux I/O重定向的一些小技巧 简介: Linux I/O 重定向虽然很简单,但在脚本编写、系统管理时却要常常打交道,搞...

无明时空
2013/03/06
0
0
Linux通配符与特殊符号知识大全汇总

内容来源《跟老男孩学习Linux运维:核心基础实战》,预计于2018年7月出版,敬请期待,QQ群385168604交流。 Linux菜鸟及新手的福音,相当于是鸟哥私房菜(太老旧了)的2018最新企业级实战升级版...

老男孩oldboy
05/10
0
0
IO Redirect 与 Pipe

  对于任何一个进程,在启动时,都会打开三个流:stdin(标准输入), stdout(标准输出), stderr(标准错误输出)。Stdout,stderr是process与Display之间,stdin是process与keyboard之间。...

FangJinuo
08/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

day99-20180926-英语流利阅读-待学习

换汤不换药的美容大忽悠:从抗衰老到肌肤焕发新生 Lala 2018-09-26 1.今日导读 说到护肤品,一个个大牌广告就浮现在我们眼前:皮肤吹弹可破的女明星手捧功能各异的瓶瓶罐罐,暗示着消费者买买...

飞鱼说编程
33分钟前
3
0
FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速

大家好!我是赵军,现就职于英特尔的DCG从事基于FFmpeg的硬件优化工作,两年多前加入FFmpeg社区,2018年4月成为FFmpeg的其中的一个FFmpeg Maintainer,主要负责FFmpeg的硬件优化工作。 概览:...

yizhichao
今天
1
0
ehlib 修改 使行号字体颜色 与标题字体颜色 一致

对ehlib 显示效果不够满意,而做的调整 修改这个过程:procedure TCustomDBGridEh.DrawIndicatorCell(ACol, ARow: Longint; AreaCol, AreaRow: Longint; ARect: TRect; AState: TGri......

vga
今天
1
0
Bash重定向详解

Bash重定向详解 Bash的重定向指的是将命令的输入和输出导向不同地方,而不是默认的标准输入、标准输出和标准错误。Bash的重定向实际上是对标准输入、标准输出和标准错误的重置,进而将所需输...

小陶小陶
今天
3
0
EventBus原理深度解析

一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于Event...

yangjianzhou
今天
54
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部